aboutsummaryrefslogtreecommitdiff
path: root/cmd-string.c
Commit message (Collapse)AuthorAge
* Replace the split parser code (cfg.c and cmd-string.c) with a singlenicm2019-05-23
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Merge hooks into options and make each one an array option. This allowsnicm2019-04-26
| | | | | | | multiple commands to be easily bound to one hook. set-hook and show-hooks remain but they are now variants of set-option and show-options. show-options now has a -H flag to show hooks (by default they are not shown).
* Expand \u and \U escape sequences in command strings, from Christophernicm2018-08-19
| | | | Hunt in GitHub issue 1443.
* Don't overwrite error message when it is available innicm2017-06-14
| | | | cmd_string_parse. Reported by Jimi Damon in GitHub issue 975.
* Add support for custom command aliases, this is an array option whichnicm2017-01-24
| | | | | contains items of the form "alias=command". This is consulted when an unknown command is parsed.
* Revert WIP parts of previous I didn't mean to commit yet.nicm2017-01-16
|
* getopt() has a struct option so just return to using options_entry.nicm2017-01-16
|
* It is silly for cmd_list_parse to return an integer error when it couldnicm2017-01-15
| | | | just return NULL.
* Add CMD_AFTERHOOK flag to the easy commands that don't need any special ↵nicm2016-10-14
| | | | handling.
* Add static in cmd-* and fix a few other nits.nicm2016-10-10
|
* I no longer use my SourceForge address so replace it.nicm2016-01-19
|
* Like options, move the environ struct into environ.c.nicm2015-10-28
|
* Add xreallocarray and remove nmemb argument from xrealloc.nicm2014-10-08
|
* Make tilde expansion in command strings work even if it isn't terminated by /.nicm2013-10-10
|
* Add a command queue to standardize and simplify commands that call otherNicholas Marriott2013-03-24
| | | | | | | | | | | | | | | | | | | | | | commands and allow a command to block execution of subsequent commands. This allows run-shell and if-shell to be synchronous which has been much requested. Each client has a default command queue and commands are consumed one at a time from it. A command may suspend execution from the queue by returning CMD_RETURN_WAIT and then resume it by calling cmd_continue() - for example run-shell does this from the callback that is fired after the job is freed. When the command queue becomes empty, command clients are automatically exited (unless attaching). A callback is also fired - this is used for nested commands in, for example, if-shell which can block execution of the client's cmdq until a new cmdq becomes empty. Also merge all the old error/info/print functions together and lose the old curclient/cmdclient distinction - a cmdq is bound to one client (or none if in the configuration file), this is a command client if c->session is NULL otherwise an attached client.
* Simplify command string parsing with a helper function from Tiago Cunha.Nicholas Marriott2012-12-06
|
* xfree is not particularly helpful, remove it. From Thomas Adam.Nicholas Marriott2012-07-10
|
* Read ${X} environment variables in strings and $HOME from the globalNicholas Marriott2010-12-13
| | | | | environment rather than getenv, this allows them to be updated during the configuration file.
* have_arg matches buf so it is no longer necessary, spotted by Tim van derNicholas Marriott2010-02-19
| | | | Molen.
* Remove unnecessary comparison, pointed out by Tiago Cunha.Nicholas Marriott2010-01-31
|
* Massive spaces->tabs and trailing whitespace cleanup, hopefully for the lastNicholas Marriott2009-12-03
| | | | | time now I've configured emacs to make them displayed in really annoying colours...
* Get a u_char from the string, otherwise it isn't possible to enter \0377 as itNicholas Marriott2009-11-26
| | | | | | is mistaken for EOF (doh). Also drop an unused argument.
* Use home from struct passwd if HOME is empty as well as if it is NULL, and fixNicholas Marriott2009-11-21
| | | | a style nit. Both from Tiago Cunha.
* I made a complete horlicks of the last change, fix it so it doesn't either leadNicholas Marriott2009-11-16
| | | | to a double free or free the item after the end of the array.
* Rewrite a confusing loop when freeing the arg array on exit and move the checkNicholas Marriott2009-11-11
| | | | | | | for argv being NULL, prompted by parfait via deraadt. Also fix some definite brokenness when assigning multiple environment variables in arguments (such as "X=1 Y=2").
* tabs are better; ok nicmTheo Deraadt2009-10-26
|
* Infrastructure and commands to manage the environment for processes startedNicholas Marriott2009-08-08
| | | | | | | | | | | | | | | within tmux. There is a global environment, copied from the external environment when the server is started and each sesssion has an (initially empty) session environment which overrides it. New commands set-environment and show-environment manipulate or display the environments. A new session option, update-environment, is a space-separated list of variables which are updated from the external environment into the session environment every time a new session is created - the default is DISPLAY.
* Add a terminal-overrides session option allowing individual terminfo(5) entriesNicholas Marriott2009-08-03
| | | | | | | | to be overridden. The 88col/256col checks are now moved into the default setting and out of the code. Also remove a couple of old workarounds for xterm and rxvt which are no longer necessary (tmux can emulate them if missing).
* Expand leading tildes in arguments, from Tiage Cunha.Nicholas Marriott2009-07-13
|
* Fix two memory leaks when assigning shell variables in configurationNicholas Marriott2009-07-08
| | | | file/command prompt. From Tiago Cunha.
* strdup the input to putenv to avoid in one case passing a string that is laterNicholas Marriott2009-06-05
| | | | | | freed and in the other const strings. looks sane to millert, ok ray
* Import tmux, a terminal multiplexor allowing (among other things) a singleNicholas Marriott2009-06-01
terminal to be switched between several different windows and programs displayed on one terminal be detached from one terminal and moved to another. ok deraadt pirofti