aboutsummaryrefslogtreecommitdiff
path: root/control.c
Commit message (Collapse)AuthorAge
* Look for libevent2 differently from libevent for platforms with both.Nicholas Marriott2021-01-17
|
* Some other warnings, GitHub issue 2382.nicm2020-09-18
|
* Add a way for control mode clients to subscribe to a format and benicm2020-07-06
| | | | notified of changes rather than having to poll. GitHub issue 2242.
* Add a flag to make a client wait for an empty line before exiting innicm2020-06-18
| | | | control mode to avoid stray commands ending up in the shell.
* Check if a pane needs to be paused when output is written rather thannicm2020-06-12
| | | | just when it is queued.
* Add a -A option to pause a pane manually.nicm2020-06-11
|
* Instead of a buffer size limit on each pane, set a limit of 300 secondsnicm2020-06-10
| | | | of data for each client in control mode.
* When the pause-after flag is set, send an alternative %extended-outputnicm2020-06-10
| | | | form instead of %output with the age of the output.
* Add support for pausing a pane when the output buffered for a controlnicm2020-06-05
| | | | | | mode client gets too far behind. The pause-after flag with a time is set on the pane with refresh-client -f and a paused pane may be resumed with refresh-client -A. GitHub issue 2217.
* Use CLOCK_MONOTONIC for timer measurement and add a timestamp to controlnicm2020-06-02
| | | | mode %output blocks.
* Remove blocks from queue when pane disappears.nicm2020-06-01
|
* Instead of sending all data to control mode clients as fast as possible,nicm2020-06-01
| | | | | | add a limit of how much data will be sent to the client and try to use it for panes with some degree of fairness. GitHub issue 2217, with George Nachman.
* Pass the stdout file descriptor from the client as well as stdin and usenicm2020-05-26
| | | | | them for control clients directly instead of passing everything via the client.
* Give control code its own state struct.nicm2020-05-24
|
* Move client offset stuff into control.c since only control clients willnicm2020-05-22
| | | | need it.
* Support code for control mode flow control: allow clients to havenicm2020-05-21
| | | | | | separate offsets (used and acknowleged) into the pane buffers; turn off reading from panes when no clients can accept the data; and add a -A flag to refresh-client to let clients turn receiving a pane on and off.
* Add helpers for the simple case of parse string and add to command queue.nicm2020-04-13
|
* When adding a list of commands to the queue, instead of automaticallynicm2020-04-13
| | | | | | | creating a new state for each group of commands, require the caller to create one and use it for all the commands in the list. This means the current target works even with list with multiple groups (which can happen if they are defined with newlines).
* Move cmdq_state into cmd-queue.c.nicm2020-04-13
|
* Rename cmdq_shared to cmdq_state which will better reflect what it isnicm2020-04-13
| | | | (going to be) used for.
* Also move cmdq_item and cmdq_list into cmd-queue.c (this is to make itsnicm2020-04-13
| | | | use more clearly defined and preparation for some future work).
* Rewrite the code for reading and writing files. Now, if the client isnicm2019-12-12
| | | | | | | | | not attached, the server process asks it to open the file, similar to how works for stdin, stdout, stderr. This makes special files like /dev/fd/X work (used by some shells). stdin, stdout and stderr and control mode are now just special cases of the same mechanism. This will also make it easier to use for other commands that read files such as source-file.
* Do not leak empty lines, GitHub issue 1824.nicm2019-07-09
|
* Allow % strings that are all numbers or %s, and fix a double free. Bothnicm2019-05-31
| | | | reported by George Nachman, GitHub issues 1765 and 1766.
* 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.
* Move the single command flag (CMD_CONTROL) into the shared flags.nicm2019-05-18
|
* It is silly for cmd_list_parse to return an integer error when it couldnicm2017-01-15
| | | | just return NULL.
* Mass rename struct cmd_q to struct cmdq_item and related.nicm2016-10-16
|
* Rewrite command queue handling. Each client still has a command queue,nicm2016-10-16
| | | | | | | | | | | | | | | but there is also now a global command queue. Instead of command queues being dispatched on demand from wherever the command happens to be added, they are now all dispatched from the top level server loop. Command queues may now also include callbacks as well as commands, and items may be inserted after the current command as well as at the end. This all makes command queues significantly more predictable and easier to use, and avoids the complex multiple nested command queues used by source-file, if-shell and friends. A mass rename of struct cmdq to a better name (cmdq_item probably) is coming.
* I no longer use my SourceForge address so replace it.nicm2016-01-19
|
* Use __unused rather than rolling our own.nicm2015-11-18
|
* Push stdout and stderr to clients more aggressively, and add an event tonicm2015-11-14
| | | | continue if the send fails.
* Rewrite of tmux mouse support which was a mess. Instead of havingnicm2015-04-19
| | | | | | | | | | | | | | | | | | | | | | | | | options for "mouse-this" and "mouse-that", mouse events may be bound as keys and there is one option "mouse" that turns on mouse support entirely (set -g mouse on). See the new MOUSE SUPPORT section of the man page for description of the key names and new flags (-t= to specify the pane or window under mouse as a target, and send-keys -M to pass through a mouse event). The default builtin bindings for the mouse are: bind -n MouseDown1Pane select-pane -t=; send-keys -M bind -n MouseDown1Status select-window -t= bind -n MouseDrag1Pane copy-mode -M bind -n MouseDrag1Border resize-pane -M To get the effect of turning mode-mouse off, do: unbind -n MouseDrag1Pane unbind -temacs-copy MouseDrag1Pane The old mouse options are now gone, set-option -q may be used to suppress warnings if mixing configuration files.
* Better format for printf format attributes.nicm2014-10-20
|
* Pass flags into cmdq_guard as an argument since sometimes cmdq->cmd cannicm2013-10-10
| | | | | be NULL. Avoids crash when a command in a command client can't be parsed.
* Mark control commands specially so the client can identify them, basedNicholas Marriott2013-06-23
| | | | on a diff from George Nachman a while back.
* Fix compiler warnings, missing #include. From Thomas Adam.Nicholas Marriott2013-03-26
|
* Add time and a command count to control mode guards, based on code fromNicholas Marriott2013-03-25
| | | | George Nachman.
* 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.
* Need to set clients in context before changing their reference count.Nicholas Marriott2013-03-22
|
* Remove unnecessary initializers of cmd_ctx.Nicholas Marriott2013-03-22
|
* Add control_write_buffer, from George Nachman.Nicholas Marriott2012-09-24
|
* Send notifications to control clients. Also don't redraw client whenNicholas Marriott2012-09-03
| | | | suspended.
* xfree is not particularly helpful, remove it. From Thomas Adam.Nicholas Marriott2012-07-10
|
* Add a skeleton mode to tmux (called "control mode") that let's tmuxNicholas Marriott2012-06-18
commands be sent and output received on stdout. This can be used to integrate with other terminal emulators and should allow some other things to be made simpler later. More to come so doesn't do much yet and deliberately not documented.