aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/doc')
-rw-r--r--runtime/doc/news.txt2
-rw-r--r--runtime/doc/terminal.txt26
-rw-r--r--runtime/doc/vim_diff.txt6
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|.