summaryrefslogtreecommitdiffstats
path: root/cmd-parse.y
AgeCommit message (Collapse)Author
2019-11-27Do not lazily use BUFSIZ for "I don't care what size" when buildingnicm
strings because it is only guaranteed to be 256 bytes and even the default 1024 is not always enough. Reported by Gregory Pakosz.
2019-06-18Handle comments more correctly inside {}, from Avi Halachmi.nicm
2019-06-14Show filename with -v for source-file.nicm
2019-06-14A couple of minor parser changes around conditions: 1) only treat #{nicm
specially after a condition, otherwise as a comment (which is more as most people expect) 2) allow formats to be quoted after a condition.
2019-06-05Add a -v flag to source-file to show the commands and line numbers.nicm
2019-06-02yacc(1) copies its union so it is not a good place to storenicm
TAILQ_HEADs. Allocate them instead. Found from a problem reported by sthen@.
2019-06-01Need stdlib.h, from Ben Boeckel.nicm
2019-05-31Allow % strings that are all numbers or %s, and fix a double free. Bothnicm
reported by George Nachman, GitHub issues 1765 and 1766.
2019-05-30No longer need to reduce line number by one.nicm
2019-05-29Use VIS_CSTYLE for the arguments and add the missing escapes it cannicm
generate to the parser.
2019-05-29The line number needs to be updated only after the \n is processed bynicm
the parser, so store a flag and update it next time around. Also each new line needs its own shared data.
2019-05-29Support \ooo escapes, from Avi Halachmi.nicm
2019-05-27Add an additional {} syntax for defining strings in the configurationnicm
file, making it much tidier to define commands that contain other tmux or shell commands (like if-shell). Also tweak bind-key to expect a string if it is only given one argument, so {} can be used with it as well. From Avi Halachmi.
2019-05-26Some other platforms doesn't support fmemopen(3) (not unexpectedly), sonicm
don't use it - since we only use getc/ungetc on the file anyway it is easy not to.
2019-05-25Merge cmd_list_parse into cmd-parse.y so it can use the new aliasnicm
processing code.
2019-05-23Fix line numbers - commands are added after the line ends so they need tonicm
get line - 1.
2019-05-23Break the argument escaping code into a separate function and use it tonicm
escape key bindings in list-keys. Also escape ~ and ; and $ properly.
2019-05-23Replace the split parser code (cfg.c and cmd-string.c) with a singlenicm
parser using yacc(1). This is a major change but is clearer and simpler and allows some edge cases to be made more consistent, as well as tidying up how aliases are handled. It will also allow some further improvements later. Entirely the same parser is now used for parsing the configuration file and for string commands. This means that constructs previously only available in .tmux.conf, such as %if, can now be used in string commands (for example, those given to if-shell - not commands invoked from the shell, they are still parsed by the shell itself). The only syntax change I am aware of is that #{} outside quotes or a comment is now considered a format and not a comment, so #{ is now a syntax error (notably, if it is at the start of a line). This also adds two new sections to the man page documenting the syntax and outlining how parsing and command execution works. Thanks to everyone who sent me test configs (they still all parse without errors - but this doesn't mean they still work as intended!). Thanks to Avi Halachmi for testing and man page improvements, also to jmc@ for reviewing the man page changes.