diff options
author | Scott Prager <splinterofchaos@gmail.com> | 2015-04-13 23:53:16 -0400 |
---|---|---|
committer | Scott Prager <splinterofchaos@gmail.com> | 2015-05-02 09:47:29 -0400 |
commit | 74aef8972048c3288a3cbd6a8dadf17a8df3c08c (patch) | |
tree | 85397b18d46b464466ba0dad85bd7ca0000b2f4f /runtime | |
parent | 205466830207a920c62146b7b689fac2e395431a (diff) | |
download | rneovim-74aef8972048c3288a3cbd6a8dadf17a8df3c08c.tar.gz rneovim-74aef8972048c3288a3cbd6a8dadf17a8df3c08c.tar.bz2 rneovim-74aef8972048c3288a3cbd6a8dadf17a8df3c08c.zip |
term: use an argument vector for termopen().
Old behaviour: termopen('cmd') would run `&shell &shcf "cmd"`, which
caused the functional tests to fail on some systems due to the process
not "owning" the terminal. Also, it is inconsistent with jobstart().
Modify termopen() so that &shell is not invoked, but maintain the old
behaviour with :terminal. Factor the common code for building the
argument vector from jobstart() and modify the functional tests to call
termopen() instead of :terminal (fixes #2354).
Also:
* Add a 'name' option for termopen() so that `:terminal {cmd}` produces
a buffer named "term//{cwd}/{cmd}" and termopen() users can customize
the name.
* Update the documentation.
* Add functional tests for `:terminal` sinse its behaviour now differs
from termopen(). Add "test/functional/fixtures/shell-test.c" and move
"test/functional/job/tty-test.c" there, too.
Helped-by: Justin M. Keyes <@justinmk>
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/doc/eval.txt | 20 | ||||
-rw-r--r-- | runtime/doc/various.txt | 15 |
2 files changed, 22 insertions, 13 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 0284e6cab8..f151fd84ba 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -6299,15 +6299,17 @@ tempname() *tempname()* *temp-file-name* For MS-Windows forward slashes are used when the 'shellslash' option is set or when 'shellcmdflag' starts with '-'. -termopen({command}[, {opts}]) {Nvim} *termopen()* - Spawns {command} using the shell in a new pseudo-terminal - session connected to the current buffer. This function fails - if the current buffer is modified (all buffer contents are - destroyed). The {opts} dict is similar to the one passed to - |jobstart()|, but the `pty`, `width`, `height`, and `TERM` fields are - ignored: `height`/`width` are taken from the current window and - $TERM is set to "xterm-256color". Returns the same values as - |jobstart()|. +termopen({argv}[, {opts}]) {Nvim} *termopen()* + Spawns {argv}(list) in a new pseudo-terminal session connected + to the current buffer. This function fails if the current + buffer is modified (all buffer contents are destroyed). + + The {opts} dict is similar to the one passed to |jobstart()|, + but the `pty`, `width`, `height`, and `TERM` fields are + ignored: `height`/`width` are taken from the current window + and `$TERM` is set to "xterm-256color". An additional option, + `name`, can be used to give the terminal a specific name. + Returns the same values as |jobstart()|. See |nvim-terminal-emulator| for more information. diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 8ddfdf272f..13bc089824 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -223,11 +223,18 @@ g8 Print the hex values of the bytes used in the :sh[ell] Removed. |vim-differences| {Nvim} *:term* *:terminal* -:term[inal][!] {cmd} Spawns {command} using the current value of 'shell' - in a new terminal buffer. This is equivalent to: > - - :enew | call termopen('{cmd}') | startinsert +:term[inal][!] {cmd} Spawns {cmd} using the current value of 'shell' and + 'shellcmdflag' in a new terminal buffer. This is + equivalent to: > + + :enew + :call termopen([&sh, &shcf, '{cmd}'], + \{'name':'{cmd}'}) + :startinsert < + If no {cmd} is given, 'shellcmdflag' will not be sent + to |termopen()|. + Like |:enew|, it will fail if the current buffer is modified, but can be forced with "!". See |termopen()| and |nvim-terminal-emulator| for more information. |