Commits


improved readme. also mention bison


explicitly pass -b y to ${YACC} OpenBSD yacc doesn't require the option (it's the default value after all), but bison do.


improved and added documentation


trying to improve error message on some cases, user will get better errors, instead of "foo.conf:5 syntax error". This is the yacc complement for what's been done previously in the parser also.


reworked the tokenizer -- breaking change The parser was pratically rewritten. Strings now are required to be quoted with single quotes, while keys (still) requires double quotes. In addition, the * is no longer a valid match argument: to match on everything you need to use the special keyword `all'. match all # before was `match *' on "C-a" do "<Home>" # unchanged match class 'Firefox' # before was `match class Firefox' # ...


add exec action for keys users can now exec command on specifics keys. For example: match class Something on "C-<F5>" do exec my-program


improved error messages yyerror now is a printf-like variadic function. This helps to generate custom error message like "invalid keysym %s" or "invalid key %s" during parsing.


tabify


add ``match *'' to match everything Rationale: sometimes it can be useful to globally bind a key. For instance, some users may like to bind on "C-<Up>" do "<Page_Up>" for every application.


add an error handler the default error handler violates the pledge "stdio" by trying to read (and possibly also write after) some files. Also, I don't like my program to be randomly killed if I try to get class hints on a window that doesn't have any.


initial commit