aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/visual.txt
Commit message (Collapse)AuthorAge
* docs(help): specify h4 "function signature" format #42434masterJustin M. Keyes3 days
| | | | | | | | | | | | | | | | | | | | | Work towards enabling ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88) in all `:help` files. Problem: The final boss of vimdoc pseudo-structure: Vim's quasi-headings on function signatures and excmd docs is visually distinctive but too inconsistent for a nice parse rule. Solution: - Define the quasi-heading format as an "h4" variant, specified at `:help help-tag-heading`. - For simplicity and predictability, it is defined as any line that ends with a help tag(s) preceded by 2 or more spaces (or 1 tab). - Update existing docs. - This one-time update has a lot of changes, but is very unlikely to conflict with ported Vim-patches because (1) Vim rarely adds new *excmds* that we want, and (2) *function* docs are auto-generated. ref https://github.com/neovim/tree-sitter-vimdoc/issues/110
* docs: flow layoutJustin M. Keyes4 days
| | | | | | | | | | Work towards enabling "flow" layout in most `:help` files. Since [tables are supported in help](https://github.com/neovim/tree-sitter-vimdoc#tables), it's now possible to render most help files as ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88) instead of the legacy fixed-width layout. Besides [improved HTML rendering](https://github.com/neovim/neovim/pull/42381#discussion_r4285705739), flow layout will allow `:help` presentation-mode to un-hardwrap text blocks.
* docs: cleanup invalid help sourceJustin M. Keyes4 days
| | | | | | | | | | Work towards enabling "flow" layout in most `:help` files. Since [tables are supported in help](https://github.com/neovim/tree-sitter-vimdoc#tables), it's now possible to render most help files as ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88) instead of the legacy fixed-width layout. Besides [improved HTML rendering](https://github.com/neovim/neovim/pull/42381#discussion_r4285705739), flow layout will allow `:help` presentation-mode to un-hardwrap text blocks.
* fix(editor)!: operator target/cgn modifies Visual marks #42119Justin M. Keyes2026-09-27
| | | | | | | | | | | | | | | | | | Problem: An operator on a target that creates a Visual selection (`cgn`, `d<C-v>j`, an omap text object like `:<C-U>normal! viw`) sets `'< '>`, `gv` and `visualmode()` to the operator target. This causes at least the following problems: - clobbers the user's previous `'< '>` (annoying and usually unwanted) - E.g. after a custom textobj, `:help text-object-define`. - "cgn" with a `\%V` pattern can't be dot-repeated (".") Solution: Don't save the Visual area if the operator target created it (operator was pending). Also fix `an`/`in` with `'selection'=exclusive` starting from an empty range.
* fix(multicursor): "gv" + Insert-entering cmd #42110Justin M. Keyes2026-09-27
| | | | | | | | | | | | | | | | | | | | | Problem: - Multicursor does not cascade a `gv`-entered insert-session (`gvc`). - CmdAtom of a `gv`-entered insert-session (e.g. `gvcX<Esc>`) has `keys="1vcX<Esc>"` (redo's fallback), not the typed keys. And is not emitted at all if multicursor is inactive. Analysis: Redo can't contain "gv", so it does the "1v" fallback, and the insert-cascade replays redo. Solution: Replay "gv" + op at each cursor: store the typed selection in `InsSession.vsel`; it supplants redo's "1v" in the emitted atom and in the insert-cascade replay. A cursor without a Visual area skips a "gv"-based replay (else its keys would run as Normal-mode: "gvrx" => "rx"). Redo behavior is unchanged ("1v" fallback): "gv" is absolute, "." acts at the cursor.
* feat(multicursor): MC HAMMER #41587Justin M. Keyes2026-09-01
| | | | | | | | | | | | | | | | | | | | | Other (squashed) commits: fix(tui): emit ui_send output atomically with the frame Problem: tui_ui_send() writes directly to the TTY, bypassing the output buffer. Sequences sent via nvim_ui_send() (e.g. kitty multiple-cursors, or visual-dot-repeat) always arrive in a separate TTY write from the frame they were computed for. This manifests as "tearing", or e.g. in the case of multicursor the terminal renders text with stale cursor overlays. Solution: - tui_ui_send(): while a frame is being assembled (pending invalid regions or buffered output), buffer instead of writing directly. - Out-of-frame sends (tty queries, clear-on-disable) still write immediately. - mcursor.lua: emit the terminal-cursor update at the end of the redraw cycle (`on_end`, when screen positions are final) instead of vim.schedule().
* feat(input)!: CmdAtom event #41297Justin M. Keyes2026-08-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: There is no unified notion of a "user action". Vim processes input by one-char-at-a-time, and mostly throws away any hints it might gather about the user's action, with one exception: it stores the last _edit_ action (the "redo buffer", encoded as unstructured `["x][v][count]body` bytes). Plugins can only observe individual keys (vim.on_key) and high-level effects (TextChanged, CursorMoved). Solution: - Users can subscribe to `CmdAtom` events to handle any user action. - Event is deferred; handlers cannot cancel or interfere with user actions. - Capture `CmdSpec` from the normal/insert/visual subsystems. - typeahead/readahead stay unstructured (`buffheader_T`): they are key streams, not commands. - the redo/record buffers become `StringBuilder`: fewer allocations/copies. - Repurpose the input/redo engine to accept `CmdSpec` objects. "atom": one repeatable unit of user input, as a resolved (post-mapping) keysequence plus structured fields. Only user actions, not `:normal`, API calls, or non-"t" `feedkeys`. BREAKING: dot-repeat of an Insert session, replays the entire session including cursor-moves (:help ins-repeat). BREAKING: dot-repeat of a Visual operation, replays the selection instead of operating on a fixed-size region.
* vim-patch:c7645fc: runtime(doc): add a few references to mouse behaviour ↵zeertzjq2026-05-23
| | | | | | | | | (#39959) fixes: vim/vim#20281 https://github.com/vim/vim/commit/c7645fcda50f95cc098545b70ce937a986b997d1 Co-authored-by: Christian Brabandt <cb@256bit.org>
* feat(normal): lines textobject "il", "al" #39845Barrett Ruth2026-05-19
| | | | `al` to select the whole buffer linewise. `il` to select the current line without surrounding whitespace.
* docs: misc, rename "tabpage"Justin M. Keyes2026-05-07
| | | | | | Co-authored-by: michael-grunder <michael.grunder@gmail.com> Co-authored-by: Olivia Kinnear <git@superatomic.dev> Co-authored-by: Felipe Matarazzo <felipemps@protonmail.com>
* vim-patch:5427465: runtime(doc): Clean up file header whitespacezeertzjq2025-11-10
| | | | | | | | | | | | | - :retab! line 1 and line 4 (main page heading). - Use four columns whitespace before "by [Author]" in the user manual heading to match the reference manual formatting. - double space headings. closes: vim/vim#18648 https://github.com/vim/vim/commit/542746521ff8d111f33c3c8ff298ba58966c9acc Co-authored-by: Doug Kearns <dougkearns@gmail.com>
* vim-patch:partial:c58f91c: runtime(doc): Whitespace updates (#36160)zeertzjq2025-10-13
| | | | | | | | | | | | | | Use double sentence spacing and wrap lines at 'textwidth'. Code examples and tables were not wrapped unless this had already been done locally. closes: vim/vim#18453 https://github.com/vim/vim/commit/c58f91c035db09358c282f2a908e2aea4287785e Fix incorrect docs in :h ModeChanged. Cherry-pick :h bufnr() changes from patch 8.1.2080. Co-authored-by: Doug Kearns <dougkearns@gmail.com>
* vim-patch:1fa3f0c: runtime(doc): fix :vmap example to avoid unwanted spaces ↵zeertzjq2025-06-29
| | | | | | | | | | with JJ (#34695) fixes: vim/vim#17621 closes: vim/vim#17623 https://github.com/vim/vim/commit/1fa3f0c215d37b3cb36f69841d5ab29ca8e0faa5 Co-authored-by: Damien Lejay <damien@lejay.be>
* fix(defaults): only repeat macro for each selected line if linewise (#28289)zeertzjq2024-04-15
| | | | | | As mentioned in #28287, repeating a macro for each selected line doesn't really make sense in non-linewise Visual mode. Fix #28287
* feat(defaults): map Q and @x to repeat in Visual mode (#26495)Nacho Nieva2023-12-27
|
* vim-patch:9.0.1915: r_CTRL-C works differently in visual mode (#25248)zeertzjq2023-09-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: r_CTRL-C works differently in visual mode Solution: Make r_CTRL-C behave consistent in visual mode in terminal and Windows GUI in visual mode, r CTRL-C behaves strange in Unix like environments. It seems to end visual mode, but still is waiting for few more chars, however it never seems to replace it by any characters and eventually just returns back into normal mode. In contrast in Windows GUI mode, r_CTRL-C replaces in the selected area all characters by a literal CTRL-C. Not sure why it behaves like this. It seems in the Windows GUI, got_int is not set and therefore behaves as if any other normal character has been pressed. So remove the special casing of what happens when got_int is set and make it always behave like in Windows GUI mode. Add a test to verify it always behaves like replacing in the selected area each selected character by a literal CTRL-C. closes: vim/vim#13091 closes: vim/vim#13112 https://github.com/vim/vim/commit/476733f3d06876c7ac105e064108c973a57984d3 Co-authored-by: Christian Brabandt <cb@256bit.org>
* docs: small fixesdundargoc2023-05-13
| | | | | | | | | Co-authored-by: Christian Clason <c.clason@uni-graz.at> Co-authored-by: Gregory Anders <greg@gpanders.com> Co-authored-by: HiPhish <hiphish@posteo.de> Co-authored-by: Julio B <julio.bacel@gmail.com> Co-authored-by: T727 <74924917+T-727@users.noreply.github.com> Co-authored-by: camoz <camoz@users.noreply.github.com> Co-authored-by: champignoom <66909116+champignoom@users.noreply.github.com>
* vim-patch:76db9e076318 (#21013)Sean Dewar2022-11-10
| | | | | | | | | | | | | | Update runtime files https://github.com/vim/vim/commit/76db9e076318cb0ae846f43b7549ad4f2d234c0b - `col()`'s example was changed to use `:echowin` so that the message can be seen with `showmode`. Use "\n" to force a hit-enter instead as `:echowin` isn't ported. - Replace interpolated string usage in syntax/modula3.vim (not ported). - Add a space after the `wincmd =` examples in `*CTRL-W_=*` so that the inlined code is highlighted properly when followed by a full stop. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* fix(input): do no reinterpret mouse keys with ALT modifierszeertzjq2022-07-25
| | | | | Remove check for MOD_MASK_META as it is for <T- which never appears in TUI. Make small changes to docs.
* vim-patch:d799daa660b8 (#19031)Christian Clason2022-06-20
| | | | Update runtime files https://github.com/vim/vim/commit/d799daa660b8821943cbe1682f00da9e812dd48c
* vim-patch:8.2.4881: "P" in Visual mode still changes some registers (#18445)zeertzjq2022-05-06
| | | | | | Problem: "P" in Visual mode still changes some registers. Solution: Make "P" in Visual mode not change any register. (Shougo Matsushita, closes vim/vim#10349) https://github.com/vim/vim/commit/509142ab7a9db32114b6d0949722b9133c9c22f2
* vim-patch:8.2.4242: put in Visual mode cannot be repeatedzeertzjq2022-02-09
| | | | | | | | | | Problem: Put in Visual mode cannot be repeated. Solution: Use "P" to put without yanking the deleted text into the unnamed register. (Shougo Matsushita, closes vim/vim#9591) https://github.com/vim/vim/commit/fb55207ed17918c8a2a6cadf5ad9d5fcf686a7ab Cherry-pick get_y_previous() and set_y_previous() from patch 8.1.1736. Nvim has removed y_current, so code related to it is N/A.
* vim-patch:8.2.4160: cannot change the register used for Select mode deleteShougo Matsushita2022-01-22
| | | | | | | Problem: Cannot change the register used for Select mode delete. Solution: Make CTRL-R set the register to be used when deleting text for Select mode. (Shougo Matsushita, closes vim/vim#9531) https://github.com/vim/vim/commit/4ede01f18884961f2e008880b4964e5d61ea5c36
* vim-patch:88a4205f1cfb (#16399)Christian Clason2021-11-22
| | | | Update runtime files https://github.com/vim/vim/commit/88a4205f1cfbdc328e987ab00521fc8a22447fc3
* vim-patch:d2ea7cf10a4d #15571Christian Clason2021-09-08
| | | | | | | | | | | Update runtime files https://github.com/vim/vim/commit/d2ea7cf10a4d026ebd402594d656af7d5c811c24 omit `runtime/doc/if_tcl.txt` omit `runtime/doc/textprop.txt` omit `runtime/tutor/*` omit `runtime/syntax/vim.vim` (cherry-picked in https://github.com/neovim/neovim/commit/2dd7828511d04a8b7f1ac4331c719a751a5db869) manual merge of `runtime/pack/dist/opt/termdebug/plugin/termdebug.vim`
* vim-patch:e7b1ea0276ccJan Edmund Lazo2021-04-29
| | | | | Update runtime files. https://github.com/vim/vim/commit/e7b1ea0276cc83cd5c612f3189a174a60d57b5ed
* vim-patch:5ef1c6a4838aJan Edmund Lazo2021-04-27
| | | | | | | Update runtime files https://github.com/vim/vim/commit/5ef1c6a4838a9629b793f3ae676f72a764171b00 "scrollfocus" is for Windows GUI only so it is N/A.
* Treat unmapped ALT/META as ESC+c in all modesMatt Wozniski2020-10-05
| | | | | | | | In #8226 <A-x> and <M-x> were changed to behave like <Esc>x in insert mode when no mapping exists. This commit backs out that change and replaces it with a more general one that makes unmapped ALT and META keypresses as <Esc>+char in all modes. This fixes an unnecessary and confusing inconsistency between modes.
* doc + extmarks tweaks #11421Justin M. Keyes2019-11-25
| | | | - nvim_buf_get_extmarks: rename "amount" => "limit" - rename `set_extmark_index_from_obj`
* doc: remove "{not available ...}" noiseJustin M. Keyes2019-08-02
|
* vim-patch:26967617a30eJustin M. Keyes2019-08-01
| | | | | | | Update runtime files. https://github.com/vim/vim/commit/26967617a30e55aedc98b8f14b841d88469abd0e NA: vim-patch:55d81cd2a15d
* vim-patch:f6b401090e81Justin M. Keyes2019-08-01
| | | | | Update runtime files https://github.com/vim/vim/commit/f6b401090e816b4216f783a9b85d21d9ad134ff8
* vim-patch:d473c8c10126Justin M. Keyes2018-10-29
| | | | | Update runtime files. https://github.com/vim/vim/commit/d473c8c101262702ea9eeb14907ee20a786942b2
* runtime/doc: fix broken links found by `make html`Justin M. Keyes2018-08-25
|
* vim-patch:8.0.1041: bogus characters when indenting during visual-block appendJan Edmund Lazo2018-08-23
| | | | | | | Problem: Bogus characters appear when indenting kicks in while doing a visual-block append. Solution: Recompute when indenting is done. (Christian Brabandt) https://github.com/vim/vim/commit/e2e69e48134cbfdedea7802810932f8592705024
* doc: deprecate 'highlight'; remove howto.txt (#7497)Justin M. Keyes2017-11-07
|
* help, man.vim: change "outline" map to gO (#7405)Justin M. Keyes2017-10-21
|
* 'cpoptions': remove "<" flag; ignore <special>Justin M. Keyes2017-07-08
| | | | Closes #6937 "nvim_get_keymap output is unreliable"
* doc: Replace hardcoded TOCs with <M-]> advice.Justin M. Keyes2017-05-01
|
* doc: Replace "For Vim ... Last change ..." headers (#6328)Justin M. Keyes2017-03-21
|
* doc: Remove Vi annotationsMichael Reed2015-05-03
| | | | | | | | | | | | | | | This removes all instances of '{not in Vi}', '{Vi: ... }', etc. We don't care about Vi compatibility, so all of these annotations are useless in nvim. This also removed the syntax definitions for these items. In addition, remove instances of '{only when compiled with +feature}' adjacent to instances of '{not in Vi}' and friends. Helped-by: David Bürgin <676c7473@gmail.com> Helped-by: Felipe Morales <hel.sheep@gmail.com> closes #2535
* "halfway a line" is a very confusing phraseJack Danger Canty2015-01-22
| | | | | | | | | If you Google for this phrase found in the Vim documentation you'll find almost exclusively hits from the Vim documentation. I think changing "halfway a line" to "halfway through a line" makes more sense. There seems to be an pervasive odd use of the word 'halfway' in the original docs which I'm updating everywhere.
* re-integrate runtime/ vim-patch:0 #938Justin M. Keyes2014-07-29
Vim runtime files based on 7.4.384 / hg changeset 7090d7f160f7 Excluding: Amiga icons (*.info, icons/) doc/hangulin.txt tutor/ spell/ lang/ (only used for menu translations) macros/maze/, macros/hanoi/, macros/life/, macros/urm/ These were used to test vi compatibility. termcap "Demonstration of a termcap file (for the Amiga and Archimedes)" Helped-by: Rich Wareham <rjw57@cam.ac.uk> Helped-by: John <john.schmidt.h@gmail.com> Helped-by: Yann <yann@yann-salaun.com> Helped-by: Christophe Badoit <c.badoit@lesiteimmo.com> Helped-by: drasill <github@tof2k.com> Helped-by: Tae Sandoval Murgan <taecilla@gmail.com> Helped-by: Lowe Thiderman <lowe.thiderman@gmail.com>