diff options
Diffstat (limited to 'runtime/doc')
-rw-r--r-- | runtime/doc/news.txt | 2 | ||||
-rw-r--r-- | runtime/doc/terminal.txt | 26 | ||||
-rw-r--r-- | runtime/doc/vim_diff.txt | 6 |
3 files changed, 33 insertions, 1 deletions
diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index 1b9c3a463f..5a3e35a3dd 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -244,6 +244,8 @@ DEFAULTS • |[a|, |]a|, |[A|, |]A| navigate through the |argument-list| • |[b|, |]b|, |[B|, |]B| navigate through the |buffer-list| • |[<Space>|, |]<Space>| add an empty line above and below the cursor + • |[[| and |]]| in Normal mode jump between shell prompts for shells which emit + OSC 133 sequences ("shell integration" or "semantic prompts"). • Snippet: • `<Tab>` in Insert and Select mode maps to `vim.snippet.jump({ direction = 1 })` diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index 4183bb8dcf..99761c9c80 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -185,6 +185,32 @@ clipboard. OSC 52 sequences sent from the :terminal buffer do not emit a |TermRequest| event. The event is handled directly by Nvim and is not forwarded to plugins. +OSC 133: shell integration *terminal-osc133* + +Some shells will emit semantic escape sequences (OSC 133) to mark the +beginning and end of a prompt. The start of a prompt is marked with the +sequence `OSC 133 ; A`. Nvim can be configured to create signs in terminal +buffers marking shell prompts. Example: >lua + + local ns = vim.api.nvim_create_namespace('terminal_prompt_markers') + vim.api.nvim_create_autocmd('TermRequest', { + callback = function(args) + if string.match(args.data.sequence, '^\027]133;A') then + local lnum = args.data.cursor[1] + vim.api.nvim_buf_set_extmark(args.buf, ns, lnum - 1, 0, { + -- Replace with sign text and highlight group of choice + sign_text = '▶', + sign_hl_group = 'SpecialChar', + }) + end + end, + }) + + -- Enable signcolumn in terminal buffers + vim.api.nvim_create_autocmd('TermOpen', { + command = 'setlocal signcolumn=auto', + }) +< ============================================================================== Status Variables *terminal-status* diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index 1e1f6c4db7..a4b3e9711b 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -181,7 +181,10 @@ nvim.terminal: when 'background' is "light". While this may not reflect the actual foreground/background color, it permits 'background' to be retained for a nested Nvim instance running in the terminal emulator. -- TermOpen: Sets default options for |terminal| buffers: +- TermRequest: Nvim will create extmarks for shells which + annotate their prompts with OSC 133 escape sequences, enabling users to + quickly navigate between prompts using |[[| and |]]|. +- TermOpen: Sets default options and mappings for |terminal| buffers: - 'nomodifiable' - 'undolevels' set to -1 - 'textwidth' set to 0 @@ -193,6 +196,7 @@ nvim.terminal: - 'foldcolumn' set to "0" - 'winhighlight' uses |hl-StatusLineTerm| and |hl-StatusLineTermNC| in place of |hl-StatusLine| and |hl-StatusLineNC| + - |[[| and |]]| to navigate between shell prompts nvim.cmdwin: - CmdwinEnter: Limits syntax sync to maxlines=1 in the |cmdwin|. |