aboutsummaryrefslogtreecommitdiff
path: root/cmd-load-buffer.c
Commit message (Collapse)AuthorAge
* Add args parsing callback for some future work, currently unused.nicm2021-08-21
|
* Hide struct args behind a couple of accessor functions.nicm2021-08-20
|
* calloc cb data so the client is NULL.nicm2020-09-04
|
* Add a -w flag to set- and load-buffer to send to clipboard using OSC 52.nicm2020-09-02
| | | | GitHub issue 2363.
* Make client -c and -t handling common in cmd-queue.c and try to benicm2020-04-13
| | | | | clearer about whether the client is the target client (must have a session) or not.
* 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).
* Make struct cmd local to cmd.c and move it out of tmux.h.nicm2020-04-13
|
* 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.
* Add a cmdq_continue function rather than twiddling the flag directly.nicm2019-06-18
|
* Use the right client when working out where to save or load the buffer,nicm2019-06-13
| | | | reported by kn@.
* Memory leaks, from Gang Fan in GitHub issue 1453.nicm2018-08-27
|
* Do not leak path or use it after free.nicm2018-07-31
|
* Expand formats in load-buffer and save-buffer.nicm2018-07-11
|
* Some unused code, GitHub issue 1219.nicm2018-01-15
|
* Memory leaks, from David CARLIER.nicm2017-04-22
|
* Make source-file look for files relative to the client working directorynicm2017-02-14
| | | | | (like load-buffer and save-buffer), from Chris Pickel. Also break the where-is-this-file code out into its own function for loadb and saveb.
* Nits found with clang.nicm2017-01-06
|
* Buffer name can be NULL, check before strdup().nicm2016-10-26
|
* 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.
* 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
|
* Do not use c->cwd or s->cwd if it is NULL, found by Ben Boeckel.nicm2016-03-05
|
* Use member names in cmd_entry definitions so I stop getting confusednicm2015-12-13
| | | | about the order.
* Instead of every command resolving the target (-t or -s) itself, preparenicm2015-12-13
| | | | | | | | | | | | | | | | the state (client, session, winlink, pane) for it it before entering the command. Each command provides some flags that tell the prepare step what it is expecting. This is a requirement for having hooks on commands (for example, if you hook "select-window -t1:2", the hook command should to operate on window 1:2 not whatever it thinks is the current window), and should allow some other target improvements. The old cmd_find_* functions remain for the moment but that layer will be dropped later. Joint work with Thomas Adam.
* Push stdout and stderr to clients more aggressively, and add an event tonicm2015-11-14
| | | | continue if the send fails.
* If we know the terminal outside tmux is not UTF-8, replace UTF-8 innicm2015-11-12
| | | | | error messages and whatnot with underscores the same as we do when we draw UTF-8 characters as part of the screen.
* If realpath() fails just try the original path.nicm2015-11-10
|
* Handle absolute paths properly, and don't use resolved path innicm2015-11-10
| | | | realpath() fails.
* Because pledge(2) does not allow us to pass directory file descriptorsnicm2015-10-31
| | | | | | | | | around, we can't use file descriptors for the working directory because we will be unable to pass it to a privileged process to tell it where to read or write files or spawn children. So move tmux back to using strings for the current working directory. We try to check it exists with access() when it is set but ultimately fall back to ~ if it fails at time of use (or / if that fails too).
* Change deref to the more sensible unref, and add a couple I missed before.nicm2015-06-05
|
* Instead of putting dead clients on a list and checking it every loop,nicm2015-06-05
| | | | | | | use event_once to queue a callback to deal with them. Also dead clients with references would never actually be freed because the wrap-up functions (the callback for stdin, or status_prompt_clear) would never be called. So call them in server_client_lost.
* Rewrite of the target resolution internals to be simpler and morenicm2015-04-27
| | | | | | | consistent but with much less duplication, but keeping the same internal API. Also adds more readable aliases for some of the special tokens used in targets (eg "{start}" instead of "^"). Some behaviours may have changed, for example prefix matches now happen before fnmatch.
* Instead of setting up the default keys by building the key structnicm2014-10-20
| | | | | | | | | directly with a helper function in the cmd_entry, include a table of bind-key commands and pass them through the command parser and a temporary cmd_q. As well as being smaller, this will allow default bindings to be command sequences which will probably be needed soon.
* Various minor style and spacing nits.nicm2014-09-01
|
* Add support for named buffers. If you don't name a buffer, things worknicm2014-05-13
| | | | | | | | much as before - buffers are automatically named "buffer0000", "buffer0001" and so on and ordered as a stack. Buffers can be named explicitly when creating ("loadb -b foo" etc) or renamed ("setb -b buffer0000 -n foo"). If buffers are named explicitly, they are not deleted when buffer-limit is reached. Diff from J Raynor.
* There is no longer a need for a paste_stack struct or for global_buffersnicm2014-04-24
| | | | to be global. Move to paste.c.
* Fix memory leaks with paste_replace, based on changes from J Raynor.nicm2014-02-17
|
* Style nit - no space between function name and bracket.nicm2014-02-14
|
* Alter how tmux handles the working directory to internally use filenicm2013-10-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | descriptors rather than strings. - Each session still has a current working directory. - New sessions still get their working directory from the client that created them or its attached session if any. - New windows are created by default in the session working directory. - The -c flag to new, neww, splitw allows the working directory to be overridden. - The -c flag to attach let's the session working directory be changed. - The default-path option has been removed. To get the equivalent to default-path '.', do: bind c neww -c $PWD To get the equivalent of default-path '~', do: bind c neww -c ~ This also changes the client identify protocol to be a set of messages rather than one as well as some other changes that should make it easier to make backwards-compatible protocol changes in future.
* Remove the barely-used and unnecessary command check() function.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.
* Make command exec functions return an enum rather than -1/0/1 values andNicholas Marriott2012-07-11
| | | | | | add a new value to mean "leave client running but don't attach" to fix problems with using some commands in a command sequence. Most of the work by Thomas Adam, problem reported by "jspenguin" on SF bug 3535531.
* xfree is not particularly helpful, remove it. From Thomas Adam.Nicholas Marriott2012-07-10
|
* Instead of passing stdin/stdout/stderr file descriptors over imsg andNicholas Marriott2012-05-21
| | | | | | | | | | | handling them in the server, handle them in the client and pass buffers over imsg. This is much tidier for some upcoming changes and the performance hit isn't critical. The tty fd is still passed to the server as before. This bumps the tmux protocol version so new clients and old servers are incompatible.
* Try to resolve relative paths for loadb and saveb (first using clientNicholas Marriott2011-10-23
| | | | working directory if any then default-path or session wd).
* Plug a memory leak and update some comments, from Tiago Cunha.Nicholas Marriott2011-10-23
|
* Use xfree not free, from Tiago Cunha.Nicholas Marriott2011-05-18
|
* Clean up and simplify tmux command argument parsing.Nicholas Marriott2011-01-04
| | | | | | | | | | | | | | | | | | | Originally, tmux commands were parsed in the client process into a struct with the command data which was then serialised and sent to the server to be executed. The parsing was later moved into the server (an argv was sent from the client), but the parse step and intermediate struct was kept. This change removes that struct and the separate parse step. Argument parsing and printing is now common to all commands (in arguments.c) with each command left with just an optional check function (to validate the arguments at parse time), the exec function and a function to set up any key bindings (renamed from the old init function). This is overall more simple and consistent. There should be no changes to any commands behaviour or syntax although as this touches every command please watch for any unexpected changes.
* Change from a per-session stack of buffers to one global stack which isNicholas Marriott2010-12-30
| | | | | | | much more convenient and also simplifies lot of code. This renders copy-buffer useless and makes buffer-limit now a server option. By Tiago Cunha.