summaryrefslogtreecommitdiffstats
path: root/cmd-parse.y
AgeCommit message (Collapse)Author
2023-03-15Fix command prompt not to always append argument but only if there hasnicm
actually been expansion. GitHub issue 3493.
2022-10-25Fix a memory leak, from Japin Li in GitHub issue 3358.nicm
2021-09-10Disable aliases inside aliases for the moment.nicm
2021-09-09Fix parsing of aliases again (GitHub issue 2842), also make argumentnicm
parsing a bit simpler and fix the names of some client flags.
2021-08-27Replace %% in command lists (by copying them) for template arguments ,nicm
this means they can be used with {} as well. Also make argument processing from an existing vector preserve commands. GitHub issue 2858.
2021-08-23Key bindings steal a reference to the command instead of adding theirnicm
own, it was correct not to add a reference when parsing, but the bind-key then needs to add one.
2021-08-23Revert one of previous, for some reason it is being freed.nicm
2021-08-23Fix a few memory leaks.nicm
2021-08-22Insert alias in the right place, GitHub issue 2842.nicm
2021-08-21Preserve argument type in command and convert to string on demand.nicm
2021-08-21Pass typed arguments out of the parser into the arguments list and letnicm
it convert them into strings.
2021-08-21Stop caring about empty commands, just treat as a null command.nicm
2021-08-21Preserve command group when moving temporary list to current list beingnicm
buit.
2021-08-20A couple more spacing fixes.nicm
2021-08-20Actually parse contents of {} as a command and then convert to a stringnicm
instead of just copying arguments around as strings.
2021-08-20Add a helper function for actually parsing the command.nicm
2021-08-18Need to flatten arguments for aliases.nicm
2021-08-18Push the conversion of {} to string up out of the parser and into thenicm
command builder.
2020-12-01Leave newlines inside multiline quotes.nicm
2020-07-13Do not dereference NULL environment variable value, GitHub issue 2304.nicm
2020-06-04A } can go on the same line as a command.nicm
2020-06-04Allow strings to span multiple lines - newlines and any leadingnicm
whitespace are removed, as well as any following comments that couldn't be part of a format. This allows long formats or other strings to be annotated and indented.
2020-06-04Instead of using a custom parse function to process {}, treat it as anicm
set of statements and parse with yacc, then convert back to a string as the last step. This means the rules are consistent inside and outside {}, %if and friends work at the right time, and the final result isn't littered with unnecessary newlines.
2020-05-25Use the internal representation for UTF-8 keys instead of wchar_t andnicm
drop some code only needed for that.
2020-04-13Add helpers for the simple case of parse string and add to command queue.nicm
2020-04-13When parsing strings, put all commands in one group even if there arenicm
newlines. This means that for example bind q { a \n b } and bind q "a ; b" are the same. Also log commands in different groups separated by ;; rather than ; (a command list like this should never be user visible).
2020-03-31Add a way to mark environment variables as "hidden" so they can be usednicm
by tmux but are not passed into the environment of new panes.
2020-01-28Ignore empty commands rather than adding them to the command list rathernicm
than trying to skip them later, fixes problem reported by M Kelly.
2020-01-27Change so that assignments may be specified alone - a command isn'tnicm
required. GitHub issue 2062.
2019-12-12Add function to the right file.nicm
2019-10-14Memory leaks, from Igor Wong in GitHub issue 1934.nicm
2019-10-03Do 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-09-10Set up format tree for %if, GitHub issue 1896.nicm
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.