mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
feat(jobs): jobstart(…,{term=true}), deprecate termopen() #31343
Problem: `termopen` has long been a superficial wrapper around `jobstart`, and has no real purpose. Also, `vim.system` and `nvim_open_term` presumably will replace all features of `jobstart` and `termopen`, so centralizing the logic will help with that. Solution: - Introduce `eval/deprecated.c`, where all deprecated eval funcs will live. - Introduce "term" flag of `jobstart`. - Deprecate `termopen`.
This commit is contained in:
@@ -435,7 +435,7 @@ do
|
||||
group = nvim_terminal_augroup,
|
||||
desc = 'Treat term:// buffers as terminal buffers',
|
||||
nested = true,
|
||||
command = "if !exists('b:term_title')|call termopen(matchstr(expand(\"<amatch>\"), '\\c\\mterm://\\%(.\\{-}//\\%(\\d\\+:\\)\\?\\)\\?\\zs.*'), {'cwd': expand(get(matchlist(expand(\"<amatch>\"), '\\c\\mterm://\\(.\\{-}\\)//'), 1, ''))})",
|
||||
command = "if !exists('b:term_title')|call jobstart(matchstr(expand(\"<amatch>\"), '\\c\\mterm://\\%(.\\{-}//\\%(\\d\\+:\\)\\?\\)\\?\\zs.*'), {'term': v:true, 'cwd': expand(get(matchlist(expand(\"<amatch>\"), '\\c\\mterm://\\(.\\{-}\\)//'), 1, ''))})",
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ 'TermClose' }, {
|
||||
|
||||
4
runtime/lua/vim/_meta/api.lua
generated
4
runtime/lua/vim/_meta/api.lua
generated
@@ -272,12 +272,12 @@ function vim.api.nvim_buf_attach(buffer, send_buffer, opts) end
|
||||
--- This temporarily switches current buffer to "buffer".
|
||||
--- If the current window already shows "buffer", the window is not switched.
|
||||
--- If a window inside the current tabpage (including a float) already shows the
|
||||
--- buffer, then one of these windows will be set as current window temporarily.
|
||||
--- buffer, then one of those windows will be set as current window temporarily.
|
||||
--- Otherwise a temporary scratch window (called the "autocmd window" for
|
||||
--- historical reasons) will be used.
|
||||
---
|
||||
--- This is useful e.g. to call Vimscript functions that only work with the
|
||||
--- current buffer/window currently, like `termopen()`.
|
||||
--- current buffer/window currently, like `jobstart(…, {'term': v:true})`.
|
||||
---
|
||||
--- @param buffer integer Buffer handle, or 0 for current buffer
|
||||
--- @param fun function Function to call inside the buffer (currently Lua callable
|
||||
|
||||
28
runtime/lua/vim/_meta/vimfn.lua
generated
28
runtime/lua/vim/_meta/vimfn.lua
generated
@@ -4805,7 +4805,7 @@ function vim.fn.jobresize(job, width, height) end
|
||||
--- @return any
|
||||
function vim.fn.jobsend(...) end
|
||||
|
||||
--- Note: Prefer |vim.system()| in Lua (unless using the `pty` option).
|
||||
--- Note: Prefer |vim.system()| in Lua (unless using `rpc`, `pty`, or `term`).
|
||||
---
|
||||
--- Spawns {cmd} as a job.
|
||||
--- If {cmd} is a List it runs directly (no 'shell').
|
||||
@@ -4813,8 +4813,11 @@ function vim.fn.jobsend(...) end
|
||||
--- call jobstart(split(&shell) + split(&shellcmdflag) + ['{cmd}'])
|
||||
--- <(See |shell-unquoting| for details.)
|
||||
---
|
||||
--- Example: >vim
|
||||
--- call jobstart('nvim -h', {'on_stdout':{j,d,e->append(line('.'),d)}})
|
||||
--- Example: start a job and handle its output: >vim
|
||||
--- call jobstart(['nvim', '-h'], {'on_stdout':{j,d,e->append(line('.'),d)}})
|
||||
--- <
|
||||
--- Example: start a job in a |terminal| connected to the current buffer: >vim
|
||||
--- call jobstart(['nvim', '-h'], {'term':v:true})
|
||||
--- <
|
||||
--- Returns |job-id| on success, 0 on invalid arguments (or job
|
||||
--- table is full), -1 if {cmd}[0] or 'shell' is not executable.
|
||||
@@ -4879,6 +4882,10 @@ function vim.fn.jobsend(...) end
|
||||
--- stdin: (string) Either "pipe" (default) to connect the
|
||||
--- job's stdin to a channel or "null" to disconnect
|
||||
--- stdin.
|
||||
--- term: (boolean) Spawns {cmd} in a new pseudo-terminal session
|
||||
--- connected to the current (unmodified) buffer. Implies "pty".
|
||||
--- Default "height" and "width" are set to the current window
|
||||
--- dimensions. |jobstart()|. Defaults $TERM to "xterm-256color".
|
||||
--- width: (number) Width of the `pty` terminal.
|
||||
---
|
||||
--- {opts} is passed as |self| dictionary to the callback; the
|
||||
@@ -10168,19 +10175,8 @@ function vim.fn.tanh(expr) end
|
||||
--- @return string
|
||||
function vim.fn.tempname() end
|
||||
|
||||
--- Spawns {cmd} in a new pseudo-terminal session connected
|
||||
--- to the current (unmodified) buffer. Parameters and behavior
|
||||
--- are the same as |jobstart()| except "pty", "width", "height",
|
||||
--- and "TERM" are ignored: "height" and "width" are taken from
|
||||
--- the current window. Note that termopen() implies a "pty" arg
|
||||
--- to jobstart(), and thus has the implications documented at
|
||||
--- |jobstart()|.
|
||||
---
|
||||
--- Returns the same values as jobstart().
|
||||
---
|
||||
--- Terminal environment is initialized as in |jobstart-env|,
|
||||
--- except $TERM is set to "xterm-256color". Full behavior is
|
||||
--- described in |terminal|.
|
||||
--- @deprecated
|
||||
--- Use |jobstart()| with `{term: v:true}` instead.
|
||||
---
|
||||
--- @param cmd string|string[]
|
||||
--- @param opts? table
|
||||
|
||||
Reference in New Issue
Block a user