aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorScott Prager <splinterofchaos@gmail.com>2015-04-13 23:53:16 -0400
committerScott Prager <splinterofchaos@gmail.com>2015-05-02 09:47:29 -0400
commit74aef8972048c3288a3cbd6a8dadf17a8df3c08c (patch)
tree85397b18d46b464466ba0dad85bd7ca0000b2f4f /runtime
parent205466830207a920c62146b7b689fac2e395431a (diff)
downloadrneovim-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.txt20
-rw-r--r--runtime/doc/various.txt15
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.