Compare commits

...

169 Commits

Author SHA1 Message Date
David Seal
836ed5271e patch 9.1.1663: xxd: 9.1.0023 introduced additional dependency
Problem:  xxd: 9.1.0023 introduced additional dependency
Solution: remove non-native z/OS library call (David Seal)

Commit 48a75f3dfb (Patch 9.1.0023)
introduces a call to __disableautocvt() which can only be found in a
non-native z/OS library.  This requires installing the external zoslib
library in order to work, which is not present on all z/OS systems

So remove the call to __disableautocvt() and rely on library routines
that are available to all z/OS users

See https://ibmruntimes.github.io/zoslib/zos-io_8cc.html for more
details

closes: #18059

Signed-off-by: David Seal <dseal@rocketsoftware.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 22:24:56 +02:00
Ayan Banerjee
014d50df80 runtime(systemverilog): Add syntax highlighting for 1800-2023 block strings
closes: #18056

Signed-off-by: Ayan Banerjee <ayanbanrj@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 22:19:04 +02:00
Hirohito Higashi
d839a5b3b0 patch 9.1.1662: Issues with proto files: missing or inconsistent prototypes.
Problem:  Issues with proto files: missing or inconsistent prototypes.
Solution: Update ifdefs, move typedefs, fix prototype declaration
          (Hirohito Higashi)

This change focuses on fixes and tweaks found while working on #18045 for
the proto/*.pro files.

The following fixes and tweaks have been made:

- Fixed a prototype declaration where the variable name differed from
  the function definition.
- Removed a prototype declaration without a function body.
- Fixed a problem where a prototype declaration was not created for a
  function definition enclosed in a #if directive because it lacked ||
  defined(PROTO).
- Moved typedef struct soundcb_S soundcb_T; from proto/sound.pro to
  vim.h.
- Other small tweaks.

The make proto mechanism remains unchanged.

closes: #18058

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 22:08:13 +02:00
Foxe Chen
c0a3eda6ba patch 9.1.1661: Coverity finds a few issues in clientserver.c
Problem:  Coverity finds a few issues in clientserver.c
          (also by Tony Mechelynck)
Solution: Fix issues and warnings (Foxe Chen)

closes: #18057

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 22:00:41 +02:00
glepnir
38315295ef patch 9.1.1660: popups without decoration are positioned wrong at bottom of screen
Problem:  Popups without border/padding/title don't flip position when
          cursor is near bottom of screen, while decorated popups do
          flip correctly.
Solution: Use original height instead of truncated height for position
          inversion check, except for info popups to preserve existing
          behavior (glepnir).

fixes: #12546
closes: #18054

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 21:43:15 +02:00
Damien Lejay
bb1233d328 patch 9.1.1659: configure: uses AC_INIT without args
Problem:  configure: uses AC_INIT without args
Solution: Add a comment explaining why AC_INIT has no args
          (Damien Lejay)

closes: #18053

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 21:29:54 +02:00
Christoffer Aasted
bb26f709ea patch 9.1.1658: Missing includes for Wayland headers
Problem:  Missing includes for Wayland headers, when subfolder is used
          (after v9.1.1644)
Solution: Add new $WAYLAND_CPPFLAGS (Christoffer Aasted).

closes: #18051

Signed-off-by: Christoffer Aasted <dezzadk@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 21:21:57 +02:00
Girish Palya
196c376682 patch 9.1.1657: Autocompletion adds delay
Problem:  Autocompletion adds delay
          (gcanat, char101, after v9.1.1638)
Solution: Temporarily disable autocomplation (Girish Palya).

related: #17960
fixes: #18022
closes: #18048

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 21:20:01 +02:00
zeertzjq
84a343a6ed runtime(doc): correct another problem in :h items()
The returned value is only in arbitrary order for a Dict.

closes: #18050

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 21:10:43 +02:00
Christian Brabandt
17b4c7cfa2 patch 9.1.1656: MS-Windows: Patch v9.1.1652 breaks clipboard
Problem:  MS-Windows: Patch v9.1.1652 breaks clipboard
          (ddad431, after v9.1.1652)
Solution: Revert the patch

Revert "patch 9.1.1652: cannot determine non-X11/Wayland clipmethods"

This reverts commit 3e152c76ad.

fixes: #18064

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 21:07:07 +02:00
Christian Brabandt
3e44fbf316 patch 9.1.1655: Build-failure in do_mouse()
Problem:  Build-failure in do_mouse()
          (after v9.1.1653)
Solution: Add missing closing paren

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 20:56:53 +02:00
Christian Brabandt
e1a435c508 patch 9.1.1654: build failure when FEAT_DIFF is not defined
Problem:  build failure when FEAT_DIFF is not defined
          (John Marriott)
Solution: Remove FEAT_DIFF in proto.h; define dummy type for
          diffline_T and diffline_change_T when FEAT_DIFF is not defined

related: #18026
closes: #18046

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 20:37:37 +02:00
Christian Brabandt
2fd9ac7a69 patch 9.1.1653: Coverity complains about Null pointer dereference
Problem:  Coverity complains about Null pointer dereference
          (after v9.1.1643)
Solution: Check that TabPageIdx is not Null

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 20:31:08 +02:00
Antonio Giovanni Colombo
aabcca3655 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 20:27:11 +02:00
Antonio Giovanni Colombo
a167e8a416 translation(it): update Italian manpage
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 20:23:29 +02:00
Foxe Chen
3e152c76ad patch 9.1.1652: cannot determine non-X11/Wayland clipmethods
Problem:  Cannot determine non-X11/Wayland clipmethods
Solution: Add the "gui" value to the 'clipmethod' option (Foxe Chen)

closes: #18006

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 22:09:27 +02:00
Foxe Chen
96b2154b73 patch 9.1.1651: Cannot use clientserver over socket
Problem:  Cannot use clientserver over Unix domain socket
Solution: Implement socketserver functionality (Foxe Chen).

fixes: #3509
closes: #17839

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 21:40:40 +02:00
glepnir
31170af24a patch 9.1.1650: popup: window may not properly resize
Problem:  After scrolling a popup and then using popup_settext() with
          fewer lines, the popup fails to resize properly because
          firstline points beyond the new buffer content (lifepillar)
Solution: In popup_adjust_position(), validate that firstline doesn't
          exceed buffer line count and reset to 0 (auto-position) if it
          does (glepnir)

fixes: #14745
closes: #18031

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 21:16:42 +02:00
glepnir
c7c10f8c11 patch 9.1.1649: attrs allocation and fuzzy growarray could leak
Problem:  attrs allocation and fuzzy growarray could leak on early
          returns
Solution: Ensure proper cleanup of allocated memory on exit paths
          (glepnir)

closes: #18038

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 21:09:18 +02:00
Jon Parise
2f7e4eb335 runtime(python): optimize pythonSync pattern
Order the keywords by expected frequency: "def" and "class" are assumed
to be more likely than "async def" in the majority of Python code.

closes: #18032

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Zvezdan Petkovic <zpetkovic@acm.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 21:06:50 +02:00
dependabot[bot]
1526d4f23c CI: Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

closes: #18037

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 21:04:30 +02:00
zeertzjq
14afa278c1 patch 9.1.1648: MS-Windows: some style issues with patch v9.1.1646
Problem:  MS-Windows: some style issues with patch v9.1.1646
Solution: Fix typose and code style issues (zeertzjq).

closes: #18036

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 21:02:45 +02:00
Christian Brabandt
44c8072ef6 runtime(doc): fix style and clarify items() function for String type
related: #18021

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 20:59:22 +02:00
WuJunkai2004
0c4405a6b2 patch 9.1.1647: filetype: Cangjie files are not recognized
Problem:  filetype: Cangjie files are not recognized
Solution: Detect *.cj files as cangjie filetype, include a syntax plugin
          (WuJunkai2004)

This commit introduces a new syntax highlighting file for the Cangjie
programming language, includes 4 parts as required:
- The main syntax file: runtime/syntax/cangjie.vim
- The filetype detection rule in: runtime/filetype.vim
- The documentation update in: runtime/doc/syntax.txt
- Some menus

References:
- https://gitcode.com/Cangjie
- https://cangjie-lang.cn/

fixes: 18014
closes: #18027

Signed-off-by: WuJunkai2004 <wujunkai20041123@outlook.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-18 20:53:34 +02:00
Miguel Barro
a2f13bf782 patch 9.1.1646: MS-Windows: completion cannot handle implicit drive letters
Problem:  MS-Windows: completion cannot handle implicit drive letters
Solution: Consider paths like \folder and /folder as absolute
          (Miguel Barro).

closes: #17829

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-17 22:10:31 +02:00
glepnir
59799f3afa patch 9.1.1645: fuzzy.c can be further improved
Problem:  fuzzy.c can be further improved
Solution: Fix memory leak and refactor it (glepnir).

Optimize performance and memory allocation:

- Fix memory leak in fuzzy_match_in_list.
- using single memory allocation in match_positions
- Improve has_match performance and add null pointer checks

closes: #18012

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-17 21:40:45 +02:00
Damien Lejay
ce288c7fb0 patch 9.1.1644: configure: doesn't separate CPPFLAGS and CFLAGS
Problem:  configure: doesn't separate CPPFLAGS and CFLAGS
Solution: Split CPPFLAGS and CFLAGS for pkg-config
          (Damien Lejay)

Previously, all flags returned by pkg-config --cflags were dumped into
CFLAGS, mixing include paths with compiler options. This commit uses
--cflags-only-I and --cflags-only-other to properly separate include
flags into CPPFLAGS and keep compiler flags in CFLAGS.

closes: #18019

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-17 21:25:07 +02:00
Yegappan Lakshmanan
308a3130be runtime(doc): Update help for the items() function
closes: #18021

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-17 21:20:34 +02:00
Hirohito Higashi
20a159b557 patch 9.1.1643: tabpanel: mouse code too complicated
Problem:  tabpanel: mouse code too complicated
Solution: Refactor code, adjust ifdefs (Hirohito Higashi).

closes: #18023

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-17 21:09:56 +02:00
Damien Lejay
0ebe55af54 patch 9.1.1642: configure: wrong C99 feature test
Problem:  configure: wrong C99 feature test
Solution: Update inverted C99 feature test logic
          (Damien Lejay)

closes: #18024

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-17 21:06:59 +02:00
Yegappan Lakshmanan
486cffab3e patch 9.1.1641: a few compiler warnings are output
Problem:  a few compiler warnings are output
Solution: Fix compiler warnings (Yegappan Lakshmanan)

closes: #18025

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-17 21:02:44 +02:00
David Friant
c08b94b072 patch 9.1.1640: Unicode has deprecated some code-points
Problem:  Unicode has deprecated some code-points
Solution: Update the digraph tables to align with the Unicode v16
          release (David Friant)

This commit updates the digraphs Left-Pointing Angle Bracket '</'
and Right-Pointing Angle Bracket '/>' to account for the fact that
the old Unicode codepoints for them (2329 and 232A, respectively)
have been deprecated. As per the Miscellaneous Technical code chart
(https://www.unicode.org/charts/PDF/U2300.pdf), the old digraphs
have been reassigned to the CJK Left Angle Bracket and Right Angle
Bracket (3008 and 3009) with their declaration moved to the
appropriate block.

This commit also introduces the new digraphs '<[' and ']>' to
represent the Mathematical Left Angle Bracket and Mathematical
Right Angle Bracket (27E8 and 27E9) to replace the deprecated code
points in the Technical block.

Tests have been added and, I believe, the documentation has been
updated accordingly.

closes: #17990

Signed-off-by: David Friant <friant@HPEnvyx360.friant.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 18:33:05 +02:00
Girish Palya
1e38198a41 patch 9.1.1639: completion: popup may be misplaced
Problem:  During commandline completiom, popup window placement can be
          incorrect when 'noselect' is present in 'wildmode'
          (Shane-XB-Qian)
Solution: Disable "showtail" feature when 'noselect' is present.

fixes: #17969
closes: #18001

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 18:13:46 +02:00
Girish Palya
a09b1604d4 patch 9.1.1638: completion: not possible to delay the autcompletion
Problem:  completion: not possible to delay the autcompletion
Solution: add the 'autocompletedelay' option value (Girish Palya).

This patch introduces a new global option 'autocompletedelay'/'acl' that
specifies the delay, in milliseconds, before the autocomplete menu
appears after typing.

When set to a non-zero value, Vim waits for the specified time before
showing the completion popup, allowing users to reduce distraction from
rapid suggestion pop-ups or to fine-tune the responsiveness of
completion.

The default value is 0, which preserves the current immediate-popup
behavior.

closes: #17960

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 18:04:04 +02:00
Christian Brabandt
b405c79004 runtime(vim): set 'comments' based on script type (legacy/Vim9)
fixes: #18000

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 17:51:40 +02:00
毛逸宁
39f9298cb2 runtime(vim9): Disable shellslash for shellescape() in Open()
fixes: #17995
closes: #18004

Signed-off-by: 毛逸宁 <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 17:38:33 +02:00
Yegappan Lakshmanan
3281a0ae62 patch 9.1.1637: FEAT_DIFF used in diff.pro
Problem:  FEAT_DIFF used in diff.pro
Solution: Remove it from the diff protocol file
          (Yegappan Lakshmanan)

closes: #18005

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 17:33:53 +02:00
Ivan Pešić
90f5d67840 translation(sr): Update Serbian messages translation
closes: #18009

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 17:28:19 +02:00
毛逸宁
3cee950fc9 runtime(diff): fix mixed translations in zh_CN
some translations confused zh_CN and zh_TW

Signed-off-by: 毛逸宁 <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 17:22:36 +02:00
Yegappan Lakshmanan
d6a762fe1b patch 9.1.1636: style issues
Problem:  style issues
Solution: Fix indentation of function parameters exceeding 80 character
          length (Yegappan Lakshmanan).

closes: #18013

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 16:26:54 +02:00
Naruhiko Nishino
62f5be6ea6 patch 9.1.1635: tabpanel: cannot drag inactive tabs
Problem:  tabpanel: cannot drag inactive tabs (char101)
Solution: use end_visual_mode_keep_button() instead of end_visual_mode()
          (Naruhiko Nishino)

fixes: #17986
closes: #18016

Signed-off-by: Naruhiko Nishino <naru123456789@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 16:09:02 +02:00
Foxe Chen
126bc4690f patch 9.1.1634: Clipboard code can be improved
Problem:  Clipboard code can be improved
Solution: Slightly refactor code (Foxe Chen).

This commit does the following:
-  Use garray_T when receiving data instead of manually reallocing
-  formatting fixes
-  skip Wayland test that requires clientserver if x11 not compiled
-  Make some functions static

closes: #17999

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-14 22:09:45 +02:00
zeertzjq
ade0815856 patch 9.1.1633: Search pattern shown incorrectly with negative offset
Problem:  Search pattern shown incorrectly with negative offset.
          (lkintact)
Solution: Don't prepend a '+' sign to a negative offset (zeertzjq).

fixes: #17993
closes: #17994

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-14 21:19:37 +02:00
glepnir
03d6e06edd patch 9.1.1632: memory leak in fuzzy.c
Problem:  memory leak in fuzzy.c
Solution: Free fuzmatch, add a few minor refactors
          (glepnir)

fixes neovim CID 584055: fuzmatch leak when count becomes 0
Fix partial allocation failure cleanup in buffer expansion

closes: #17996

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-14 21:15:44 +02:00
Yegappan Lakshmanan
bb07b1ac14 patch 9.1.1631: proto files are outdated
Problem:  proto files are outdated
Solution: Regenerate proto files (Yegappan Lakshmanan)

closes: #17997

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-14 21:00:51 +02:00
zeertzjq
891353671a patch 9.1.1630: tests: fuzzy bufname completion test doesn't match successfully
Problem:  tests: fuzzy buffer name completion test doesn't match
          successfully (after 9.1.1627).
Solution: Update pattern to account for the change in case sensitivity.
          Also mark Test_search_stat_option() as flaky as it can still
          sometimes fail (zeertzjq).

closes: #17992

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-14 20:34:08 +02:00
Yegappan Lakshmanan
706b6f5867 patch 9.1.1629: Vim9: Not able to use more than 10 type arguments in a generic function
Problem:  Vim9: Not able to use more than 10 type arguments in a generic
          function
Solution: Initialize the types after reading all the type arg variable
          names (Yegappan Lakshmanan)

closes: #17981

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-13 22:39:37 +02:00
Jon Parise
1ee1d9b43d runtime(python): highlight "self" and "cls" in syntax script
These are special names by convention, and giving them distinct
highlighting is a nice visual clue (using Identifier by default).

This group is named "pythonClassVar" to match the name used by
python-syntax. Some third-party color schemes are aware of this
name and customized their colors accordingly.

closes: #17968

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Zvezdan Petkovic <zpetkovic@acm.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-13 22:37:31 +02:00
Shane-XB-Qian
dd9ed09d8e runtime(vimgoto): make gf extract packadd/colo name more flexible
closes: #17983

Signed-off-by: Shane-XB-Qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-13 22:31:09 +02:00
glepnir
17a6d696bd patch 9.1.1628: fuzzy.c has a few issues
Problem:  fuzzy.c has a few issues
Solution: Use Vims memory management, update style
          (glepnir)

Problem:
- Missing cleanup of lmatchpos lists causing memory leaks
- Missing error handling for list operations
- Use of malloc() instead of Vim's alloc() functions
- Inconsistent C-style comments
- Missing null pointer checks for memory allocation
- Incorrect use of vim_free() for list objects

Solution:
- Add proper cleanup of lmatchpos in done section using list_free()
- Set lmatchpos to NULL after successful transfer to avoid confusion
- Add error handling for list_append_tv() failures
- Replace malloc() with alloc() and add null pointer checks
- Convert C-style comments to C++ style for consistency
- Fix vim_free() calls to use list_free() for list objects

closes: #17984

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-13 22:02:30 +02:00
Girish Palya
c93a2b3327 runtime(doc): Adapt fuzzy doc to reflect 'fzy' algorithm
closes: #17988

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-13 21:53:53 +02:00
Girish Palya
7e0df5eee9 patch 9.1.1627: fuzzy matching can be improved
Problem:  fuzzy-matching can be improved
Solution: Implement a better fuzzy matching algorithm
          (Girish Palya)

Replace fuzzy matching algorithm with improved fzy-based implementation

The
[current](https://www.forrestthewoods.com/blog/reverse_engineering_sublime_texts_fuzzy_match/)
fuzzy matching algorithm has several accuracy issues:

* It struggles with CamelCase
* It fails to prioritize matches at the beginning of strings, often
  ranking middle matches higher.

After evaluating alternatives (see my comments
[here](https://github.com/vim/vim/issues/17531#issuecomment-3112046897)
and
[here](https://github.com/vim/vim/issues/17531#issuecomment-3121593900)),
I chose to adopt the [fzy](https://github.com/jhawthorn/fzy) algorithm,
which:

* Resolves the aforementioned issues.
* Performs better.

Implementation details

This version is based on the original fzy
[algorithm](https://github.com/jhawthorn/fzy/blob/master/src/match.c),
with one key enhancement: **multibyte character support**.

* The original implementation supports only ASCII.
* This patch replaces ascii lookup tables with function calls, making it
  compatible with multibyte character sets.
* Core logic (`match_row()` and `match_positions()`) remains faithful to
  the original, but now operates on codepoints rather than single-byte
  characters.

Performance

Tested against a dataset of **90,000 Linux kernel filenames**. Results
(in milliseconds) show a **\~2x performance improvement** over the
current fuzzy matching algorithm.

```
Search String            Current Algo    FZY Algo
-------------------------------------------------
init                          131.759    66.916
main                          83.688     40.861
sig                           98.348     39.699
index                         109.222    30.738
ab                            72.222     44.357
cd                            83.036     54.739
a                             58.94      62.242
b                             43.612     43.442
c                             64.39      67.442
k                             40.585     36.371
z                             34.708     22.781
w                             38.033     30.109
cpa                           82.596     38.116
arz                           84.251     23.964
zzzz                          35.823     22.75
dimag                         110.686    29.646
xa                            43.188     29.199
nha                           73.953     31.001
nedax                         94.775     29.568
dbue                          79.846     25.902
fp                            46.826     31.641
tr                            90.951     55.883
kw                            38.875     23.194
rp                            101.575    55.775
kkkkkkkkkkkkkkkkkkkkkkkkkkkkk 48.519     30.921
```

```vim
vim9script

var haystack = readfile('/Users/gp/linux.files')

var needles = ['init', 'main', 'sig', 'index', 'ab', 'cd', 'a', 'b',
'c', 'k',
    'z', 'w', 'cpa', 'arz', 'zzzz', 'dimag', 'xa', 'nha', 'nedax',
'dbue',
    'fp', 'tr', 'kw', 'rp', 'kkkkkkkkkkkkkkkkkkkkkkkkkkkkk']
for needle in needles
    var start = reltime()
    var tmp = matchfuzzy(haystack, needle)
    echom $'{needle}' (start->reltime()->reltimefloat() * 1000)
endfor
```

Additional changes

* Removed the "camelcase" option from both matchfuzzy() and
  matchfuzzypos(), as it's now obsolete with the improved algorithm.

related: neovim/neovim#34101
fixes #17531
closes: #17900

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-12 22:22:52 +02:00
Anttoni Erkkilä
5ba6e41d37 patch 9.1.1626: cindent: does not handle compound literals
Problem:  C-indent does not handle compound literals
          (@44100hertz, @Jorenar)
Solution: Detect and handle compound literal and structure
          initialization (Anttoni Erkkilä)

match '=' or "return" optionally followed by &, (typecast), {
Fixes also initialization which begins with multiple opening braces.

fixes: #2090
fixes: #12491
closes: #17865

Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-12 21:59:06 +02:00
Girish Palya
59e1d7f353 patch 9.1.1625: Autocompletion slow with include- and tag-completion
Problem:  Autocompletion slow with include- and tag-completion
Solution: Refactor ins_compl_interrupted() to also check for timeout,
          further refactor code to skip outputting message when
          performing autocompletion (Girish Palya).

Running `vim *` in `vim/src` was slower than expected when
'autocomplete' was enabled. Include-file and tag-file completion
sources were not subject to the timeout check, causing unnecessary
delays.

So apply the timeout check to these sources as well, improving
autocompletion responsiveness, refactor find_pattern_in_path() to take
an additional "silent" argument, to suppress any messages.

closes: #17966

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-12 21:38:56 +02:00
Shane-XB-Qian
639d93fc0e runetime(vim): gf maybe hang and fail
* searching'**' maybe terrible slow
* searching '**/plugin/' maybe fail
* the pattern for the :packadd/:import/:colorscheme
  did not consistently check for a colon, so always use
  '\%(:\s*\)\=' before the actual ex command

While at it rename the generic name vim.vim to vimgoto.vim as this more
clearly states what this script is for.

Signed-off-by: Shane-XB-Qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-12 21:28:28 +02:00
Shane-XB-Qian
487dd1716a runtime(vim): cannot jump to :colorscheme files
Problem:  cannot jump to :colorscheme files
Solution: Let runtime/autoload/vim.vim handle :colorscheme lines

closes: #17971

Signed-off-by: Shane-XB-Qian <shane.qian@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-12 21:16:28 +02:00
Damien Lejay
397b9da29d patch 9.1.1624: Cscope not enabled on MacOS
Problem:  Cscope not enabled on MacOS
Solution: Remove #ifdef test for MacOS and always enable FEAT_CSCOPE on
          Unix (Damien Lejay).

Remove the !MACOS_X guard from FEAT_CSCOPE in feature.h. macOS has been a
certified UNIX since 10.5 and supports cscope without issues. This guard
originated in the pre-OS X era when Classic MacOS lacked the required
POSIX APIs. MacVim already ships with +cscope successfully.

closes: #17976

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-12 20:46:50 +02:00
Damien Lejay
d1833d2827 runtime(doc): allow more C99 features
closes: #17965

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-11 20:51:34 +02:00
Jon Parise
dba9eb46e6 runtime(python): Also sync syntax at 'async def'
A file containing only async functions (`async def func()`) wouldn't
previously match the pythonSync pattern.

Also, this pattern only matches at the beginning of the line, so it
won't ever match method definitions (which are indented within class
scopes). Update the comment accordingly.

closes: #17963

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Zvezdan Petkovic <zpetkovic@acm.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-11 20:33:33 +02:00
Christian Brabandt
6b9cf3139a runtime(doc): update :call with a range and remove space
Commit fc3c204bbe introduced a spurious space with the
:call command

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 14:52:03 +02:00
Christian Brabandt
8b183450ad runtime(doc): Fix 2 minor issues after 32d6bd6df
related: #17879

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 14:49:05 +02:00
Rob B
a94a0555d9 runtime(python): Highlight f-string replacement fields in Python
Highlight f-string replacement fields, including

- Comments
- Debugging flags
- Conversion fields
- Format specifications
- Delimiters

Syntax inside fields will be addressed in a separate commit.

related: #10734
related: #14033
closes: #17784

Signed-off-by: Rob B <github@0x7e.net>
Signed-off-by: Zvezdan Petkovic <zpetkovic@acm.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 10:35:31 +02:00
Jon Parise
48b7eb1ceb runtime(python): Highlight classes as structures
Class and function definitions previously shared a single highlight
group (pythonFunction). This change gives classes their own highlight
group (pythonClass) that's linked to Structure.

closes: #17856

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Zvezdan Petkovic <zpetkovic@acm.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 10:32:41 +02:00
Damien Lejay
e32465190c CI: Add Lychee CI test to check for broken links
closes: #17879

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 10:28:58 +02:00
Damien Lejay
32d6bd6df2 runtime(doc): remove dead links
related: #17879

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 10:28:16 +02:00
Yee Cheng Chin
8f9de4991e patch 9.1.1623: Buffer menu does not handle unicode names correctly
Problem:  Buffer menu does not handle unicode names correctly
          (after v9.1.1622)
Solution: Fix the BMHash() function (Yee Cheng Chin)

The Buffers menu uses a BMHash() function to generate a sortable number
to be used for the menu index. It used a naive (and incorrect) way of
encoding multiple ASCII values into a single integer, but assumes each
character to be only in the ASCII 32-96 range. This means if we use
non-ASCII file names (e.g. Unicode values like CJK or emojis) we get
integer underflow and overflow, causing the menu index to wrap around.
Vim's GUI implementations internally use a signed 32-bit integer for the
`gui_mch_add_menu_item()` function and so we need to make sure the menu
index is in the (0, 2^31-1) range.

To do this, if the file name starts with a non-ASCII value, we just use
the first character's value and set the high bit so it sorts after the
other ASCII ones. Otherwise, we just take the first 5 characters, and
use 5 bit for each character to encode a 30-bit number that can be
sorted.

This means Unicode file names won't be sorted beyond the first
character. This is likely going to be fine as there are lots of ways to
query buffers.

related: #17403
closes: #17928

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 10:09:38 +02:00
Yee Cheng Chin
cda0d17f59 patch 9.1.1622: Patch v9.1.1432 causes performance regressions
Problem:  Patch v9.1.1432 causes performance regressions
Solution: Revert "patch 9.1.1432: GTK GUI: Buffer menu does not handle
          unicode correctly" (Yee Cheng Chin).

This reverts commit 08896dd330.

The previous change to support Unicode characters properly in the
buffers menu resorted to removing all buffer menus and re-add the
buffers after doing a sort, per each buffer addition. This was quite
slow because if Vim is trying to load in multiple buffers at once (e.g.
when loading a session) this scales in O(n^2) and Vim can freeze for
dozens of seconds when adding a few hundred buffers.

related: #17405
related: #17928
fixes: #17897

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 10:05:29 +02:00
Girish Palya
da9c966893 patch 9.1.1621: flicker in popup menu during cmdline autocompletion
Problem:  When the popup menu (PUM) occupies more than half the screen
          height, it flickers whenever a character is typed or erased.
          This happens because the PUM is cleared and the screen is
          redrawn before a new PUM is rendered. The extra redraw between
          menu updates causes visible flicker.
Solution: A complete, non-hacky fix would require removing the
          CmdlineChanged event from the loop and letting autocompletion
          manage the process end-to-end. This is because screen redraws
          after any cmdline change are necessary for other features to
          work.
          This change modifies wildtrigger() so that the next typed
          character defers the screen update instead of redrawing
          immediately. This removes the intermediate redraw, eliminating
          flicker and making cmdline autocompletion feel smooth
          (Girish Palya).

Trade-offs:
This behavior change in wildtrigger() is tailored specifically for
:h cmdline-autocompletion. wildtrigger() now has no general-purpose use
outside this scenario.

closes: #17932

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 09:55:18 +02:00
Dietrich Moerman
4fca92faa2 patch 9.1.1620: filetype: composer.lock and symfony.lock files not recognized
Problem:  filetype: composer.lock and symfony.lock files not recognized
Solution: Detect composer.lock and symfony.lock files as json filetype
          (Dietrich Moerman)

closes: #17945

Signed-off-by: Dietrich Moerman <dietrich.moerman@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 09:44:42 +02:00
zeertzjq
b362995430 patch 9.1.1619: Incorrect E535 error message
Problem:  Incorrect E535 error message (after 9.1.1603).
Solution: Don't use transchar(), as the character is always printable
          (zeertzjq).

closes: #17948

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 09:41:50 +02:00
veotos
fc3c204bbe runtime(doc): Fix style and typos in builtin.txt and usr_41.txt
- Reformat parts to fit into 80 column window.
- Fix example with mandatory call with a range.
  https://github.com/vim/vim/discussions/17950#discussioncomment-14055687
- Remove some duplicate information

closes: #17949

Signed-off-by: veotos <veotos@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 09:38:01 +02:00
Robert Muir
8e2a229189 patch 9.1.1618: completion: incorrect selected index returned from complete_info()
Problem:  completion: incorrect selected index returned from
          complete_info()
Solution: Return the index into "items" and restore the previous
          behaviour (Robert Muir).

complete_info() returned an incorrect selected index after
0ac1eb3555 (Patch v9.1.1311). Effectively
it became an index into "matches" instead of "items". Return the index
into "items" by default to restore the previous behavior, unless
"matches" was requested.

closes: #17952

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Robert Muir <rmuir@apache.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 09:19:36 +02:00
Yegappan Lakshmanan
1434ea03b1 patch 9.1.1617: Vim9: some error messages can be improved
Problem:  Vim9: some error messages can be improved
Solution: Improve error messages when parsing generic function type
          arguments (Yegappan Lakshmanan).

closes: #17957

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 09:15:03 +02:00
Hirohito Higashi
57eb1d496b runtime(doc): Tweak documentation style
closes: #17959

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 09:12:46 +02:00
Christian Brabandt
eeef7c7743 patch 9.1.1616: xxd: possible buffer overflow with bitwise output
Problem:  xxd: possible buffer overflow with bitwise output
          (after v9.1.1459, Xudong Cao)
Solution: Update LLEN_NO_COLOR macro definition for the max line output
          (using bitwise output -b)

fixes: #17944
closes: #17947

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 00:06:51 +02:00
Christian Brabandt
887b4981e7 patch 9.1.1615: diff format erroneously detected
Problem:  diff format erroneously detected
          (Tomáš Janoušek)
Solution: Make the regex to detect normal diff format a bit stricter,
          while at it, fix wrong test content from patch v9.1.1606

fixes: #17946

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-10 00:01:21 +02:00
Yegappan Lakshmanan
f56f490ca2 patch 9.1.1614: Vim9: possible variable type change
Problem:  Vim9: possible variable type change when using closure in a
          for loop (Maxim Kim)
Solution: Use unwind_locals(..., TRUE) (Yegappan Lakshmanan)

fixes: #17844
closes: #17951

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-09 23:55:34 +02:00
Christian Brabandt
a2bb21a895 patch 9.1.1613: tests: test_search leaves a few swapfiles behind
Problem:  tests: test_search leaves a few swapfiles behind
Solution: Use :bw! instead of :close to close the swapfile at the end of
          the test.

related: #17933

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-09 23:49:47 +02:00
Christian Brabandt
c03990d30f patch 9.1.1612: Ctrl-G/Ctrl-T do not ignore the end search delimiter
Problem:  Ctrl-G/Ctrl-T does not ignore the end search delimiter
          (irisjae)
Solution: Check if the pattern ends with a search delimiter and ignore
          it, unless it is part of the pattern.

fixes: #17895
closes: #17933

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-09 23:47:01 +02:00
Áron Hárnási
c43a0614d4 patch 9.1.1611: possible undefined behaviour in mb_decompose()
Problem:  possible undefined behaviour in mb_decompose(), when using the
          same pointer as argument several times
Solution: use separate assignments to avoid reading and writing the same
          object at the same time (Áron Hárnási)

closes: #17953

Signed-off-by: Áron Hárnási <aron.harnasi@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-09 23:43:13 +02:00
Doug Kearns
c65643cbec runtime(vim): Update ftplugin, fix option variable 'keywordprg' matching
- Match &option, and &[lg]:option variables.
- Match Ex commands after :bar.
- Fix matching of pre and post context text.
- Style - use '..' for string concatenation.

fixes #17567
closes: #17653

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-09 23:41:21 +02:00
D. Ben Knoble
7270a5a843 runtime(racket): update Racket runtime files
This brings the upstream files to commit 9dc3bd3 (ftplugin: escape Vim
special characters when opening docs, 2025-08-09). Note that not all
upstream files are included.

closes: #17956

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-09 23:38:07 +02:00
RestorerZ
7f8ad9b374 translation: Generate year for MS Windows differently
Commit 22fc41f1f7 used wmic to generate
the year, however it may not always be available. So use Powershell
directly.

related: #17855
closes: #17955

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-09 23:35:11 +02:00
zeertzjq
982cda6976 patch 9.1.1610: completion: hang or E684 when 'tagfunc' calls complete()
Problem:  completion: hang (after 9.1.1471) or E684 (after 9.1.1410)
          when 'tagfunc' calls complete().
Solution: Check if complete() has been called immediately after getting
          matches instead of in the next loop iteration (zeertzjq).

related: #1668
related: neovim/neovim#34416
related: neovim/neovim#35163
closes: #17929

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 16:05:23 +02:00
Christian Brabandt
bc51ec53d0 runtime(doc): Update CONTRIBUTING and clarify use of Vim9 script
related: #17871

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 15:49:43 +02:00
Girish Palya
761ea77670 patch 9.1.1609: complete: Heap-buffer overflow with complete function
Problem:  complete: Heap-buffer overflow with complete function
          (zeertzjq)
Solution: Do not let startcol become negative (Girish Palya).

fixes: #17907
closes: #17934

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 15:42:27 +02:00
Christian Brabandt
b89ff6c2e1 runtime(c): set omnifunc only for Vim, since it is Vim9 Script
related: #17871

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:45:25 +02:00
Maxim Kim
fa2bcbdebc runtime(vim): add simple vimscript complete function
closes: #17871

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:42:49 +02:00
Christian Brabandt
25599902ca runtime(script): Update Last Change Header
This was missing from Patch v9.1.1606
(Commit: eb2aebeb79)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:35:55 +02:00
Doug Kearns
126731c8fd patch 9.1.1608: No command-line completion for :unsilent {command}
Problem:  No command-line completion for :unsilent {command}.
Solution: Add missing command arg completion (Doug Kearns).
          (author)

Add completion tests for all command modifiers.

closes: #17524

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:34:04 +02:00
Hirohito Higashi
efd83d441b patch 9.1.1607: :apple command detected as :append
Problem:  :apple command detected as :append (dai475694450)
Solution: Disallow to define a custom command with lower-case letter,
          correctly detect :insert/:change/:append ex commands
          (Hirohito Higashi).

fixes: #17893
closes: #17930

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:25:27 +02:00
lacygoill
eb2aebeb79 patch 9.1.1606: filetype: a few more files are not recognized
Problem:  filetype: a few more files are not recognized
Solution: guess Mail, Info and Terminfo files by its content
          (lacygoill)

closes: #17880

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:17:57 +02:00
kuuote
8a65a49d50 patch 9.1.1605: cannot specify scope for chdir()
Problem:  Cannot specify scope for chdir()
Solution: Add optional scope argument (kuuote)

closes: #17888

Signed-off-by: kuuote <znmxodq1@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:09:25 +02:00
Girish Palya
d82c918e2f runtime(doc): Improve doc for cmdline-autocomplete
Maybe this was unnecessary, but saw this:
https://github.com/vim/vim/issues/17854

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 13:03:43 +02:00
Damien Lejay
46ec899026 runtime(doc): update develop assumptions
closes: #17892

Signed-off-by: Damien Lejay <damien@lejay.be>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 12:51:23 +02:00
Girish Palya
04c9e78cd3 patch 9.1.1604: completion: incsearch highlight might be lost
Problem:  completion: incsearch highlight might be lost after search
          completion (Hirohito Higashi)
Solution: Restore incsearch highlight after dismissing pum with Ctrl-E
          (Girish Palya)

related: #17870
closes: #17891

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 12:42:10 +02:00
RestorerZ
3be4ad76df runtime(optwin): Fix E94 when searching for the option-window
Problem:  When the parameter debug=msg is set and the command :option is
          entered, error E94 will be displayed.
Solution: Add a check for the existence of the buffer before getting the
          buffer number “option-window”.

Reproduce:

vim --clean -c "set debug=msg" -c "option"

    Error detected while processing command line..script D:\Programs\Vim\vim91\optwin.vim:
    line 9: E94: No matching buffer for option-window

closes: #17927

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 12:38:33 +02:00
Girish Palya
1bfe86a7d3 patch 9.1.1603: completion: cannot use autoloaded funcs in 'complete' F{func}
Problem:  completion: cannot use autoloaded funcs in 'complete' F{func}
          (Maxim Kim)
Solution: Make it work (Girish Palya)

fixes: #17869
closes: #17885

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 12:30:35 +02:00
Aliaksei Budavei
7132935413 runtime(java): Manage byte limits for variable-width lookbehind assertions
Raise the byte limits from 80 to 120 for "javaFuncDef" and
"java*CommentTitle"; and support selecting other arbitrary
values with
------------------------------------------------------------
	let g:java_lookbehind_byte_counts = {
		\ 'javaMarkdownCommentTitle': 240,
	\ }
------------------------------------------------------------

for related groups of syntax definitions, referring to their
names with dictionary keys.

Over-80-Byte-Limit Lookbehind Examples:
https://raw.githubusercontent.com/openjdk/jdk/refs/tags/jdk-24%2B36/src/java.base/share/classes/sun/security/x509/NamedX509Key.java [Lines 43 & 44]
https://raw.githubusercontent.com/openjdk/jdk/refs/tags/jdk-24%2B36/src/jdk.compiler/share/classes/com/sun/tools/javac/util/GraphUtils.java [Line 154]

closes: #17921

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 10:50:19 +02:00
Phạm Bình An
adfea9b4e6 runtime(help): Unset 'comments' and 'cms' options
Problem:  Vim's help file doesn't have any syntax for comments, but
          'comments' and 'commentstring' are still set in the help
          buffer.
Solution: Unset 'comments' and 'cms' in help buffer

closes: #17889

Signed-off-by: Phạm Bình An <111893501+brianhuster@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-08 10:44:18 +02:00
Christian Brabandt
6a6a44ffb5 runtime(netrw): netrw#BrowseX() needs to distinguish local and remote file
fixes: #17794

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 20:23:16 +02:00
rhysd
66d8d286cd runtime(typescript): Add syntax support for defer and arbitrary module identifiers
closes: #17911

Signed-off-by: rhysd <lin90162@yahoo.co.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 20:08:42 +02:00
RestorerZ
22fc41f1f7 translation: Auto-generate headers for the vim.pot file
closes: #17855

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 16:17:28 +02:00
Xudong Zheng
d305729bc5 patch 9.1.1602: filetype: requirements-*.txt files are not recognized
Problem:  filetype: requirements-*.txt files are not recognized
Solution: Detect requirements-*.txt files as requirements filetype
          (Xudong Zheng).

References:
- https://github.com/search?q=path%3Arequirements-*.txt&type=code
- https://github.com/zephyrproject-rtos/zephyr/tree/v4.2.0/scripts

closes: #17894

Signed-off-by: Xudong Zheng <7pkvm5aw@slicealias.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:55:49 +02:00
Hirohito Higashi
6abe5e4904 patch 9.1.1601: Patch v8.1.0425 was wrong
Problem:  Patch v8.1.0425 was wrong
Solution: Revert that patch (Hirohito Higashi)

This is because the root cause was fixed in 8.1.0786 and a regression
occurred elsewhere.

related: #3455
related: #3830
fixes: #11558
closes: #17899

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:51:25 +02:00
veotos
c849b17e19 runtime(netrw): Use correct "=~#" for the netrw_sizestyle='H' option
Correct expression syntax to match case in if and if-else clauses.

related: #8535
closes: #17901

Signed-off-by: veotos <veotos@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:48:11 +02:00
Squibid
93f6454724 runtime(openscad): add a filetype plugin
closes: #17902

Signed-off-by: Squibid <me@zacharyscheiman.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:42:54 +02:00
Yee Cheng Chin
cad3b2421d patch 9.1.1600: using diff anchors with hidden buffers fails silently
Problem:  diff: using diff anchors with hidden buffers fails silently
Solution: Give specific error message for diff anchors when using hidden
          buffers (Yee Cheng Chin).

Diff anchors currently will fail to parse if a buffer used for diff'ing
is hidden. Previously it would just fail as the code assumes it would
not happen normally, but this is actually possible to do if `closeoff`
and `hideoff` are not set in diffopt. Git's default diff tool "vimdiff3"
also takes advantage of this.

This fix this properly would require the `{address}` parser to be
smarter about whether a particular address relies on window position or
not (e.g. the `'.` address requires an active window, but `'a` or `1234`
do not). Since hidden diff buffers seem relatively niche, just provide a
better error message / documentation for now. This could be improved
later if there's a demand for it.

related: #17615
closes: #17904

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:33:34 +02:00
Nir Lichtman
589aa284f6 runtime(javascript): add "as" as a reserved keyword to syntax script
closes: #17912

Signed-off-by: Nir Lichtman <nir@lichtman.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:30:42 +02:00
zeertzjq
9662f33480 patch 9.1.1599: :bnext doesn't go to unlisted help buffers
Problem:  :bnext doesn't go to unlisted help buffers when cycling
          through help buffers (after 9.1.0557).
Solution: Don't check if a help buffer is listed (zeertzjq).

From <https://github.com/vim/vim/issues/4478#issuecomment-498831057>:

> I think we should fix that, since once you get to a non-help buffer
> all unlisted buffers are skipped, thus you won't encounter another
> help buffer.

This implies that cycling through help buffers should work even if help
buffers are unlisted. Otherwise this part of :bnext isn't really useful,
as :h makes help buffers unlisted by default.

related: #4478
related: #15198
closes: #17913

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:24:29 +02:00
veotos
9c4de84b2d runtime(doc): Update ft-vim-syntax documentation
g:vimsyn_folding and g:vimsyn_embed regexps need to match case.

closes: #17914

Signed-off-by: veotos <veotos@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:22:04 +02:00
Furkan Sahin
a6e28b1d05 patch 9.1.1598: filetype: waybar config file is not recognized
Problem:  filetype: waybar config file is not recognized
Solution: Detect */waybar/config file as jsonc filetype
          (Furkan Sahin)

closes: #17915

Signed-off-by: Furkan Sahin <furkan-dev@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:13:21 +02:00
Christian Brabandt
47a668bbe8 patch 9.1.1597: CI reports leaks in libgtk3 library
Problem:  CI reports leaks in libgtk3 library
Solution: Add libgtk-3 library to leak suppression

Recently, CI started reporting leaks inside the GTK3 library, which cause
failures like here
https://github.com/vim/vim/actions/runs/16796766276/job/47572520887?pr=17922

So let's add libgtk-3*.so* to the leak suppression for the
gtk_init_check() function.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 15:01:19 +02:00
zeertzjq
615ad4ced1 patch 9.1.1596: tests: Test_search_wildmenu_iminsert() depends on help file
Problem:  tests: Test_search_wildmenu_iminsert() depends on help file
          (after 9.1.1594).
Solution: Set buffer text using setline() instead of loading help file.
          Add a test for another bug fixed by 9.1.1594 (zeertzjq).

related: #17870
closes: #17922

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 14:57:22 +02:00
Lane East
54fb7ba256 runtime(doc): remove mentioning of netrwSettings.vim
closes: #17925

Signed-off-by: Lane East <laneast@laneast.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-07 14:37:20 +02:00
Girish Palya
f7deb815b0 runtime(doc): fix typo at :h cmdline-autocompletion
The '?' needs to be escaped, because the autocommand is using
file-patterns (glob like) and not a regex). See :h file-pattern

closes: #17890

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 20:53:33 +02:00
Foxe Chen
bb99474ceb patch 9.1.1595: Wayland: non-portable use of select()
Problem:  Wayland: non-portable use of select()
Solution: Correctly set the timeval struct
          (Foxe Chen)

closes: #17886

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 20:38:33 +02:00
Girish Palya
66467cf5d8 patch 9.1.1594: completion: search completion throws errors
Problem:  completion: search completion throws errors, wrong placement
          of pum menu with 'imi'=1 (berggeist)
Solution: Fix those errors (Girish Palya)

fixes: #17858
closes: #17870

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 17:12:14 +02:00
Hirohito Higashi
bb0860abc9 runtime(doc): tweak option name notation further
related: #17857
closes: #17917

Signed-off-by: h-east <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 17:00:58 +02:00
zeertzjq
067adc1ff2 runtime(doc): add back bars for the '' mark
this was erroneously changed in commit
85cd509885

related: #17857

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 13:41:05 +02:00
lacygoill
c0b3c19120 runtime(vim): add gf support for import and packadd in ftplugin
closes: #17881

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 13:38:30 +02:00
lacygoill
9340aa1bf8 runtime(helptoc): add s keymap to split and jump to selected entry
closes: #17876

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 13:06:34 +02:00
Aliaksei Budavei
af2c8e256a runtime(syntax-tests): Break up non-ASCII over-75-byte-long lines
And anticipate occasional multibyte line wrapping owing to:
> A poorly rendered line may otherwise become wrapped when enough of
> spurious U+FFFD (0xEF 0xBF 0xBD) characters claim more columns than
> are available (75) and then invalidate line correspondence under test.

Observe that for "vim_ex_command.vim" another workaround is
chosen: the long line containing an only multibyte character
near its EOL is conversely made longer by padding and moving
the character to a separate _tail_ part of the wrapped line.
That is, the _head_ part of the line is all ASCII characters
and the wrapped _tail_ part is a mix of various characters
whose total byte count is within bounds.

Other unmodified tracked files of interest:
  java_lambda_expressions.java,
  java_lambda_expressions_signature.java,
  java_numbers.java,
  markdown_conceal.markdown,
  vim9_generic_function_example_set.vim

Also, remove stray U+FFFC (0xEF 0xBF 0xBC) characters.

Related to #16559 and #17704.

Reference:
0fde6aebdd/runtime/syntax/testdir/README.txt (L120-L123)

closes: #17868

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 12:50:30 +02:00
Emilien Breton
3769100a8e runtime(doc): fix mismatch between 'backspace' and |i_backspacing|
closes: #17867

Signed-off-by: Emilien Breton <bricktech2000@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 12:48:06 +02:00
Hirohito Higashi
85cd509885 runtime(doc): Use correct option-name tags
closes: #17857

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 12:44:36 +02:00
Ken Takata
02bbc8a706 CI: Update labeler.yml with correct netrw path
closes: #17916

Signed-off-by: Ken Takata <kentkt@csc.jp>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 11:44:38 +02:00
Hirohito Higashi
a7a2a2b5ae runtime(doc): Tweak documentation style
closes: #17862

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 11:43:45 +02:00
Christian Brabandt
5a2575b484 translation(uk): Fix wrong Ukrainian message translation
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 11:40:47 +02:00
Antonio Giovanni Colombo
96dab9c9b1 check.vim: Further improve po message checks
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 11:33:49 +02:00
Antonio Giovanni Colombo
e581227421 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-06 09:54:33 +02:00
Hirohito Higashi
27b61f20b7 patch 9.1.1593: Confusing error when compiling incomplete try block
Problem:  Confusing error when compiling incomplete try block
          (lacygoill)
Solution: Give better error messages (Hirohito Higashi)

fixes: #17833
closes: #17853

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-05 20:03:36 +02:00
Luca Saccarola
becf1844e0 runtime(misc): removing saccarosium from maintainer list
closes: #17848

Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-05 19:38:12 +02:00
Yegappan Lakshmanan
688ebe596d patch 9.1.1592: Vim9: crash with classes and garbage collection
Problem:  Vim9: crash with classes and garbage collection
          (Christian J. Robinson, after v9.1.1566)
Solution: When getting the references to an object, make sure the object
          is valid (Yegappan Lakshmanan)

closes: #17860

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-05 19:17:51 +02:00
Doug Kearns
ee865249b1 runtime(vim): Update base syntax, match Neovim builtin functions
Match Neovim functions when has("nvim") is true or g:vimsyn_vim_features
contains "nvim".

Fixes issue #17884.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
2025-08-04 22:25:27 +10:00
Doug Kearns
b88f9e4a04 runtime(vim): Update base syntax, fix :map termination in :command RHS
Ensure :map (and :abbreviate) terminate at | when included in :command
replacement strings containing commands separated by line continuations.

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
2025-08-01 22:20:15 +10:00
Aliaksei Budavei
0fde6aebdd CI: Manage multibyte characters in syntax tests
As reported in #16559, bytes of a multibyte character may
be written as separate U+FFFD characters in a ":terminal"
window on a busy machine.  The testing facilities currently
offer an optional filtering step to be carried out between
reading and comparing the contents of two screendump files
for each such file.  This filtering has been resorted to
(#14767 and #16560) in an attempt to unconditionally replace
known non-Latin-1 characters with an arbitrary substitute
ASCII character and avoid this rendering mishap leading to
syntax tests failures.  However, it has been overlooked at
the time that metadata description (in shorthand) to follow
spurious U+FFFD characters may be *distinct* and make the
remainder of such a line, ASCII characters and whatnot, also
unequal between compared screendump files.

While it is straightforward to adapt current filter files to
ignore the line characters after the leftmost U+FFFD,

> It is challenging and error-prone to keep up to date filter
> files because moving around examples in source files will
> likely make redundant some previously required filter files
> and, at the same time, it may require creating new filter
> files for the same source file; substituting one multibyte
> character for another multibyte character will also demand
> a coordinated change for filter files.

Besides, unconditionally dropping arbitrary parts of a line
is rather too blunt an instrument.  An alternative approach
is to not use the supported filtering for this purpose; let
a syntax test pass or fail initially; then *if* the same
failure is imminent, drop the leftmost U+FFFD and the rest
of the previously seen line (repeating it for all previously
seen unequal lines) before another round of file contents
comparing.  The obvious disadvantage with this filtering,
unconditional and otherwise, is that if there are consistent
failures for _other reasons_ and the unequal parts happen to
be after U+FFFDs, then spurious test passing can happen when
stars align for _a particular test runner_.

Hence syntax test authors should strive to write as little
significant text after multibyte characters as syntactically
permissible, write multibyte characters closer to EOL in
general, and make sure that their checked-in and published
"*.dump" files do not have any U+FFFDs.

It is also practical to refrain from attempting screendump
generation if U+FFFDs can already be discovered, and instead
try re-running from scratch the syntax test in hand, while
accepting other recently generated screendumps without going
through with new rounds of verification.

Reference:
https://github.com/vim/vim/pull/16470#issuecomment-2599848525

closes: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 20:08:52 +02:00
Aliaksei Budavei
43b99c9376 CI: Remove the file filters for syntax tests
These file filters are not sufficient to work around #16559
and are to be superseded by a more promising alternative.

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 20:07:47 +02:00
Aliaksei Budavei
624b75a272 CI(screendump): Support iterative filtering for screendump comparison
Before two screendumps are compared for equality by calling
"VerifyScreenDump()", parts of their contents can be omitted
from comparison by executing arbitrary Vim commands written
in a filter file that shares its basename with screendumps.
Sometimes, such filtering can only be too general, as more
context is required in order to decide what parts to touch.
Two new arbitrary functions are therefore hooked in the body
of "VerifyScreenDump()" for the purpose of probing into the
current context and applying iterative filtering as needed.
A paired-up public implementation of each function is also
provided to expedite a workaround for #16559:
------------------------------------------------------------
source util/screendump.vim
let opts = {
    \ 'FileComparisonPreAction':
	\ function('g:ScreenDumpDiscardFFFDChars'),
    \ 'NonEqualLineComparisonPostAction':
	\ function('g:ScreenDumpLookForFFFDChars'),
\ }
call g:VerifyScreenDump(buf, basename, opts)
------------------------------------------------------------

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 20:06:38 +02:00
Aliaksei Budavei
64329714c7 CI(screendump): Move an early-return test out of the loop
And express the established indentation style of the file in
its modeline.

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 20:05:37 +02:00
Aliaksei Budavei
25ea22439e CI: Include provenance in names of collected artifacts
The currently given names to the uploaded archives are too
common and require (often manual) renaming for downloaded
archives that belong to different CI runs/attempts of a PR
and/or different PRs.  Let's automatically disambiguate such
archives from one another by giving them more unique names
for convenience and future reference.

related: #17704

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 20:05:00 +02:00
Doug Kearns
cced80dcbb runtime(vim): Cleanup syntax tests
Improve formatting and naming consistency of the syntax tests.

closes: #17850

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 20:00:46 +02:00
Zoltan Arpadffy
e9d1259111 patch 9.1.1591: VMS support can be improved
Problem:  VMS support can be improved
Solution: Merge chagnes from Steven M. Schweda
          (Zoltan)

closes: #17810

Co-authored-by: Steven M. Schweda <sms@antinode.info>
Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 19:16:09 +02:00
Girish Palya
af9a7a04f1 patch 9.1.1590: cannot perform autocompletion
Problem:  cannot perform autocompletion
Solution: Add the 'autocomplete' option value
          (Girish Palya)

This change introduces the 'autocomplete' ('ac') boolean option to
enable automatic popup menu completion during insert mode. When enabled,
Vim shows a completion menu as you type, similar to pressing |i\_CTRL-N|
manually. The items are collected from sources defined in the
'complete' option.

To ensure responsiveness, this feature uses a time-sliced strategy:

- Sources earlier in the 'complete' list are given more time.
- If a source exceeds its allocated timeout, it is interrupted.
- The next source is then started with a reduced timeout (exponentially
  decayed).
- A small minimum ensures every source still gets a brief chance to
  contribute.

The feature is fully compatible with other |i_CTRL-X| completion modes,
which can temporarily suspend automatic completion when triggered.

See :help 'autocomplete' and :help ins-autocompletion for more details.

To try it out, use :set ac

You should see a popup menu appear automatically with suggestions. This
works seamlessly across:

- Large files (multi-gigabyte size)
- Massive codebases (:argadd thousands of .c or .h files)
- Large dictionaries via the `k` option
- Slow or blocking LSP servers or user-defined 'completefunc'

Despite potential slowness in sources, the menu remains fast,
responsive, and useful.

Compatibility: This mode is fully compatible with existing completion
methods. You can still invoke any CTRL-X based completion (e.g.,
CTRL-X CTRL-F for filenames) at any time (CTRL-X temporarily
suspends 'autocomplete'). To specifically use i_CTRL-N, dismiss the
current popup by pressing CTRL-E first.

---

How it works

To keep completion snappy under all conditions, autocompletion uses a
decaying time-sliced algorithm:

- Starts with an initial timeout (80ms).
- If a source does not complete within the timeout, it's interrupted and
  the timeout is halved for the next source.
- This continues recursively until a minimum timeout (5ms) is reached.
- All sources are given a chance, but slower ones are de-prioritized
  quickly.

Most of the time, matches are computed well within the initial window.

---

Implementation details

- Completion logic is mostly triggered in `edit.c` and handled in
  insexpand.c.

- Uses existing inc_compl_check_keys() mechanism, so no new polling
  hooks are needed.

- The completion system already checks for user input periodically; it
  now also checks for timer expiry.

---

Design notes

- The menu doesn't continuously update after it's shown to prevent
  visual distraction (due to resizing) and ensure the internal list
  stays synchronized with the displayed menu.

- The 'complete' option determines priority—sources listed earlier get
  more time.

- The exponential time-decay mechanism prevents indefinite collection,
  contributing to low CPU usage and a minimal memory footprint.

- Timeout values are intentionally not configurable—this system is
  optimized to "just work" out of the box. If autocompletion feels slow,
  it typically indicates a deeper performance bottleneck (e.g., a slow
  custom function not using `complete_check()`) rather than a
  configuration issue.

---

Performance

Based on testing, the total roundtrip time for completion is generally
under 200ms. For common usage, it often responds in under 50ms on an
average laptop, which falls within the "feels instantaneous" category
(sub-100ms) for perceived user experience.

| Upper Bound (ms) | Perceived UX
|----------------- |-------------
| <100 ms          | Excellent; instantaneous
| <200 ms          | Good; snappy
| >300 ms          | Noticeable lag
| >500 ms          | Sluggish/Broken

---

Why this belongs in core:

- Minimal and focused implementation, tightly integrated with existing
  Insert-mode completion logic.
- Zero reliance on autocommands and external scripting.
- Makes full use of Vim’s highly composable 'complete' infrastructure
  while avoiding the complexity of plugin-based solutions.
- Gives users C native autocompletion with excellent responsiveness and
  no configuration overhead.
- Adds a key UX functionality in a simple, performant, and Vim-like way.

closes: #17812

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 18:57:04 +02:00
Maxim Kim
44309b9d08 runtime(ccomplete): return partial results on complete_check()
closes: #17838

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 18:30:14 +02:00
Christian Brabandt
b124b8d276 patch 9.1.1589: Cannot disable cscope interface using configure
Problem:  Cannot disable cscope interface using configure, because in
          feature.h FEAT_CSCOPE will always be enabled for huge builds
          (chdiza)
Solution: Don't define FEAT_CSCOPE from configure script but set the
          ENABLE_CSCOPE flag and check for the presence of that flag in
          feature.h

fixes: #17825
closes: #17842

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 18:27:53 +02:00
Yegappan Lakshmanan
a566a78029 patch 9.1.1588: Vim9: cannot split dict inside command block
Problem:  Vim9: cannot split dict inside command block
          (lacygoill)
Solution: Remove the current restriction (Yegappan Lakshmanan).

fixes: #17841
closes: #17845

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 18:23:58 +02:00
Luca Saccarola
0bda7830ac runtime(netrw): upstream snapshot v184
This change includes the following upstream commits:

- fix: remove black lines in directory listing
- fix: correctly create new file when using Lexplore
- refactor: remove print functionality

The main highlight is removing print functionality that was broken both
in neovim and vim.

closes: #17847

Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 18:20:59 +02:00
lacygoill
827483054d runtime(vim): fix various indentation issues
fixes: #15123
closes: #17849

Signed-off-by: lacygoill <lacygoill@lacygoill.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-25 18:16:09 +02:00
Christian Brabandt
1a2c4932a3 runtime(doc): use correct possessive form
as suggested by chdiza

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-24 19:51:04 +02:00
Foxe Chen
1a224edb2e patch 9.1.1587: Wayland: timeout not updated before select()
Problem:  Wayland: timeout not updated before select()
Solution: Always set timeval struct before select() (Foxe Chen).

closes: #17836

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-24 19:29:13 +02:00
Yegappan Lakshmanan
9239eadc71 patch 9.1.1586: Vim9: can define an enum/interface in a function
Problem:  Vim9: can define an enum/interface in a function
          (lacygoill)
Solution: Give an error when defining an enum or an interface inside a
          function (Yegappan Lakshmanan)

fixes: #17835
fixes: #17837
closes: #17837

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-24 19:14:51 +02:00
Doug Kearns
4de931daae runtime(vim): Update base syntax, match enum constructor type args
closes: #17840

Co-authored-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-24 18:54:16 +02:00
Doug Kearns
72473ce9f8 runtime(vim): Update base syntax, match generic functions
Match Vim9 generic functions, added in #17313.

closes: #17722

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 21:25:57 +02:00
Maxim Kim
3add0d5e75 runtime(ccomplete): use complete_check() in ccomplete plugin
Add complete_check() to ccomplete completion script to avoid UI hangs
and keep Vim responsive as ccomplete can be slow on huge files.

closes: #17826

Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 21:20:46 +02:00
Christian Brabandt
6e1c84cc4d runtime(editorconfig): drop mkzip.sh
this is not needed here, so let's drop mkzip.sh as requested per
e5e04306bf (diff-97da9d3de12ae57e69f1287447808b7c30be2d540b3e54dbbe12e7880b0611d0)

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 21:12:37 +02:00
Christoffer Aasted
48a3b146b4 patch 9.1.1585: Wayland: gvim still needs GVIM_ENABLE_WAYLAND
Problem:  Wayland: gvim still needs GVIM_ENABLE_WAYLAND
Solution: Drop the GVIM_ENABLE_WAYLAND code, always enable both X11 and
          Wayland GUI support (Christoffer Aasted)

closes: #17817

Signed-off-by: Christoffer Aasted <chr.aasted@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 21:05:51 +02:00
phanium
714671de35 runtime(misc): use :hor :term to ensure new term window is split horizontally
Problem:  :term splits new window above in vim, but in nvim it change
          the buffer for current window
Solution: :hor term to ensure consistent splitting for Vim and Neovim

closes: #17822

Signed-off-by: phanium <91544758+phanen@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 21:01:40 +02:00
Christian Brabandt
15dd6b4272 CI: increase test timeout to 30 minutes
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 20:45:10 +02:00
Hirohito Higashi
5608f3dc93 patch 9.1.1584: using ints as boolean type
Problem:  using ints as bool
Solution: Include stdbool.h and start using bool type directly
          (Hirohito Higashi)

This is a test to see if using the boolean types cause any issues.
If this change causes issues on any platform, please reach out.

closes: #17830

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 20:41:11 +02:00
Antonio Giovanni Colombo
2566a9f290 check.vim: Improve po message checks
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 20:37:21 +02:00
Antonio Giovanni Colombo
aa55185100 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 19:49:07 +02:00
Hirohito Higashi
2f4be00ca5 runtime(doc): Tweak documentation style in usr_90.txt
closes: #17832

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 19:44:57 +02:00
Olaf Seibert
9d5bb58637 patch 9.1.1583: gvim window lost its icons
Problem:  Since patch 9.1.1199 the gvim window no longer had _NET_WM_ICON
          nor WM_HINTS icon information, for example when not using a
	  Gnome or KDE desktop (after v9.1.1199)
Solution: Check if the icon theme as used in patch 1199 contains a gvim
          icon. If so, set the window's icon from that. Otherwise
	  use the previous method (Olaf Seibert)

fixes: #17703
closes: #17814

Signed-off-by: Olaf Seibert <rhialto@falu.nl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-23 19:35:59 +02:00
Christian Brabandt
d680d40539 patch 9.1.1582: style issue in vim9type.c and vim9generics.c
Problem:  style issue in vim9type.c and vim9generics.c
          (after v9.1.1581 and v9.1.1580)
Solution: Update Style and place opening brace on a new line.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-22 19:41:39 +02:00
Christian Brabandt
774fe9d8fc runtime(doc): remove mention of ftp.vim.org
fixes: #17819

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-22 19:39:54 +02:00
Hirohito Higashi
5711d76818 runtime(doc): Tweak documentation style
closes: #17824

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-22 19:01:17 +02:00
Doug Kearns
61cec2e761 runtime(doc): Fix typo in :help help-summary
fixes: #17816
closes: #17823

Co-authored-by: Alain Mosnier <alain@wanamoon.net>
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-22 18:19:09 +02:00
Lidong Yan
97194523d5 patch 9.1.1581: possible memory leak in vim9generics.c
Problem:  possible memory leak in vim9generics.c
Solution: Free ret_free if ga_grow() fails and before returning
          (Lidong Yan).

In parse_generic_func_type_args() at vim9generics.c, we allocate memory
in ret_name and should free it by calling vim_free(ret_free). If
ga_grow on gfatab->gfat_args failed, we forget to call vim_free(ret_free)
thus would cause a leak. Add vim_free(ret_free) before return NULL.

closes: #17821

Signed-off-by: Lidong Yan <yldhome2d2@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-22 18:15:57 +02:00
Lidong Yan
13e1af7de9 patch 9.1.1580: possible memory leak in vim9type.c
Problem:  possible memory leak in vim9type.c
Solution: Free tuple_types_ga if there was an error in
          type_type_add_types() (Lidong Yan)

In parse_type_tuple() at src/vim9type.c, we allocate memory
in `tuple_types_ga` by ga_grow(), but forget to free it when
tuple_type_add_types() fails. Replace `return NULL` with `goto on_err`
to fix leak.

closes: #17820

Signed-off-by: Lidong Yan <yldhome2d2@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-22 18:11:11 +02:00
1031 changed files with 16618 additions and 6182 deletions

View File

@@ -23,7 +23,7 @@ freebsd_task:
- sudo -u cirrus make test
on_failure:
test_artifacts:
name: "Cirrus-CI-freebsd-failed-tests"
name: "Cirrus-${CIRRUS_BUILD_ID}-freebsd-failed-tests"
path: |
runtime/indent/testdir/*.fail
runtime/syntax/testdir/failed/*

10
.github/MAINTAINERS vendored
View File

@@ -16,7 +16,6 @@ runtime/autoload/hcl.vim @gpanders
runtime/autoload/modula2.vim @dkearns
runtime/autoload/rubycomplete.vim @segfault @dkearns
runtime/autoload/rust.vim @lilyball
runtime/autoload/typst.vim @saccarosium
runtime/autoload/xmlformat.vim @chrisbra
runtime/autoload/dist/json.vim @habamax
runtime/colors/blue.vim @habamax @romainl @neutaaaaan
@@ -101,7 +100,6 @@ runtime/compiler/tidy.vim @dkearns
runtime/compiler/ts-node.vim @dkearns
runtime/compiler/tsc.vim @dkearns
runtime/compiler/typedoc.vim @dkearns
runtime/compiler/typst.vim @saccarosium
runtime/compiler/xmllint.vim @dkearns
runtime/compiler/xo.vim @dkearns
runtime/compiler/yamllint.vim @romainl
@@ -122,7 +120,6 @@ runtime/ftplugin/abnf.vim @A4-Tacks
runtime/ftplugin/antlr4.vim @jiangyinzuo
runtime/ftplugin/apache.vim @dubgeiser
runtime/ftplugin/arduino.vim @k-takata
runtime/ftplugin/asciidoc.vim @saccarosium
runtime/ftplugin/astro.vim @romainl
runtime/ftplugin/asy.vim @avidseeker
runtime/ftplugin/autohotkey.vim @telemachus
@@ -246,8 +243,8 @@ runtime/ftplugin/nu.vim @mrcjkb
runtime/ftplugin/octave.vim @dkearns
runtime/ftplugin/ondir.vim @jparise
runtime/ftplugin/opencl.vim @Freed-Wu
runtime/ftplugin/openscad.vim @squibid
runtime/ftplugin/openvpn.vim @ObserverOfTime
runtime/ftplugin/org.vim @saccarosium
runtime/ftplugin/pascal.vim @dkearns
runtime/ftplugin/pbtxt.vim @lakshayg
runtime/ftplugin/pdf.vim @tpope
@@ -314,7 +311,6 @@ runtime/ftplugin/tt2html.vim @petdance
runtime/ftplugin/twig.vim @ribru17
runtime/ftplugin/typescript.vim @dkearns
runtime/ftplugin/typescriptreact.vim @dkearns
runtime/ftplugin/typst.vim @saccarosium
runtime/ftplugin/uc.vim @ribru17
runtime/ftplugin/unison.vim @chuwy
runtime/ftplugin/v.vim @ribru17
@@ -411,7 +407,6 @@ runtime/indent/teraterm.vim @k-takata
runtime/indent/terraform.vim @gpanders
runtime/indent/thrift.vim @jiangyinzuo
runtime/indent/typescript.vim @HerringtonDarkholme
runtime/indent/typst.vim @saccarosium
runtime/indent/vroom.vim @dbarnett
runtime/indent/xml.vim @chrisbra
runtime/indent/zsh.vim @chrisbra
@@ -454,6 +449,7 @@ runtime/syntax/bzr.vim @hdima
runtime/syntax/cabal.vim @coot
runtime/syntax/cabalconfig.vim @coot
runtime/syntax/cabalproject.vim @coot
runtime/syntax/cangjie.vim @WuJunkai2004
runtime/syntax/cf.vim @ernstvanderlinden
runtime/syntax/chatito.vim @ObserverOfTime
runtime/syntax/chicken.vim @evhan
@@ -523,7 +519,6 @@ runtime/syntax/hog.vim @wtfbbqhax
runtime/syntax/hollywood.vim @sodero
runtime/syntax/html.vim @dkearns
runtime/syntax/htmlangular.vim @dlvandenberg
runtime/syntax/hyprlang.vim @saccarosium
runtime/syntax/i3config.vim @hiqua
runtime/syntax/icon.vim @dkearns
runtime/syntax/indent.vim @dkearns
@@ -578,7 +573,6 @@ runtime/syntax/omnimark.vim @kennypete
runtime/syntax/ondir.vim @jparise
runtime/syntax/opencl.vim @Freed-Wu
runtime/syntax/openvpn.vim @ObserverOfTime
runtime/syntax/org.vim @saccarosium
runtime/syntax/pacmanlog.vim @rpigott
runtime/syntax/pascal.vim @dkearns
runtime/syntax/pbtxt.vim @lakshayg

View File

@@ -7,7 +7,7 @@ runs:
uses: actions/upload-artifact@v4
with:
# Name of the artifact to upload.
name: ${{ github.workflow }}-${{ github.job }}-${{ join(matrix.*, '-') }}-failed-tests
name: GH-${{ github.run_id }}-${{ github.run_attempt }}-${{ github.job }}-${{ join(matrix.*, '-') }}-failed-tests
# A file, directory or wildcard pattern that describes what
# to upload.

2
.github/labeler.yml vendored
View File

@@ -146,7 +146,7 @@ plugin-netrw:
- changed-files:
- any-glob-to-any-file:
- 'runtime/plugin/netrwPlugin.vim'
- 'runtime/autoload/netrw*'
- 'runtime/pack/dist/opt/netrw/**'
xxd:
- all:

View File

@@ -85,10 +85,16 @@ jobs:
- features: normal
compiler: gcc
extra: [vimtags]
- features: huge
compiler: gcc
extra: [no_x11]
- features: huge
compiler: gcc
extra: [socketserver]
steps:
- name: Checkout repository from github
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Check Filelist (for packaging)
run: |
@@ -220,7 +226,7 @@ jobs:
tiny)
echo "TEST=testtiny"
if ${{ contains(matrix.extra, 'nogui') }}; then
echo "CONFOPT=--disable-gui"
CONFOPT="--disable-gui"
fi
;;
normal)
@@ -232,10 +238,16 @@ jobs:
PYTHON3_CONFOPT="--with-python3-stable-abi=3.8"
fi
# The ubuntu-24.04 CI runner does not provide a python2 package.
echo "CONFOPT=--enable-perlinterp=${INTERFACE} --enable-pythoninterp=no --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
CONFOPT="--enable-perlinterp=${INTERFACE} --enable-pythoninterp=no --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
;;
esac
if ${{ contains(matrix.extra, 'no_x11') }}; then
CONFOPT="${CONFOPT} --without-x --disable-gui"
fi
if ${{ contains(matrix.extra, 'socketserver') }}; then
CONFOPT="${CONFOPT} --enable-socketserver"
fi
if ${{ matrix.coverage == true }}; then
CFLAGS="${CFLAGS} --coverage -DUSE_GCOV_FLUSH"
echo "LDFLAGS=--coverage"
@@ -259,6 +271,7 @@ jobs:
echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
fi
echo "CFLAGS=${CFLAGS}"
echo "CONFOPT=${CONFOPT}"
# Disables GTK attempt to integrate with the accessibility service that does run in CI.
echo "NO_AT_BRIDGE=1"
) >> $GITHUB_ENV
@@ -315,7 +328,7 @@ jobs:
fi
- name: Test
timeout-minutes: 25
timeout-minutes: 30
run: |
make ${SHADOWOPT} ${TEST}
@@ -382,7 +395,7 @@ jobs:
steps:
- name: Checkout repository from github
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Install packages
if: matrix.features == 'huge'
@@ -572,7 +585,7 @@ jobs:
release: false
- name: Checkout repository from github
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Create a list of download URLs
shell: cmd

View File

@@ -44,7 +44,7 @@ jobs:
steps:
- name: Checkout repository from github
uses: actions/checkout@v4
uses: actions/checkout@v5
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

View File

@@ -19,7 +19,7 @@ jobs:
steps:
- name: Checkout repository from github
if: env.TOKEN
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Download Coverity
if: env.TOKEN

15
.github/workflows/link-check.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
# .github/workflows/link-check.yml
name: Check Links
on:
workflow_dispatch:
schedule:
- cron: '0 3 * * 0' # Every Sunday at 03:00 UTC
jobs:
lychee:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run Lychee
uses: lycheeverse/lychee-action@v2
with:
args: --verbose --config ci/lychee.toml .

View File

@@ -48,7 +48,7 @@ approvers are happy with that particular change.
# Reporting issues
We use GitHub issues, but that is not a requirement. Writing to the Vim
We use GitHub [issues][17], but that is not a requirement. Writing to the Vim
mailing list is also fine.
Please use the GitHub issues only for actual issues. If you are not 100% sure
@@ -72,7 +72,8 @@ Or open [the todo file][todo list] on GitHub to see the latest version.
The latest version of these files can be obtained from the repository.
They are usually not updated with numbered patches. However, they may
or may not work with older Vim releases (since they may contain new features).
or may not work with older Vim releases (since they may depend on new
features).
If you find a problem with one of these files or have a suggestion for
improvement, please first try to contact the maintainer directly.
@@ -82,7 +83,18 @@ upstream repository. You may also check the [MAINTAINERS][11] file.
The maintainer will take care of issues and send updates to the Vim project for
distribution with Vim.
If the maintainer does not respond, contact the [vim-dev][0] mailing list.
If the maintainer does not respond, contact the [vim-dev][0] mailing list or
open an [issue][17] here.
Note: Whether or not to use Vim9 script is up to the maintainer. For runtime
files maintained here, we aim to preserve compatibility with Neovim if
possible. Please wrap Vim9 script with a guard like this:
```vim
if has('vim9script')
" use Vim9 script implementation
[...]
endif
```
## Contributing new runtime files
@@ -95,6 +107,9 @@ PR with your changes against this repository here. For new filetypes, do not for
- add yourself as Maintainer to the top of file (again, keep the header similar to
other runtime files)
- add yourself to the [MAINTAINERS][11] file.
- add a guard `if has('vim9script')` if you like to maintain Neovim
compatibility but want to use Vim9 script (or restrict yourself to legacy Vim
script)
# Translations
@@ -144,3 +159,4 @@ mailing list. For other questions please use the [Vi Stack Exchange][8] website,
[14]: https://github.com/vim/vim/blob/master/runtime/doc/syntax.txt
[15]: https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin
[16]: https://github.com/vim/vim/blob/master/runtime/doc/helphelp.txt
[17]: https://github.com/vim/vim/issues

View File

@@ -12,6 +12,7 @@ SRC_ALL = \
.github/workflows/ci.yml \
.github/workflows/codeql-analysis.yml \
.github/workflows/coverity.yml \
.github/workflows/link-check.yml \
.github/actions/test_artifacts/action.yml \
.github/dependabot.yml \
.gitignore \
@@ -24,6 +25,7 @@ SRC_ALL = \
ci/config.mk*.sed \
ci/if_ver*.vim \
ci/if_feat_check.vim \
ci/lychee.toml \
ci/setup-xvfb.sh \
ci/setup-sway.sh \
ci/remove_snap.sh \
@@ -80,6 +82,7 @@ SRC_ALL = \
src/findfile.c \
src/float.c \
src/fold.c \
src/fuzzy.c \
src/getchar.c \
src/gc.c \
src/globals.h \
@@ -289,6 +292,7 @@ SRC_ALL = \
src/proto/findfile.pro \
src/proto/float.pro \
src/proto/fold.pro \
src/proto/fuzzy.pro \
src/proto/getchar.pro \
src/proto/gc.pro \
src/proto/gui.pro \

47
ci/lychee.toml Normal file
View File

@@ -0,0 +1,47 @@
############################# Runtime #############################
# Reasonable concurrency to avoid rate-limiting small hosts.
max_concurrency = 14
# File extensions to scan
extensions = ["c", "h", "md", "html", "txt"]
############################# Requests ############################
# Accepted status codes
# - Include 429 (Too Many Requests) to avoid marking throttled links as dead.
accept = ["100..=103", "200..=299", "429"]
# Retry each request a few times on transient network errors
retries = 2
retry_wait_time = 2
# Timeout per request in seconds
timeout = 20
############################# Exclusions ##########################
exclude = [
'^https?://sys/file$',
'^file://.*',
'^https?://(www\.)?badges\.debian\.net/.*$',
'^https?://(www\.)?repology\.org/.*$',
'^https?://scan\.coverity\.com/.*$',
'^https?://(www\.)?img\.shields\.io/.*$',
'^https?://(www\.)?fossies\.org/.*$',
'^https?://(www\.)?adobe\.com.*$',
'^https?://(www\.)?google\.com.*$',
'^https?://(www\.)?forum\.vmssoftware\.com/.*$',
'^http://vim\.sourceforge\.net/scripts/script\.php\?script_id=40$',
'^https://is\.gd/.*$',
'^https://wiki\.contextgarden\.net/Vim$',
'^https://github\.com/you/foobar\.git$',
'^https?://flatassembler\.net',
'^https?://www\.fleiner\.com/vim/download.html',
]
# Lychee only reads UTF-8 files
exclude_path = [
'src/po',
'src/testdir',
]

View File

@@ -3,7 +3,7 @@ vim9script noclear
# Vim completion script
# Language: C
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2024 Jun 06
# Last Change: 2025 Jul 24
# Rewritten in Vim9 script by github user lacygoill
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
@@ -121,6 +121,10 @@ export def Complete(findstart: bool, abase: string): any # {{{1
endif
endwhile
if complete_check()
return v:none
endif
# Find the variable items[0].
# 1. in current function (like with "gd")
# 2. in tags file(s) (like with ":tag")
@@ -135,6 +139,9 @@ export def Complete(findstart: bool, abase: string): any # {{{1
# Handle multiple declarations on the same line.
var col2: number = col - 1
while line[col2] != ';'
if complete_check()
return res
endif
--col2
endwhile
line = line[col2 + 1 :]
@@ -145,6 +152,9 @@ export def Complete(findstart: bool, abase: string): any # {{{1
# declaration.
var col2: number = col - 1
while line[col2] != ','
if complete_check()
return res
endif
--col2
endwhile
if line[col2 + 1 : col - 1] =~ ' *[^ ][^ ]* *[^ ]'
@@ -215,6 +225,9 @@ export def Complete(findstart: bool, abase: string): any # {{{1
res = []
for i: number in len(diclist)->range()
if complete_check()
return res
endif
# New ctags has the "typeref" field. Patched version has "typename".
if diclist[i]->has_key('typename')
res = res->extend(diclist[i]['typename']->StructMembers(items[1 :], true))
@@ -246,6 +259,9 @@ export def Complete(findstart: bool, abase: string): any # {{{1
var last: number = len(items) - 1
var brackets: string = ''
while last >= 0
if complete_check()
return res
endif
if items[last][0] != '['
break
endif
@@ -311,6 +327,9 @@ def Dict2info(dict: dict<any>): string # {{{1
# Use all the items in dictionary for the "info" entry.
var info: string = ''
for k: string in dict->keys()->sort()
if complete_check()
return info
endif
info ..= k .. repeat(' ', 10 - strlen(k))
if k == 'cmd'
info ..= dict['cmd']
@@ -346,6 +365,9 @@ def ParseTagline(line: string): dict<any> # {{{1
endwhile
endif
for i: number in range(n + 1, len(l) - 1)
if complete_check()
return d
endif
if l[i] == 'file:'
d['static'] = 1
elseif l[i] !~ ':'
@@ -441,6 +463,9 @@ def Nextitem( # {{{1
# Try to recognize the type of the variable. This is rough guessing...
var res: list<dict<string>>
for tidx: number in len(tokens)->range()
if complete_check()
return res
endif
# Skip tokens starting with a non-ID character.
if tokens[tidx] !~ '^\h'
@@ -467,6 +492,11 @@ def Nextitem( # {{{1
# Use the tags file to find out if this is a typedef.
var diclist: list<dict<any>> = taglist('^' .. tokens[tidx] .. '$')
for tagidx: number in len(diclist)->range()
if complete_check()
return res
endif
var item: dict<any> = diclist[tagidx]
# New ctags has the "typeref" field. Patched version has "typename".
@@ -559,6 +589,9 @@ def StructMembers( # {{{1
endif
if !cached
while 1
if complete_check()
return []
endif
execute 'silent! keepjumps noautocmd '
.. n .. 'vimgrep ' .. '/\t' .. typename .. '\(\t\|$\)/j '
.. fnames
@@ -581,6 +614,9 @@ def StructMembers( # {{{1
var idx: number = 0
var target: string
while 1
if complete_check()
return []
endif
if idx >= len(items)
target = '' # No further items, matching all members
break
@@ -619,6 +655,9 @@ def StructMembers( # {{{1
# Skip over next [...] items
++idx
while 1
if complete_check()
return matches
endif
if idx >= len(items)
return matches # No further items, return the result.
endif
@@ -646,6 +685,9 @@ def SearchMembers( # {{{1
# When "all" is true find all, otherwise just return 1 if there is any member.
var res: list<dict<string>>
for i: number in len(matches)->range()
if complete_check()
return res
endif
var typename: string = ''
var line: string
if matches[i]->has_key('dict')

View File

@@ -4,7 +4,7 @@ vim9script
# Invoked from "scripts.vim" in 'runtimepath'
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2025 Apr 24
# Last Change: 2025 Aug 09
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
export def DetectFiletype()
@@ -264,6 +264,7 @@ def DetectFromText(line1: string)
# ELM Mail files
elseif line1 =~ '^From \([a-zA-Z][a-zA-Z_0-9\.=-]*\(@[^ ]*\)\=\|-\) .* \(19\|20\)\d\d$'
|| line1 =~ '^\creturn-path:\s<.*@.*>$'
setl ft=mail
# Mason
@@ -286,6 +287,7 @@ def DetectFromText(line1: string)
# Diff file:
# - "diff" in first line (context diff)
# - "Only in " in first line
# - "34,35c34,35" normal diff format output
# - "--- " in first line and "+++ " in second line (unified diff).
# - "*** " in first line and "--- " in second line (context diff).
# - "# It was generated by makepatch " in the second line (makepatch diff).
@@ -294,7 +296,7 @@ def DetectFromText(line1: string)
# - "=== ", "--- ", "+++ " (bzr diff, common case)
# - "=== (removed|added|renamed|modified)" (bzr diff, alternative)
# - "# HG changeset patch" in first line (Mercurial export format)
elseif line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\>\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\|# HG changeset patch\)'
elseif line1 =~ '^\(diff\>\|Only in \|\d\+\(,\d\+\)\=[cda]\d\+\(,\d\+\)\=\>$\|# It was generated by makepatch \|Index:\s\+\f\+\r\=$\|===== \f\+ \d\+\.\d\+ vs edited\|==== //\f\+#\d\+\|# HG changeset patch\)'
|| (line1 =~ '^--- ' && line2 =~ '^+++ ')
|| (line1 =~ '^\* looking for ' && line2 =~ '^\* comparing to ')
|| (line1 =~ '^\*\*\* ' && line2 =~ '^--- ')
@@ -453,6 +455,12 @@ def DetectFromText(line1: string)
elseif line1 =~ '^#n\%($\|\s\)'
setl ft=sed
elseif line1 =~ '^#\s\+Reconstructed via infocmp from file:'
setl ft=terminfo
elseif line1 =~ '^File: .*\.info, Node: .*, \%(Next\|Prev\): .*, Up: \|This is the top of the INFO tree.'
setl ft=info
else
var lnum = 1
while getline(lnum) =~ "^? " && lnum < line("$")

View File

@@ -3,7 +3,7 @@ vim9script
# Vim runtime support library
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2025 Jan 29
# Last Change: 2025 Aug 15
export def IsSafeExecutable(filetype: string, executable: string): bool
if empty(exepath(executable))
@@ -121,6 +121,11 @@ def Viewer(): string
enddef
export def Open(file: string)
# disable shellslash for shellescape, required on Windows #17995
if exists('+shellslash') && &shellslash
&shellslash = false
defer setbufvar('%', '&shellslash', true)
endif
Launch($"{Viewer()} {shellescape(file, 1)}")
enddef

View File

@@ -2,12 +2,9 @@ vim9script
# Language: Vim script
# Maintainer: github user lacygoill
# Last Change: 2025 Apr 13
# Last Change: 2025 Jul 25
#
# Includes changes from The Vim Project:
# - 2024 Feb 09: Fix indent after literal Dict (A. Radev via #13966)
# - 2024 Nov 08: Fix indent after :silent! function (D. Kearns via #16009)
# - 2024 Dec 26: Fix indent for enums (Jim Zhou via #16293)
# NOTE: Whenever you change the code, make sure the tests are still passing:
#
@@ -23,9 +20,8 @@ def IndentMoreInBracketBlock(): number # {{{2
if get(g:, 'vim_indent', {})
->get('more_in_bracket_block', false)
return shiftwidth()
else
return 0
endif
return 0
enddef
def IndentMoreLineContinuation(): number # {{{2
@@ -35,9 +31,8 @@ def IndentMoreLineContinuation(): number # {{{2
if n->typename() == 'string'
return n->eval()
else
return n
endif
return n
enddef
# }}}2
@@ -145,7 +140,7 @@ const HEREDOC_OPERATOR: string = '\s=<<\s\@=\%(\s\+\%(trim\|eval\)\)\{,2}'
# A better regex would be:
#
# [^-+*/%.:# \t[:alnum:]\"|]\@=.\|->\@!\%(=\s\)\@!\|[+*/%]\%(=\s\)\@!
# [^-+*/%.:#[:blank:][:alnum:]\"|]\|->\@!\%(=\s\)\@!\|[+*/%]\%(=\s\)\@!
#
# But sometimes, it can be too costly and cause `E363` to be given.
const PATTERN_DELIMITER: string = '[-+*/%]\%(=\s\)\@!'
@@ -193,10 +188,9 @@ const MODIFIERS: dict<string> = {
patterns =<< trim eval END
argdo\>!\=
bufdo\>!\=
cdo\>!\=
[cl]f\=do\>!\=
folddoc\%[losed]\>
foldd\%[oopen]\>
ldo\=\>!\=
tabdo\=\>
windo\>
au\%[tocmd]\>!\=.*
@@ -290,9 +284,9 @@ patterns = []
for kwds: list<string> in BLOCKS
for kwd: string in kwds[0 : -2]
if MODIFIERS->has_key(kwd->Unshorten())
patterns += [$'\%({MODIFIERS[kwd]}\)\={kwd}']
patterns->add($'\%({MODIFIERS[kwd]}\)\={kwd}')
else
patterns += [kwd]
patterns->add(kwd)
endif
endfor
endfor
@@ -348,7 +342,8 @@ patterns =<< trim eval END
{'\'}<argd\%[elete]\s\+\*\s*$
\<[lt]\=cd!\=\s\+-\s*$
\<norm\%[al]!\=\s*\S\+$
\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)map!\=\s
\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)\=map!\=\s
\<set\%(\%[global]\|\%[local]\)\>.*,$
{PLUS_MINUS_COMMAND}
END
@@ -430,6 +425,9 @@ export def Expr(lnum = v:lnum): number # {{{2
elseif line_A.lnum->IsRightBelow('HereDoc')
var ind: number = b:vimindent.startindent
unlet! b:vimindent
if line_A.text =~ ENDS_BLOCK_OR_CLAUSE
return ind - shiftwidth()
endif
return ind
endif
@@ -444,9 +442,8 @@ export def Expr(lnum = v:lnum): number # {{{2
if line_A.text =~ BACKSLASH_AT_SOL
if line_B.text =~ BACKSLASH_AT_SOL
return Indent(line_B.lnum)
else
return Indent(line_B.lnum) + IndentMoreLineContinuation()
endif
return Indent(line_B.lnum) + IndentMoreLineContinuation()
endif
if line_A->AtStartOf('FuncHeader')
@@ -459,9 +456,8 @@ export def Expr(lnum = v:lnum): number # {{{2
unlet! b:vimindent
if line_A.text =~ ENDS_FUNCTION
return startindent
else
return startindent + shiftwidth()
endif
return startindent + shiftwidth()
endif
var past_bracket_block: dict<any>
@@ -542,8 +538,9 @@ export def Expr(lnum = v:lnum): number # {{{2
if line_B.text =~ STARTS_CURLY_BLOCK
return Indent(line_B.lnum) + shiftwidth() + IndentMoreInBracketBlock()
endif
elseif line_A.text =~ CLOSING_BRACKET_AT_SOL
if line_A.text =~ CLOSING_BRACKET_AT_SOL
var start: number = MatchingOpenBracket(line_A)
if start <= 0
return -1
@@ -565,9 +562,8 @@ export def Expr(lnum = v:lnum): number # {{{2
var block_start: number = SearchPairStart(start, middle, end)
if block_start > 0
return Indent(block_start)
else
return -1
endif
return -1
endif
var base_ind: number
@@ -591,8 +587,7 @@ export def Expr(lnum = v:lnum): number # {{{2
endif
endif
var ind: number = base_ind + Offset(line_A, line_B)
return [ind, 0]->max()
return base_ind + Offset(line_A, line_B)
enddef
def g:GetVimIndent(): number # {{{2
@@ -611,29 +606,31 @@ def Offset( # {{{2
if line_B->AtStartOf('FuncHeader')
&& IsInInterface()
return 0
endif
# increase indentation inside a block
elseif line_B.text =~ STARTS_NAMED_BLOCK
if line_B.text =~ STARTS_NAMED_BLOCK
|| line_B->EndsWithCurlyBlock()
# But don't indent if the line starting the block also closes it.
if line_B->AlsoClosesBlock()
return 0
endif
# Indent twice for a line continuation in the block header itself, so that
# we can easily distinguish the end of the block header from the start of
# the block body.
elseif (line_B->EndsWithLineContinuation()
if (line_B->EndsWithLineContinuation()
&& !line_A.isfirst)
|| (line_A.text =~ LINE_CONTINUATION_AT_SOL
&& line_A.text !~ PLUS_MINUS_COMMAND)
|| line_A.text->Is_IN_KeywordForLoop(line_B.text)
return 2 * shiftwidth()
else
return shiftwidth()
endif
return shiftwidth()
endif
# increase indentation of a line if it's the continuation of a command which
# started on a previous line
elseif !line_A.isfirst
if !line_A.isfirst
&& (line_B->EndsWithLineContinuation()
|| line_A.text =~ LINE_CONTINUATION_AT_SOL)
&& !(line_B->EndsWithComma() && line_A.lnum->IsInside('EnumBlock'))
@@ -653,12 +650,11 @@ def HereDocIndent(line_A: string): number # {{{2
# will need to be indented relative to the start of the heredoc. It
# must know where it starts; it needs the cache.
return 0
else
var ind: number = b:vimindent.startindent
# invalidate the cache so that it's not used for the next heredoc
unlet! b:vimindent
return ind
endif
var ind: number = b:vimindent.startindent
# invalidate the cache so that it's not used for the next heredoc
unlet! b:vimindent
return ind
endif
# In a non-trimmed heredoc, all of leading whitespace is semantic.
@@ -700,7 +696,7 @@ def HereDocIndent(line_A: string): number # {{{2
b:vimindent.startindent = new_startindent
endif
return [0, Indent(v:lnum) + b:vimindent.offset]->max()
return Indent(v:lnum) + b:vimindent.offset
enddef
def CommentIndent(): number # {{{2
@@ -727,9 +723,8 @@ def CommentIndent(): number # {{{2
endif
if getline(next) =~ ENDS_BLOCK
return ind + shiftwidth()
else
return ind
endif
return ind
enddef
def BracketBlockIndent(line_A: dict<any>, block: dict<any>): number # {{{2

View File

@@ -1,7 +1,7 @@
" Language: Typst
" Previous Maintainer: Gregory Anders
" Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Last Change: 2024 Dec 09
" Previous Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Maintainer: This runtime file is looking for a new maintainer.
" Last Change: 2025 Aug 05
" Based on: https://github.com/kaarmu/typst.vim
function! typst#indentexpr() abort

View File

@@ -0,0 +1,83 @@
vim9script
# Vim completion script
# Language: Vim script
# Maintainer: Maxim Kim <habamax@gmail.com>
# Last Change: 2025-08-10
#
# Usage:
# setlocal omnifunc=vimcomplete#Complete
#
# Simple complete function for Vim script
var trigger: string = ""
var prefix: string = ""
def GetTrigger(line: string): list<any>
var result = ""
var result_len = 0
if line =~ '->\k*$'
result = 'function'
elseif line =~ '\v%(^|\s+)\&\k*$'
result = 'option'
elseif line =~ '[\[(]\s*$'
result = 'expression'
elseif line =~ '[lvgsb]:\k*$'
result = 'var'
result_len = 2
else
result = getcompletiontype(line) ?? 'cmdline'
endif
return [result, result_len]
enddef
export def Complete(findstart: number, base: string): any
if findstart > 0
var line = getline('.')->strpart(0, col('.') - 1)
var keyword = line->matchstr('\k\+$')
var stx = synstack(line('.'), col('.') - 1)->map('synIDattr(v:val, "name")')->join()
if stx =~? 'Comment' || (stx =~ 'String' && stx !~ 'vimStringInterpolationExpr')
return -2
endif
var trigger_len: number = 0
[trigger, trigger_len] = GetTrigger(line)
if keyword->empty() && trigger->empty()
return -2
endif
prefix = line
return line->len() - keyword->len() - trigger_len
endif
var items = []
if trigger == 'function'
items = getcompletion(base, 'function')
->mapnew((_, v) => ({word: v, kind: 'v', menu: 'Function', dup: 0}))
elseif trigger == 'option'
items = getcompletion(base, 'option')
->mapnew((_, v) => ({word: v, kind: 'v', menu: 'Option', dup: 0}))
elseif trigger == 'var'
items = getcompletion(base, 'var')
->mapnew((_, v) => ({word: v, kind: 'v', menu: 'Variable', dup: 0}))
elseif trigger == 'expression'
items = getcompletion(base, 'expression')
->mapnew((_, v) => ({word: v, kind: 'v', menu: 'Expression', dup: 0}))
elseif trigger == 'command'
var commands = getcompletion(base, 'command')
->mapnew((_, v) => ({word: v, kind: 'v', menu: 'Command', dup: 0}))
var functions = getcompletion(base, 'function')
->mapnew((_, v) => ({word: v, kind: 'v', menu: 'Function', dup: 0}))
items = commands + functions
else
items = getcompletion(prefix, 'cmdline')
->mapnew((_, v) => ({word: v->matchstr('\k\+'), kind: 'v', dup: 0}))
if empty(items) && !empty(base)
items = getcompletion(base, 'expression')
->mapnew((_, v) => ({word: v, kind: 'v', menu: 'Expression', dup: 0}))
endif
endif
return items->empty() ? v:none : items
enddef

View File

@@ -0,0 +1,173 @@
vim9script
# Language: Vim9 script
# Contributers: @lacygoill
# Shane-XB-Qian
# Last Change: 2025 Aug 13
#
# Vim Script to handle
# :import, :packadd and :colorscheme
# lines and allows to easily jump to it using gf
#
# see runtime/ftplugin/vim.vim
# Interface {{{1
export def Find(editcmd: string) #{{{2
var curline: string = getline('.')
if curline =~ '^\s*\%(:\s*\)\=packadd!\=\s'
HandlePackaddLine(editcmd, curline)
return
endif
if curline =~ '^\s*\%(:\s*\)\=colo\%[rscheme]\s'
HandleColoLine(editcmd, curline)
return
endif
if curline =~ '^\s*\%(:\s*\)\=import\s'
HandleImportLine(editcmd, curline)
return
endif
try
execute 'normal! ' .. editcmd
catch
Error(v:exception)
endtry
enddef
#}}}1
# Core {{{1
def HandlePackaddLine(editcmd: string, curline: string) #{{{2
var pat: string = '\s*\%(:\s*\)\=packadd!\=\s\+\zs\S\+\>\ze'
var plugin: string = curline
->matchstr(pat)
->substitute('^vim-\|\.vim$', '', 'g')
if plugin == ''
try
execute 'normal! ' .. editcmd .. 'zv'
catch
Error(v:exception)
return
endtry
else
var split: string = editcmd[0] == 'g' ? 'edit' : editcmd[1] == 'g' ? 'tabedit' : 'split'
var files: list<string> = getcompletion($'plugin/{plugin}', 'runtime')
->map((_, fname: string) => fname->findfile(&rtp)->fnamemodify(':p'))
->filter((_, path: string): bool => filereadable(path))
if empty(files)
echo 'Could not find any plugin file for ' .. string(plugin)
return
endif
files->Open(split)
endif
enddef
def HandleColoLine(editcmd: string, curline: string) #{{{2
var pat: string = '\s*\%(:\s*\)\=colo\%[rscheme]\s\+\zs\S\+\>\ze'
var colo: string = curline->matchstr(pat)
if colo == ''
try
execute 'normal! ' .. editcmd .. 'zv'
catch
Error(v:exception)
return
endtry
else
var split: string = editcmd[0] == 'g' ? 'edit' : editcmd[1] == 'g' ? 'tabedit' : 'split'
var files: list<string> = getcompletion($'colors/{colo}', 'runtime')
->map((_, fname: string) => fname->findfile(&rtp)->fnamemodify(':p'))
->filter((_, path: string): bool => filereadable(path))
if empty(files)
echo 'Could not find any colorscheme file for ' .. string(colo)
return
endif
files->Open(split)
endif
enddef
def HandleImportLine(editcmd: string, curline: string) #{{{2
var fname: string
var import_cmd: string = '^\s*\%(:\s*\)\=import\s\+\%(autoload\s\+\)\='
var import_alias: string = '\%(\s\+as\s\+\w\+\)\=$'
var import_string: string = import_cmd .. '\([''"]\)\zs.*\ze\1' .. import_alias
var import_expr: string = import_cmd .. '\zs.*\ze' .. import_alias
# the script is referred to by its name in a quoted string
if curline =~ import_string
fname = curline->matchstr(import_string)
# the script is referred to by an expression
elseif curline =~ import_expr
try
sandbox fname = curline
->matchstr(import_expr)
->eval()
catch
Error(v:exception)
return
endtry
endif
var filepath: string
if fname->isabsolutepath()
filepath = fname
elseif fname[0] == '.'
filepath = (expand('%:h') .. '/' .. fname)->simplify()
else
var subdir: string = curline =~ '^\s*import\s\+autoload\>' ? 'autoload' : 'import'
# Matching patterns in `'wildignore'` can be slow.
# Let's set `{nosuf}` to `true` to avoid `globpath()` to be slow.
filepath = globpath(&runtimepath, subdir .. '/' .. fname, true, true)
->get(0, '')
endif
if !filepath->filereadable()
printf('E447: Can''t find file "%s" in path', fname)
->Error()
return
endif
var how_to_split: string = {
gF: 'edit',
"\<C-W>F": 'split',
"\<C-W>gF": 'tab split',
}[editcmd]
execute how_to_split .. ' ' .. filepath
enddef
def Open(what: any, how: string) #{{{2
var fname: string
if what->typename() == 'list<string>'
if what->empty()
return
endif
fname = what[0]
else
if what->typename() != 'string'
return
endif
fname = what
endif
execute $'{how} {fname}'
cursor(1, 1)
# If there are several files to open, put them into an arglist.
if what->typename() == 'list<string>'
&& what->len() > 1
var arglist: list<string> = what
->copy()
->map((_, f: string) => f->fnameescape())
execute $'arglocal {arglist->join()}'
endif
enddef
#}}}1
# Util {{{1
def Error(msg: string) #{{{2
echohl ErrorMsg
echomsg msg
echohl NONE
enddef
# vim: sw=4 et

View File

@@ -1,10 +1,9 @@
" Vim compiler file
" Language: Typst
" Previous Maintainer: Gregory Anders
" Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Previous Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Maintainer: This runtime file is looking for a new maintainer.
" Based On: https://github.com/kaarmu/typst.vim
" Last Change: 2024 Dec 09
" 2025 Mar 11 by the Vim Project (add comment for Dispatch)
" Last Change: 2025 Aug 05
if exists('current_compiler')
finish

View File

@@ -1,4 +1,4 @@
*builtin.txt* For Vim version 9.1. Last change: 2025 Jul 21
*builtin.txt* For Vim version 9.1. Last change: 2025 Aug 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -344,7 +344,7 @@ isinf({expr}) Number determine if {expr} is infinity value
(positive or negative)
islocked({expr}) Number |TRUE| if {expr} is locked
isnan({expr}) Number |TRUE| if {expr} is NaN
items({dict}) List key-value pairs in {dict}
items({expr}) List key-value pairs in {expr}
job_getchannel({job}) Channel get the channel handle for {job}
job_info([{job}]) Dict get information about {job}
job_setoptions({job}, {options}) none set options for {job}
@@ -1783,16 +1783,23 @@ charidx({string}, {idx} [, {countcc} [, {utf16}]])
Return type: |Number|
chdir({dir}) *chdir()*
Change the current working directory to {dir}. The scope of
the directory change depends on the directory of the current
window:
- If the current window has a window-local directory
(|:lcd|), then changes the window local directory.
- Otherwise, if the current tabpage has a local
directory (|:tcd|) then changes the tabpage local
directory.
- Otherwise, changes the global directory.
chdir({dir} [, {scope}]) *chdir()*
Changes the current working directory to {dir}. The scope of
the change is determined as follows:
If {scope} is not present, the current working directory is
changed to the scope of the current directory:
- If the window local directory (|:lcd|) is set, it
changes the current working directory for that scope.
- Otherwise, if the tab page local directory (|:tcd|) is
set, it changes the current directory for that scope.
- Otherwise, changes the global directory for that scope.
If {scope} is present, changes the current working directory
for the specified scope:
"window" Changes the window local directory. |:lcd|
"tabpage" Changes the tab page local directory. |:tcd|
"global" Changes the global directory. |:cd|
{dir} must be a String.
If successful, returns the previous working directory. Pass
this to another chdir() to restore the directory.
@@ -4314,13 +4321,13 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
customlist,{func} custom completion, defined via {func}
diff_buffer |:diffget| and |:diffput| completion
dir directory names
dir_in_path directory names in |'cdpath'|
dir_in_path directory names in 'cdpath'
environment environment variable names
event autocommand events
expression Vim expression
file file and directory names
file_in_path file and directory names in |'path'|
filetype filetype names |'filetype'|
file_in_path file and directory names in 'path'
filetype filetype names 'filetype'
filetypecmd |:filetype| suboptions
function function name
help help subjects
@@ -4340,7 +4347,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
shellcmd Shell command
shellcmdline Shell command line with filename arguments
sign |:sign| suboptions
syntax syntax file names |'syntax'|
syntax syntax file names 'syntax'
syntime |:syntime| suboptions
tag tags
tag_listfiles tags, file names
@@ -6303,20 +6310,25 @@ isnan({expr}) *isnan()*
Return type: |Number|
items({dict}) *items()*
Return a |List| with all the key-value pairs of {dict}. Each
|List| item is a list with two items: the key of a {dict}
entry and the value of this entry. The |List| is in arbitrary
order. Also see |keys()| and |values()|.
Example: >
for [key, value] in items(mydict)
echo key .. ': ' .. value
endfor
<
A |List|, a |Tuple| or a |String| argument is also supported.
In these cases, items() returns a List with the index and the
value at the index.
items({expr}) *items()*
Return a |List| with all key/index and value pairs of {expr}.
Each |List| item is a list with two items:
- for a |Dict|: the key and the value
- for a |List|, |Tuple| or |String|: the index and the value
The returned |List| is in arbitrary order for a |Dict|,
otherwise it's in ascending order of the index.
Also see |keys()| and |values()|.
Examples: >
let mydict = #{a: 'red', b: 'blue'}
for [key, value] in items(mydict)
echo $"{key} = {value}"
endfor
echo items([1, 2, 3])
echo items(('a', 'b', 'c'))
echo items("foobar")
<
Can also be used as a |method|: >
mydict->items()
<
@@ -6549,7 +6561,7 @@ libcall({libname}, {funcname}, {argument})
libcallnr({libname}, {funcname}, {argument})
Just like |libcall()|, but used for a function that returns an
int instead of a string.
{only in Win32 on some Unix versions, when the |+libcall|
{only in Win32 and some Unix versions, when the |+libcall|
feature is present}
Examples: >
:echo libcallnr("/usr/lib/libc.so", "getpid", "")
@@ -7343,14 +7355,16 @@ matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}])
[{'lnum': 3, 'byteidx': 0, 'text': 'a'}]
" Assuming line 4 in buffer 10 contains "tik tok"
:echo matchbufline(10, '\<\k\+\>', 1, 4)
[{'lnum': 4, 'byteidx': 0, 'text': 'tik'}, {'lnum': 4, 'byteidx': 4, 'text': 'tok'}]
[{'lnum': 4, 'byteidx': 0, 'text': 'tik'},
{'lnum': 4, 'byteidx': 4, 'text': 'tok'}]
<
If {submatch} is present and is v:true, then submatches like
"\1", "\2", etc. are also returned. Example: >
" Assuming line 2 in buffer 2 contains "acd"
:echo matchbufline(2, '\(a\)\?\(b\)\?\(c\)\?\(.*\)', 2, 2
\ {'submatches': v:true})
[{'lnum': 2, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}]
[{'lnum': 2, 'byteidx': 0, 'text': 'acd', 'submatches':
['a', '', 'c', 'd', '', '', '', '', '']}]
< The "submatches" List always contains 9 items. If a submatch
is not found, then an empty string is returned for that
submatch.
@@ -7412,9 +7426,6 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
given sequence.
limit Maximum number of matches in {list} to be
returned. Zero means no limit.
camelcase Use enhanced camel case scoring making results
better suited for completion related to
programming languages. Defaults to v:true.
If {list} is a list of dictionaries, then the optional {dict}
argument supports the following additional items:
@@ -7487,7 +7498,8 @@ matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
< results in [['testing'], [[0, 2, 6]], [99]] >
:echo matchfuzzypos(['clay', 'lacy'], 'la')
< results in [['lacy', 'clay'], [[0, 1], [1, 2]], [153, 133]] >
:echo [{'text': 'hello', 'id' : 10}]->matchfuzzypos('ll', {'key' : 'text'})
:echo [{'text': 'hello', 'id' : 10}]
\ ->matchfuzzypos('ll', {'key' : 'text'})
< results in [[{'id': 10, 'text': 'hello'}], [[2, 3]], [127]]
Return type: list<list<any>>
@@ -7531,15 +7543,18 @@ matchstrlist({list}, {pat} [, {dict}])
Example: >
:echo matchstrlist(['tik tok'], '\<\k\+\>')
[{'idx': 0, 'byteidx': 0, 'text': 'tik'}, {'idx': 0, 'byteidx': 4, 'text': 'tok'}]
[{'idx': 0, 'byteidx': 0, 'text': 'tik'},
{'idx': 0, 'byteidx': 4, 'text': 'tok'}]
:echo matchstrlist(['a', 'b'], '\<\k\+\>')
[{'idx': 0, 'byteidx': 0, 'text': 'a'}, {'idx': 1, 'byteidx': 0, 'text': 'b'}]
[{'idx': 0, 'byteidx': 0, 'text': 'a'},
{'idx': 1, 'byteidx': 0, 'text': 'b'}]
<
If "submatches" is present and is v:true, then submatches like
"\1", "\2", etc. are also returned. Example: >
:echo matchstrlist(['acd'], '\(a\)\?\(b\)\?\(c\)\?\(.*\)',
\ #{submatches: v:true})
[{'idx': 0, 'byteidx': 0, 'text': 'acd', 'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}]
[{'idx': 0, 'byteidx': 0, 'text': 'acd',
'submatches': ['a', '', 'c', 'd', '', '', '', '', '']}]
< The "submatches" List always contains 9 items. If a submatch
is not found, then an empty string is returned for that
submatch.
@@ -8949,8 +8964,8 @@ remote_send({server}, {string} [, {idvar}]) *remote_send()* *E241*
Note: Any errors will be reported in the server and may mess
up the display.
Examples: >
:echo remote_send("gvim", ":DropAndReply " .. file, "serverid") ..
\ remote_read(serverid)
:echo remote_send("gvim", ":DropAndReply " .. file,
\ "serverid") .. remote_read(serverid)
:autocmd NONE RemoteReply *
\ echo remote_read(expand("<amatch>"))
@@ -11185,7 +11200,7 @@ strridx({haystack}, {needle} [, {start}]) *strridx()*
strtrans({string}) *strtrans()*
The result is a String, which is {string} with all unprintable
characters translated into printable characters |'isprint'|.
characters translated into printable characters 'isprint'.
Like they are shown in a window. Example: >
echo strtrans(@a)
< This displays a newline in register a as "^@" instead of
@@ -11703,7 +11718,7 @@ taglist({expr} [, {filename}]) *taglist()*
Refer to |tag-regexp| for more information about the tag
search regular expression pattern.
Refer to |'tags'| for information about how the tags file is
Refer to 'tags' for information about how the tags file is
located by Vim. Refer to |tags-file-format| for the format of
the tags file generated by the different ctags tools.
@@ -12235,7 +12250,7 @@ virtcol({expr} [, {list} [, {winid}]]) *virtcol()*
last character. When "off" is omitted zero is used. When
Virtual editing is active in the current mode, a position
beyond the end of the line can be returned. Also see
|'virtualedit'|
'virtualedit'
If {list} is present and non-zero then virtcol() returns a
List with the first and last screen position occupied by the
@@ -12344,15 +12359,20 @@ wildtrigger() *wildtrigger()*
produce a beep when no matches are found and generally
operates more quietly. This makes it suitable for triggering
completion automatically, such as from an |:autocmd|.
*cmdline-autocompletion*
*cmdline-autocompletion*
Example: To make the completion menu pop up automatically as
you type on the command line, use: >
autocmd CmdlineChanged [:/?] call wildtrigger()
autocmd CmdlineChanged [:/\?] call wildtrigger()
set wildmode=noselect:lastused,full wildoptions=pum
<
To retain normal history navigation (up/down keys): >
cnoremap <Up> <C-U><Up>
cnoremap <Down> <C-U><Down>
<
To set an option specifically when performing a search, e.g.
to set 'pumheight': >
autocmd CmdlineEnter [/\?] set pumheight=8
autocmd CmdlineLeave [/\?] set pumheight&
<
Return value is always 0.
@@ -12901,12 +12921,12 @@ clipboard_working Compiled with 'clipboard' support and it can be used.
cmdline_compl Compiled with |cmdline-completion| support.
cmdline_hist Compiled with |cmdline-history| support.
cmdline_info Compiled with 'showcmd' and 'ruler' support.
comments Compiled with |'comments'| support.
comments Compiled with 'comments' support.
compatible Compiled to be very Vi compatible.
conpty Platform where |ConPTY| can be used.
cryptv Compiled with encryption support |encryption|.
cscope Compiled with |cscope| support.
cursorbind Compiled with |'cursorbind'| (always true)
cursorbind Compiled with 'cursorbind' (always true)
debug Compiled with "DEBUG" defined.
dialog_con Compiled with console dialog support.
dialog_con_gui Compiled with console and GUI dialog support.
@@ -12921,8 +12941,7 @@ emacs_tags Compiled with support for Emacs tags.
eval Compiled with expression evaluation support. Always
true, of course!
ex_extra |+ex_extra| (always true)
extra_search Compiled with support for |'incsearch'| and
|'hlsearch'|
extra_search Compiled with support for 'incsearch' and 'hlsearch'
farsi Support for Farsi was removed |farsi|.
file_in_path Compiled with support for |gf| and |<cfile>| (always
true)
@@ -13016,7 +13035,8 @@ python_dynamic Python 2.x interface is dynamically loaded. |has-python|
python3 Python 3.x interface available. |has-python|
python3_compiled Compiled with Python 3.x interface. |has-python|
python3_dynamic Python 3.x interface is dynamically loaded. |has-python|
python3_stable Python 3.x interface is using Python Stable ABI. |has-python|
python3_stable Python 3.x interface is using Python Stable ABI.
|has-python|
pythonx Python 2.x and/or 3.x interface available. |python_x|
qnx QNX version of Vim.
quickfix Compiled with |quickfix| support.
@@ -13027,6 +13047,7 @@ scrollbind Compiled with 'scrollbind' support. (always true)
showcmd Compiled with 'showcmd' support.
signs Compiled with |:sign| support.
smartindent Compiled with 'smartindent' support. (always true)
socketserver Compiled with socket server functionality. (Unix only)
sodium Compiled with libsodium for better crypt support
sound Compiled with sound support, e.g. `sound_playevent()`
spell Compiled with spell checking support |spell|.
@@ -13053,7 +13074,7 @@ textprop Compiled with support for |text-properties|.
tgetent Compiled with tgetent support, able to use a termcap
or terminfo file.
timers Compiled with |timer_start()| support.
title Compiled with window title support |'title'|.
title Compiled with window title support 'title'.
(always true)
toolbar Compiled with support for |gui-toolbar|.
ttyin input is a terminal (tty)
@@ -13061,7 +13082,7 @@ ttyout output is a terminal (tty)
unix Unix version of Vim. *+unix*
unnamedplus Compiled with support for "unnamedplus" in 'clipboard'
user_commands User-defined commands. (always true)
vartabs Compiled with variable tabstop support |'vartabstop'|.
vartabs Compiled with variable tabstop support 'vartabstop'.
vcon Win32: Virtual console support is working, can use
'termguicolors'. Also see |+vtp|.
vertsplit Compiled with vertically split windows |:vsplit|.

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 9.1. Last change: 2025 Jul 15
*change.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -34,13 +34,13 @@ For inserting text see |insert.txt|.
The <Del> key does not take a [count]. Instead, it
deletes the last character of the count.
See |:fixdel| if the <Del> key does not do what you
want. See |'whichwrap'| for deleting a line break
want. See 'whichwrap' for deleting a line break
(join lines).
*X* *dh*
["x]X Delete [count] characters before the cursor [into
register x] (not |linewise|). Does the same as "dh".
Also see |'whichwrap'|.
Also see 'whichwrap'.
*d*
["x]d{motion} Delete text that {motion} moves over [into register
@@ -609,11 +609,11 @@ comment (starting with '"') after the `:!` command.
={motion} Filter {motion} lines through the external program
given with the 'equalprg' option. When the 'equalprg'
option is empty (this is the default), use the
internal formatting function |C-indenting| and
|'lisp'|. But when 'indentexpr' is not empty, it will
be used instead |indent-expression|. When Vim was
compiled without internal formatting then the "indent"
program is used as a last resort.
internal formatting function |C-indenting| and 'lisp'.
But when 'indentexpr' is not empty, it will be used
instead |indent-expression|. When Vim was compiled
without internal formatting then the "indent" program
is used as a last resort.
*==*
== Filter [count] lines like with ={motion}.

View File

@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 9.1. Last change: 2025 Jul 21
*cmdline.txt* For Vim version 9.1. Last change: 2025 Aug 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -927,7 +927,7 @@ to insert special things while typing you can use the CTRL-R command. For
example, "%" stands for the current file name, while CTRL-R % inserts the
current file name right away. See |c_CTRL-R|.
Note: If you want to avoid the effects of special characters in a Vim script
Note: If you want to avoid the effects of special characters in a Vim script
you may want to use |fnameescape()|. Also see |`=|.
@@ -1325,8 +1325,10 @@ Example: >
:au CmdwinLeave : let &cpt = b:cpt_save
This sets 'complete' to use completion in the current window for |i_CTRL-N|.
Another example: >
:au CmdwinEnter [/?] startinsert
:au CmdwinEnter [/\?] startinsert
This will make Vim start in Insert mode in the command-line window.
Note: The "?" needs to be escaped, as this is a |file-pattern|. See also
|cmdline-autocompletion|.
*cmdwin-char*
The character used for the pattern indicates the type of command-line:

View File

@@ -1,4 +1,4 @@
*debug.txt* For Vim version 9.1. Last change: 2024 May 11
*debug.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -164,7 +164,7 @@ The Debugging Tools for Windows (including WinDbg) can be downloaded from
This includes the WinDbg debugger.
Visual C++ 2005 Express Edition can be downloaded for free from:
http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
https://visualstudio.microsoft.com/
=========================================================================
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*develop.txt* For Vim version 9.1. Last change: 2025 Jul 21
*develop.txt* For Vim version 9.1. Last change: 2025 Aug 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -291,42 +291,41 @@ initialized from words listed in COMMON items in the affix file, so that it
also works when starting a new file.
This isn't ideal, because the longer Vim is running the higher the counts
become. But in practice it is a noticeable improvement over not using the word
count.
become. But in practice it is a noticeable improvement over not using the
word count.
==============================================================================
3. Assumptions *design-assumptions*
The following sections define the portability and compatibility constraints that
all Vim code and build tools must adhere to.
The following sections define the portability and compatibility constraints
that all Vim code and build tools must adhere to.
MAKEFILES *assumptions-makefiles*
*POSIX.1-2001*
Vims main Makefiles target maximum portability, relying solely on features
defined in POSIX.1-2001 `make` and ignoring later POSIX standards or
GNU/BSD extensions. In practical terms, avoid:
Vim's main Makefiles target maximum portability, relying solely on features
defined in POSIX.1-2001 `make` and ignoring later POSIX standards or GNU/BSD
extensions. In practical terms, avoid:
% pattern rules
modern assignment (`:=`, `::=`) outside POSIX.1-2001
special targets (`.ONESHELL`, `.NOTPARALLEL`, `.SILENT`, )
order-only prerequisites (`|`) or automatic directory creation
GNU/BSD conditionals (`ifdef`, `ifndef`, `.for`/`.endfor`, )
- % pattern rules
- modern assignment (`:=`, `::=`) outside POSIX.1-2001
- special targets (`.ONESHELL`, `.NOTPARALLEL`, `.SILENT`, ...)
- order-only prerequisites (`|`) or automatic directory creation
- GNU/BSD conditionals (`ifdef`, `ifndef`, `.for`/`.endfor`, ...)
Since POSIX.1-2001 supports only traditional suffix rules, every object
built in a separate directory must have an explicit rule. For example:
Since POSIX.1-2001 supports only traditional suffix rules, every object built
in a separate directory must have an explicit rule. For example:
objects/evalbuffer.o: evalbuffer.c
$(CCC) -o $@ evalbuffer.c
This verbosity ensures that the same Makefile builds Vim unchanged with
the default `make` on Linux, *BSD, macOS, Solaris, AIX, HP-UX and virtually
any Unix-like OS.
This verbosity ensures that the same Makefile builds Vim unchanged with the
default `make` on Linux, *BSD, macOS, Solaris, AIX, HP-UX and virtually any
Unix-like OS.
Some platform-specific Makefiles (e.g., for Windows, NSIS, or Cygwin) may
use more advanced features when compatibility with basic make is not
required.
Some platform-specific Makefiles (e.g., for Windows, NSIS, or Cygwin) may use
more advanced features when compatibility with basic make is not required.
C COMPILER *assumptions-C-compiler*
@@ -339,21 +338,28 @@ Therefore, the latest ISO C standard we follow is:
`C95` (ISO/IEC 9899:1990/AMD1:1995)
In addition, the following two `C99` features are explicitly allowed:
`//` comments, as required by |style-comments|;
the `_Bool` type.
In addition, the following `C99` features are explicitly allowed:
- `//` comments, as required by |style-comments|;
- Mixed declarations and statements in a block;
- Variadic macros `(..., __VA_ARGS__)`;
- Trailing comma in `enum` lists;
- `_Bool` type (for `bool`, `true` and `false`);
- `__func__` predefined identifier;
- `inline` functions (use `static inline` for portability);
- Compound literals `(type){ initializer-list }`;
- Logical source lines up to 4095 characters.
Platform-specific code may use any newer compiler features supported on
that platform.
Platform-specific code may use any newer compiler features supported on that
platform.
SIZE OF VARIABLES *assumptions-variables*
char 8-bit signed
char_u 8-bit unsigned
int 32- or 64-bit signed (16-bit possible on legacy systems)
unsigned 32- or 64-bit unsigned
long at least 32-bit signed (large enough to hold a pointer)
We follow POSIX.1-2001 (SUSv3) for type sizes, which in practice means:
char_u 8-bit unsigned
int 32-bit or larger signed
unsigned 32-bit or larger unsigned
==============================================================================

View File

@@ -1,4 +1,4 @@
*diff.txt* For Vim version 9.1. Last change: 2025 Jul 26
*diff.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -461,7 +461,7 @@ Manually set two anchors using line numbers via buffer-local options: >
==============================================================================
6. Diff options *diff-options*
Also see |'diffopt'| and the "diff" item of |'fillchars'|.
Also see 'diffopt' and the "diff" item of 'fillchars'.
*diff-slow* *diff_translations*
For very long lines, the diff syntax highlighting might be slow, especially

View File

@@ -1,4 +1,4 @@
*digraph.txt* For Vim version 9.1. Last change: 2025 Feb 02
*digraph.txt* For Vim version 9.1. Last change: 2025 Aug 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1105,8 +1105,8 @@ char digraph hex dec official name ~
⌕ TR 2315 8981 TELEPHONE RECORDER
⌠ Iu 2320 8992 TOP HALF INTEGRAL
⌡ Il 2321 8993 BOTTOM HALF INTEGRAL
</ 2329 9001 LEFT-POINTING ANGLE BRACKET
〉 /> 232A 9002 RIGHT-POINTING ANGLE BRACKET
<[ 27E8 10040 LEFT MATHEMATICAL ANGLE BRACKET
⟩ ]> 27E9 10041 RIGHT MATHEMATICAL ANGLE BRACKET
␣ Vs 2423 9251 OPEN BOX
⑀ 1h 2440 9280 OCR HOOK
⑁ 3h 2441 9281 OCR CHAIR
@@ -1246,6 +1246,8 @@ char digraph hex dec official name ~
々 *_ 3005 12293 IDEOGRAPHIC ITERATION MARK
〆 ;_ 3006 12294 IDEOGRAPHIC CLOSING MARK
0_ 3007 12295 IDEOGRAPHIC NUMBER ZERO
〈 </ 3008 12296 LEFT ANGLE BRACKET
〉 /> 3009 12297 RIGHT ANGLE BRACKET
《 <+ 300A 12298 LEFT DOUBLE ANGLE BRACKET
》 >+ 300B 12299 RIGHT DOUBLE ANGLE BRACKET
「 <' 300C 12300 LEFT CORNER BRACKET

View File

@@ -1,4 +1,4 @@
*editing.txt* For Vim version 9.1. Last change: 2025 Jul 20
*editing.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1380,7 +1380,7 @@ present in 'cpoptions' and "!" is not used in the command.
:cd[!] {path} Change the current directory to {path}.
If {path} is relative, it is searched for in the
directories listed in |'cdpath'|.
directories listed in 'cdpath'.
Clear any window-local directory.
Does not change the meaning of an already opened file,
because its full path name is remembered. Files from

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 9.1. Last change: 2025 Jul 20
*eval.txt* For Vim version 9.1. Last change: 2025 Aug 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3312,7 +3312,7 @@ text...
CODE
<
*E121*
:let {var-name} .. List the value of variable {var-name}. Multiple
:let {var-name} ... List the value of variable {var-name}. Multiple
variable names may be given. Special names recognized
here: *E738*
g: global variables

View File

@@ -1,4 +1,4 @@
*filetype.txt* For Vim version 9.1. Last change: 2025 May 10
*filetype.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1063,8 +1063,18 @@ To disable: >
<
VIM *ft-vim-plugin*
The Vim filetype plugin defines mappings to move to the start and end of
functions with [[ and ]]. Move around comments with ]" and [".
The Vim filetype plugin defines the following mappings:
[[ move to the start of the previous function
]] move to the start of the next function
][ move to the end of the previous function
[] move to the end of the next function
]" move to the next (legacy) comment
[" move to the previous (legacy) comment
gf edit the file under the cursor
CTRL-W gf edit the file under the cursor in a new tab page
CTRL-W f edit the file under the cursor in a new window
The mappings can be disabled with: >
let g:no_vim_maps = 1

View File

@@ -1,4 +1,4 @@
*ft_ada.txt* For Vim version 9.1. Last change: 2024 Sep 29
*ft_ada.txt* For Vim version 9.1. Last change: 2025 Aug 06
ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
@@ -76,8 +76,8 @@ The Ada plug-in provides support for:
- user completion (|i_CTRL-X_CTRL-U|)
- tag searches (|tagsrch.txt|)
- Quick Fix (|quickfix.txt|)
- backspace handling (|'backspace'|)
- comment handling (|'comments'|, |'commentstring'|)
- backspace handling ('backspace')
- comment handling ('comments', 'commentstring')
The plug-in only activates the features of the Ada mode whenever an Ada
file is opened and adds Ada related entries to the main and pop-up menu.
@@ -197,7 +197,7 @@ g:gnat.Project_File string
*g:gnat.Make_Command*
g:gnat.Make_Command string
External command used for |g:gnat.Make()| (|'makeprg'|).
External command used for |g:gnat.Make()| ('makeprg').
*g:gnat.Pretty_Program*
g:gnat.Pretty_Program string
@@ -213,7 +213,7 @@ g:gnat.Tags_Command string
*g:gnat.Error_Format*
g:gnat.Error_Format string
Error format (|'errorformat'|)
Error format ('errorformat')
------------------------------------------------------------------------------
4.2 Dec Ada ~
@@ -243,11 +243,11 @@ g:decada.Unit_Name() function
*g:decada.Make_Command*
g:decada.Make_Command string
External command used for |g:decada.Make()| (|'makeprg'|).
External command used for |g:decada.Make()| ('makeprg').
*g:decada.Error_Format*
g:decada.Error_Format string
Error format (|'errorformat'|).
Error format ('errorformat').
==============================================================================
5. References ~

View File

@@ -1,4 +1,4 @@
*ft_sql.txt* For Vim version 9.1. Last change: 2022 Apr 06
*ft_sql.txt* For Vim version 9.1. Last change: 2025 Aug 10
by David Fishburn
@@ -168,7 +168,7 @@ with comments: >
1.4 Macros *sql-macros*
----------
Vim's feature to find macro definitions, |'define'|, is supported using this
Vim's feature to find macro definitions, 'define', is supported using this
regular expression: >
\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
@@ -239,13 +239,13 @@ buffer basis, at any time. The ftplugin/sql.vim file defines this function: >
Executing this function without any parameters will set the indent and syntax
scripts back to their defaults, see |sql-type-default|. If you have turned
off Vi's compatibility mode, |'compatible'|, you can use the <Tab> key to
off Vi's compatibility mode, 'compatible', you can use the <Tab> key to
complete the optional parameter.
After typing the function name and a space, you can use the completion to
supply a parameter. The function takes the name of the Vim script you want to
source. Using the |cmdline-completion| feature, the SQLSetType function will
search the |'runtimepath'| for all Vim scripts with a name containing 'sql'.
search the 'runtimepath' for all Vim scripts with a name containing 'sql'.
This takes the guess work out of the spelling of the names. The following are
examples: >
:SQLSetType
@@ -407,7 +407,7 @@ Here are some examples of the entries which are pulled from the syntax files: >
----------------
Dynamic mode populates the popups with data directly from a database. In
order for the dynamic feature to be enabled you must have the dbext.vim
plugin installed, (http://vim.sourceforge.net/script.php?script_id=356).
plugin installed, (https://www.vim.org/scripts/script.php?script_id=356).
Dynamic mode is used by several features of the SQL completion plugin.
After installing the dbext plugin see the dbext-tutorial for additional
@@ -491,7 +491,7 @@ depending on the syntax file you are using. The SQL Anywhere syntax file
Dynamic features
----------------
To take advantage of the dynamic features you must first install the
dbext.vim plugin (http://vim.sourceforge.net/script.php?script_id=356). It
dbext.vim plugin (https://www.vim.org/scripts/script.php?script_id=356). It
also comes with a tutorial. From the SQL completion plugin's perspective,
the main feature dbext provides is a connection to a database. dbext
connection profiles are the most efficient mechanism to define connection
@@ -755,7 +755,7 @@ Step 1
Begins by editing a Perl file. Vim automatically sets the filetype to
"perl". By default, Vim runs the appropriate filetype file
ftplugin/perl.vim. If you are using the syntax completion plugin by following
the directions at |ft-syntax-omni| then the |'omnifunc'| option has been set to
the directions at |ft-syntax-omni| then the 'omnifunc' option has been set to
"syntax#Complete". Pressing <C-X><C-O> will display the omni popup containing
the syntax items for Perl.
@@ -767,7 +767,7 @@ maps for SQL completion, see |sql-completion-maps|. Now these maps have
been created and the SQL completion plugin has been initialized. All SQL
syntax items have been cached in preparation. The SQL filetype script detects
we are attempting to use two different completion plugins. Since the SQL maps
begin with <C-C>, the maps will toggle the |'omnifunc'| when in use. So you
begin with <C-C>, the maps will toggle the 'omnifunc' when in use. So you
can use <C-X><C-O> to continue using the completion for Perl (using the syntax
completion plugin) and <C-C> to use the SQL completion features.

View File

@@ -1,4 +1,4 @@
*gui.txt* For Vim version 9.1. Last change: 2024 Nov 17
*gui.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -248,7 +248,7 @@ For older versions of XFree86 you must patch your X server. The following
page has a bit of information about using the Intellimouse on Linux as well as
links to the patches and X server binaries (may not have the one you need
though):
http://www.inria.fr/koala/colas/mouse-wheel-scroll/
(dead link) inria.fr/koala/colas/mouse-wheel-scroll/
==============================================================================
3. Mouse Control *gui-mouse*

View File

@@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 9.1. Last change: 2024 Jan 23
*gui_w32.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -394,7 +394,7 @@ printer installed this should also work: >
:w >>prn
Vim supports a number of standard MS-Windows features. Some of these are
detailed elsewhere: see |'mouse'|, |win32-hidden-menus|.
detailed elsewhere: see 'mouse', |win32-hidden-menus|.
*drag-n-drop-win32*
You can drag and drop one or more files into the Vim window, where they will

View File

@@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 9.1. Last change: 2024 Nov 17
*gui_x11.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -280,7 +280,7 @@ For "mwm" (Motif window manager) the line would be: >
Mouse Pointers Available in X11 ~
*X11_mouse_shapes*
By using the |'mouseshape'| option, the mouse pointer can be automatically
By using the 'mouseshape' option, the mouse pointer can be automatically
changed whenever Vim enters one of its various modes (e.g., Insert or
Command). Currently, the available pointers are:
@@ -321,8 +321,8 @@ stuff like -bg, -fg, etc). The ones that are supported are:
-fg -foreground {color} foreground color
-bg -background {color} background color
To set the font, see |'guifont'|. For GTK, there's also a menu option that
does this.
To set the font, see 'guifont'. For GTK, there's also a menu option that does
this.
Additionally, there are these command line arguments, which are handled by GTK
internally. Look in the GTK documentation for how they are used:
@@ -350,7 +350,7 @@ If you want to set the colors of remaining gui components (e.g., the
menubar, scrollbar, whatever), those are GTK specific settings and you
need to set those up in some sort of gtkrc file. You'll have to refer
to the GTK documentation, however little there is, on how to do this.
See http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html
See https://www.manpagez.com/html/gtk2/gtk2-2.24.24/gtk2-Resource-Files.php
for more information.
*gtk3-slow*
If you are using GTK3 and Vim appears to be slow, try setting the environment
@@ -519,7 +519,7 @@ of the normal GtkWindow. This enables Vim to act as a GTK+ plugin.
This really is a programmer's interface, and is of no use without a supporting
application to spawn the Vim correctly. For more details on GTK+ sockets, see
http://www.gtk.org/api/
https://www.gtk.org/docs/apis/index
Note that this feature requires the latest GTK version. GTK 1.2.10 still has
a small problem. The socket feature has not yet been tested with GTK+ 2 --
@@ -649,9 +649,7 @@ X11R5 with a library for X11R6 probably doesn't work (although the linking
won't give an error message, Vim will crash later).
*gui-wayland*
Initial support for the Wayland display server protocol has landed in patch
9.1.0064. To enable it, you need to set the environment variable
"$GVIM_ENABLE_WAYLAND" in your shell.
Support for the Wayland display server protocol has landed in patch 9.1.0064.
Note: The Wayland protocol is subject to some restrictions, so the following
functions won't work: |getwinpos()|, |getwinposx()|, |getwinposy()| and the
@@ -686,7 +684,7 @@ cut, copy and paste operations).
Of these three, Vim uses PRIMARY when reading and writing the "* register
(hence when the X11 selections are available, Vim sets a default value for
|'clipboard'| of "autoselect"), and CLIPBOARD when reading and writing the "+
'clipboard' of "autoselect"), and CLIPBOARD when reading and writing the "+
register. Vim does not access the SECONDARY selection.
This applies both to the GUI and the terminal version. For non-X11 systems

View File

@@ -1,4 +1,4 @@
*helphelp.txt* For Vim version 9.1. Last change: 2025 Jul 07
*helphelp.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -253,20 +253,21 @@ If you want to access an interactive table of contents, from any position in
the file, you can use the helptoc plugin. Load the plugin with: >vim
packadd helptoc
<
*HelpToc-mappings*
Then you can use the `:HelpToc` command to open a popup menu.
The latter supports the following normal commands: >
key | effect
----+---------------------------------------------------------
j | select next entry
k | select previous entry
J | same as j, and jump to corresponding line in main buffer
K | same as k, and jump to corresponding line in main buffer
c | select nearest entry from cursor position in main buffer
g | select first entry
G | select last entry
H | collapse one level
j | select next entry
J | same as j, and jump to corresponding line in main buffer
k | select previous entry
K | same as k, and jump to corresponding line in main buffer
L | expand one level
p | print current entry on command-line
@@ -274,6 +275,7 @@ The latter supports the following normal commands: >
| press multiple times to toggle feature on/off
q | quit menu
s | split window, and jump to selected entry
z | redraw menu with current entry at center
+ | increase width of popup menu
- | decrease width of popup menu

View File

@@ -1,4 +1,4 @@
*howto.txt* For Vim version 9.1. Last change: 2006 Apr 02
*howto.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35,8 +35,8 @@ How to ... *howdoi* *how-do-i* *howto* *how-to*
|object-motions| text-object motions
|various-motions| various motions
|object-select| text-object selection
|'whichwrap'| move over line breaks
|'virtualedit'| move to where there is no text
'whichwrap' move over line breaks
'virtualedit' move to where there is no text
|usr_27.txt| specify pattern for searches
|tags-and-searches| do tags and special searches
|29.4| search in include'd files used to find
@@ -44,12 +44,12 @@ How to ... *howdoi* *how-do-i* *howto* *how-to*
|K| look up manual for the keyword under cursor
|03.7| scroll
|'sidescroll'| scroll horizontally/sideways
|'scrolloff'| set visible context lines
'sidescroll' scroll horizontally/sideways
'scrolloff' set visible context lines
|mode-switching| change modes
|04.4| use Visual mode
|'insertmode'| start Vim in Insert mode
'insertmode' start Vim in Insert mode
|40.1| map keys
|24.7| create abbreviations
@@ -61,13 +61,13 @@ How to ... *howdoi* *how-do-i* *howto* *how-to*
|20.1| do command-line editing
|20.3| do command-line completion
|'cmdheight'| increase the height of command-line
'cmdheight' increase the height of command-line
|10.3| specify command-line ranges
|40.3| specify commands to be executed automatically
before/after reading/writing entering/leaving a
buffer/window
|'autowrite'| write automatically
'autowrite' write automatically
|30.1| speedup edit-compile-edit cycle or compile and fix
errors within Vim
@@ -76,12 +76,12 @@ How to ... *howdoi* *how-do-i* *howto* *how-to*
|term-dependent-settings| set options depending on terminal name
|save-settings| save settings
|:quote| comment my .vim files
|'helpheight'| change the default help height
|'highlight'| set various highlighting modes
|'title'| set the window title
|'icon'| set window icon title
|'report'| avoid seeing the change messages on every line
|'shortmess'| avoid |hit-enter| prompts
'helpheight' change the default help height
'highlight' set various highlighting modes
'title' set the window title
'icon' set window icon title
'report' avoid seeing the change messages on every line
'shortmess' avoid |hit-enter| prompts
|mouse-using| use mouse with Vim
|usr_08.txt| manage multiple windows and buffers

View File

@@ -1,4 +1,4 @@
*if_cscop.txt* For Vim version 9.1. Last change: 2024 May 11
*if_cscop.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Andy Kahn
@@ -360,7 +360,7 @@ limited to Unix systems.
Additionally Cscope support works for Win32. For more information and a
cscope version for Win32 see (link seems dead):
http://iamphet.nm.ru/cscope/index.html
iamphet.nm.ru/cscope/index.html
The DJGPP-built version from http://cscope.sourceforge.net is known to not
work with Vim.

View File

@@ -1,4 +1,4 @@
*index.txt* For Vim version 9.1. Last change: 2025 Jul 20
*index.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1034,7 +1034,7 @@ tag command action in Command-line editing mode ~
|c_CTRL-D| CTRL-D list completions that match the pattern in
front of the cursor
|c_CTRL-E| CTRL-E cursor to end of command-line
|'cedit'| CTRL-F default value for 'cedit': opens the
'cedit' CTRL-F default value for 'cedit': opens the
command-line window; otherwise not used
|c_CTRL-G| CTRL-G next match when 'incsearch' is active
|c_<BS>| <BS> delete the character in front of the cursor

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 9.1. Last change: 2025 Jul 17
*insert.txt* For Vim version 9.1. Last change: 2025 Aug 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,11 +38,11 @@ use "CTRL-V 003" to insert a CTRL-C. Note: When CTRL-V is mapped you can
often use CTRL-Q instead |i_CTRL-Q|.
If you are working in a special language mode when inserting text, see the
'langmap' option, |'langmap'|, on how to avoid switching this mode on and off
'langmap' option, 'langmap', on how to avoid switching this mode on and off
all the time.
If you have 'insertmode' set, <Esc> and a few other keys get another meaning.
See |'insertmode'|.
See 'insertmode'.
char action ~
-----------------------------------------------------------------------
@@ -284,15 +284,17 @@ The effect of the <BS>, CTRL-W, and CTRL-U depend on the 'backspace' option
item action ~
indent allow backspacing over autoindent
eol allow backspacing over end-of-line (join lines)
start allow backspacing over the start position of insert; CTRL-W and
CTRL-U stop once at the start position
eol allow backspacing over line breaks (join lines)
start allow backspacing over the start of insert; CTRL-W and CTRL-U stop
once at the start of insert.
nostop like start, except CTRL-W and CTRL-U do not stop at the start of
insert.
When 'backspace' is empty, Vi compatible backspacing is used. You cannot
backspace over autoindent, before column 1 or before where insert started.
For backwards compatibility the values "0", "1", "2" and "3" are also allowed,
see |'backspace'|.
see 'backspace'.
If the 'backspace' option does contain "eol" and the cursor is in column 1
when one of the three keys is used, the current line is joined with the
@@ -619,7 +621,7 @@ In 'list' mode, Virtual Replace mode acts as if it was not in 'list' mode,
unless "L" is in 'cpoptions'.
Note that the only situations for which characters beyond the cursor should
appear to move are in List mode |'list'|, and occasionally when 'wrap' is set
appear to move are in List mode 'list', and occasionally when 'wrap' is set
(and the line changes length to become shorter or wider than the width of the
screen). In other cases spaces may be inserted to avoid following characters
to move.
@@ -1133,6 +1135,22 @@ Stop completion *compl-stop*
CTRL-X CTRL-Z Stop completion without changing the text.
AUTOCOMPLETION *ins-autocompletion*
Vim can display a completion menu as you type, similar to using |i_CTRL-N|,
but triggered automatically. See 'autocomplete' and 'autocompletedelay'.
The menu items are collected from the sources listed in the 'complete' option.
Unlike manual |i_CTRL-N| completion, this mode uses a decaying timeout to keep
Vim responsive. Sources earlier in the 'complete' list are given more time
(higher priority), but every source is guaranteed a time slice, however small.
This mode is fully compatible with other completion modes. You can invoke
any of them at any time by typing |CTRL-X|, which temporarily suspends
autocompletion. To use |i_CTRL-N| specifically, press |CTRL-E| first to
dismiss the popup menu (see |complete_CTRL-E|).
FUNCTIONS FOR FINDING COMPLETIONS *complete-functions*
This applies to 'completefunc', 'thesaurusfunc' and 'omnifunc'.
@@ -1475,7 +1493,7 @@ Universal Ctags is preferred, Exuberant Ctags is no longer being developed.
For Exuberant ctags, version 5.6 or later is recommended. For version 5.5.4
you should add a patch that adds the "typename:" field:
ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch
https://ftp.nluug.nl/pub/vim/unstable/patches/ctags-5.5.4.patch
A compiled .exe for MS-Windows can be found at:
http://ctags.sourceforge.net/
https://github.com/universal-ctags/ctags-win32

View File

@@ -1,4 +1,4 @@
*intro.txt* For Vim version 9.1. Last change: 2024 Oct 05
*intro.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -821,7 +821,7 @@ current mode 'showmode' on on
command characters 'showcmd' on off
cursor position 'ruler' off off
The current mode is "-- INSERT --" or "-- REPLACE --", see |'showmode'|. The
The current mode is "-- INSERT --" or "-- REPLACE --", see 'showmode'. The
command characters are those that you typed but were not used yet.
If you have a slow terminal you can switch off the status messages to speed

View File

@@ -1,4 +1,4 @@
*map.txt* For Vim version 9.1. Last change: 2025 Jul 14
*map.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1635,13 +1635,13 @@ completion can be enabled:
-complete=cscope |:cscope| suboptions
-complete=diff_buffer diff buffer names
-complete=dir directory names
-complete=dir_in_path directory names in |'cdpath'|
-complete=dir_in_path directory names in 'cdpath'
-complete=environment environment variable names
-complete=event autocommand events
-complete=expression Vim expression
-complete=file file and directory names
-complete=file_in_path file and directory names in |'path'|
-complete=filetype filetype names |'filetype'|
-complete=file_in_path file and directory names in 'path'
-complete=filetype filetype names 'filetype'
-complete=function function name
-complete=help help subjects
-complete=highlight highlight groups
@@ -1655,13 +1655,13 @@ completion can be enabled:
-complete=option options
-complete=packadd optional package |pack-add| names
-complete=retab |:retab| suboptions
-complete=runtime file and directory names in |'runtimepath'|
-complete=runtime file and directory names in 'runtimepath'
-complete=scriptnames sourced script names
-complete=shellcmd Shell command
-complete=shellcmdline First is a shell command and subsequent ones
are filenames. The same behavior as |:!cmd|
-complete=sign |:sign| suboptions
-complete=syntax syntax file names |'syntax'|
-complete=syntax syntax file names 'syntax'
-complete=syntime |:syntime| suboptions
-complete=tag tags
-complete=tag_listfiles tags, file names are shown when CTRL-D is hit

View File

@@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 9.1. Last change: 2024 Jul 17
*mbyte.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -464,7 +464,7 @@ Useful utilities for converting the charset:
|charset| converter. Supported |charset|: ISO-2022-CN, ISO-2022-JP,
ISO-2022-KR, EUC-CN, EUC-JP, EUC-KR, EUC-TW, UTF-7, UTF-8, ISO-8859
series, Shift_JIS, Big5 and HZ. Lv can be found at (link seems dead):
http://www.ff.iij4u.or.jp/~nrt/lv/index.html
ff.iij4u.or.jp/~nrt/lv/index.html
*mbyte-conversion*
@@ -802,7 +802,7 @@ is suitable for complex input, such as CJK.
pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana,
if needed. There are some Kana-Kanji conversion server: jserver
(distributed with Wnn, see below) and canna. Canna can be found at:
https://osdn.net/projects/canna/
(dead link) osdn.net/projects/canna/
There is a good input system: Wnn4.2. Wnn 4.2 contains,
xwnmo (|IM-server|)

View File

@@ -1,4 +1,4 @@
*message.txt* For Vim version 9.1. Last change: 2024 Dec 06
*message.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -572,7 +572,7 @@ attempting a symlink attack (could happen when editing a file in /tmp or when
Vim (and Vi) expect tags files to be sorted in ASCII order. Binary searching
can then be used, which is a lot faster than a linear search. If your tags
files are not properly sorted, reset the |'tagbsearch'| option.
files are not properly sorted, reset the 'tagbsearch' option.
This message is only given when Vim detects a problem when searching for a
tag. Sometimes this message is not given, even though the tags file is not
properly sorted.

View File

@@ -1,4 +1,4 @@
*motion.txt* For Vim version 9.1. Last change: 2025 Apr 03
*motion.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*netbeans.txt* For Vim version 9.1. Last change: 2024 May 11
*netbeans.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Gordon Prieur et al.
@@ -41,10 +41,10 @@ protocol. There are existing implementations in C, C++, Python and Java. The
name NetBeans is kept today for historical reasons.
Active project using the NetBeans protocol of Vim:
- Eclim, http://eclim.org/
- Eclim, (dead link) eclim.org/
VimIntegration, description of various projects doing Vim Integration:
http://www.freehackers.org/VimIntegration
(dead link) www.freehackers.org/VimIntegration
Projects using the NetBeans protocol of Vim are or were:
- Agide, an IDE for the AAP project, written in Python (now replaced by
@@ -54,7 +54,7 @@ Projects using the NetBeans protocol of Vim are or were:
- Pyclewn, a gdb integration into Vim, written in Python:
http://pyclewn.sourceforge.net/
- VimWrapper, library to easy Vim integration into IDE:
http://www.freehackers.org/VimWrapper
(dead link) freehackers.org/VimWrapper
Outdated projects (links don't work):
- VimPlugin, integration of Vim inside Eclipse:
http://vimplugin.sourceforge.net/wiki/pmwiki.php
@@ -78,7 +78,7 @@ in recent releases.
For more information visit the main NetBeans web site http://www.netbeans.org.
The External Editor is now, unfortunately, declared obsolete. See (link seems
dead): http://externaleditor.netbeans.org.
dead): externaleditor.netbeans.org.
Sun Microsystems, Inc. also ships NetBeans under the name Sun ONE Studio.
Visit http://www.sun.com for more information regarding the Sun ONE Studio
@@ -148,7 +148,7 @@ The Win32 support is now in beta stage.
To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile
XPM by yourself or use precompiled libraries from (link seems dead):
http://iamphet.nm.ru/misc/ (for MS Visual C++) or
iamphet.nm.ru/misc/ (for MS Visual C++) or
http://gnuwin32.sourceforge.net (for MinGW).
Enable debugging:
@@ -942,12 +942,13 @@ netbeans.org on building NetBeans.
Depending on the version of NetBeans you download, you may need to do further
work to get the required External Editor module. This is the module which lets
NetBeans work with gvim (or xemacs :-). See http://externaleditor.netbeans.org
NetBeans work with gvim (or xemacs :-). See (dead link)
externaleditor.netbeans.org
for details on downloading this module if your NetBeans release does not have
it.
For C, C++, and Fortran support you will also need the cpp module. See
http://cpp.netbeans.org (link seems dead) for information regarding this
cpp.netbeans.org (link seems dead) for information regarding this
module.
You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day
@@ -994,10 +995,11 @@ Unfortunately, some versions do not have this module in their update
center. If you cannot download via the update center you will need to
download sources and build the module. I will try and get the module
available from the NetBeans Update Center so building will be unnecessary.
Also check http://externaleditor.netbeans.org for other availability options.
Also check (dead link) externaleditor.netbeans.org
for other availability options.
To download the External Editor sources via CVS and build your own module,
see http://externaleditor.netbeans.org and http://www.netbeans.org.
see (dead link) externaleditor.netbeans.org and http://www.netbeans.org.
Unfortunately, this is not a trivial procedure.

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 9.1. Last change: 2025 Jul 21
*options.txt* For Vim version 9.1. Last change: 2025 Aug 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -911,6 +911,20 @@ A jump table for the options with a short description can be found at |Q_op|.
the current directory won't change when navigating to it.
Note: When this option is on some plugins may not work.
*'autocomplete'* *'ac'* *'noautocomplete'* *'noac'*
'autocomplete' 'ac' boolean (default off)
global
{only available on platforms with timing support}
When on, Vim shows a completion menu as you type, similar to using
|i_CTRL-N|, but triggered automatically. See |ins-autocompletion|.
*'autocompletedelay'* *'acl'*
'autocompletedelay' 'acl' number (default 0)
global
Delay in milliseconds before the autocomplete menu appears after
typing. If you prefer it not to open too quickly, set this value
slightly above your typing speed. See |ins-autocompletion|.
*'autoindent'* *'ai'* *'noautoindent'* *'noai'*
'autoindent' 'ai' boolean (default off)
local to buffer
@@ -1028,7 +1042,7 @@ A jump table for the options with a short description can be found at |Q_op|.
< Vim will guess the value. In the GUI this should work correctly,
in other cases Vim might not be able to guess the right value.
If the GUI supports a dark theme, you can use the "d" flag in
'guioptions', see 'go-d'.
'guioptions', see |'go-d'|.
When the |t_RB| option is set, Vim will use it to request the background
color from the terminal. If the returned RGB value is dark/light and
@@ -1582,7 +1596,7 @@ A jump table for the options with a short description can be found at |Q_op|.
"nofile" and "nowrite" buffers are similar:
both: The buffer is not to be written to disk, ":w" doesn't
work (":w filename" does work though).
both: The buffer is never considered to be |'modified'|.
both: The buffer is never considered to be 'modified'.
There is no warning when the changes will be lost, for
example when you quit Vim.
both: A swap file is only created when using too much memory
@@ -1635,7 +1649,7 @@ A jump table for the options with a short description can be found at |Q_op|.
searched for has a relative path, not an absolute part starting with
"/", "./" or "../", the 'cdpath' option is not used then.
The 'cdpath' option's value has the same form and semantics as
|'path'|. Also see |file-searching|.
'path'. Also see |file-searching|.
The default value is taken from $CDPATH, with a "," prepended to look
in the current directory first.
If the default value taken from $CDPATH is not what you want, include
@@ -2129,9 +2143,9 @@ A jump table for the options with a short description can be found at |Q_op|.
If the Dict returned by the {func} includes {"refresh": "always"},
the function will be invoked again whenever the leading text
changes.
If generating matches is potentially slow, |complete_check()|
should be used to avoid blocking and preserve editor
responsiveness.
If generating matches is potentially slow, call
|complete_check()| periodically to keep Vim responsive. This
is especially important for |ins-autocompletion|.
F equivalent to using "F{func}", where the function is taken from
the 'completefunc' option.
o equivalent to using "F{func}", where the function is taken from
@@ -2221,7 +2235,7 @@ A jump table for the options with a short description can be found at |Q_op|.
controls how completion candidates are reduced from the
list of alternatives. If you want to use |fuzzy-matching|
to gather more alternatives for your candidate list,
see |'completefuzzycollect'|.
see 'completefuzzycollect'.
longest Only insert the longest common text of the matches. If
the menu is displayed you can use CTRL-L to add more
@@ -2258,7 +2272,7 @@ A jump table for the options with a short description can be found at |Q_op|.
popup Show extra information about the currently selected
completion in a popup window. Only works in combination
with "menu" or "menuone". Overrides "preview".
See |'completepopup'| for specifying properties.
See 'completepopup' for specifying properties.
{only works when compiled with the |+textprop| feature}
popuphidden
@@ -2278,6 +2292,9 @@ A jump table for the options with a short description can be found at |Q_op|.
completion in the preview window. Only works in
combination with "menu" or "menuone".
Only "fuzzy", "popup", "popuphidden" and "preview" have an effect when
'autocomplete' is enabled.
This option does not apply to |cmdline-completion|. See 'wildoptions'
for that.
@@ -2376,7 +2393,7 @@ A jump table for the options with a short description can be found at |Q_op|.
local to buffer
Copy the structure of the existing lines indent when autoindenting a
new line. Normally the new indent is reconstructed by a series of
tabs followed by spaces as required (unless |'expandtab'| is enabled,
tabs followed by spaces as required (unless 'expandtab' is enabled,
in which case only spaces are used). Enabling this option makes the
new line copy whatever characters were used for indenting on the
existing line. 'expandtab' has no effect on these characters, a Tab
@@ -2527,7 +2544,7 @@ A jump table for the options with a short description can be found at |Q_op|.
*cpo-m*
m When included, a showmatch will always wait half a
second. When not included, a showmatch will wait half
a second or until a character is typed. |'showmatch'|
a second or until a character is typed. 'showmatch'
*cpo-M*
M When excluded, "%" matching will take backslashes into
account. Thus in "( \( )" and "\( ( \)" the outer
@@ -3006,6 +3023,8 @@ A jump table for the options with a short description can be found at |Q_op|.
If some of the {address} do not resolve to a line in each buffer (e.g.
a pattern search that does not match anything), none of the anchors
will be used.
*E1562*
Diff anchors can only be used when there are no hidden diff buffers.
*'dex'* *'diffexpr'*
'diffexpr' 'dex' string (default "")
@@ -5599,8 +5618,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'lispoptions' 'lop' string (default "")
local to buffer
Comma-separated list of items that influence the Lisp indenting when
enabled with the |'lisp'| option. Currently only one item is
supported:
enabled with the 'lisp' option. Currently only one item is supported:
expr:1 use 'indentexpr' for Lisp indenting when it is set
expr:0 do not use 'indentexpr' for Lisp indenting (default)
Note that when using 'indentexpr' the `=` operator indents all the
@@ -5610,7 +5628,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'lispwords' 'lw' string (default is very long)
global or local to buffer |global-local|
Comma-separated list of words that influence the Lisp indenting when
enabled with the |'lisp'| option.
enabled with the 'lisp' option.
*'list'* *'nolist'*
'list' boolean (default off)
@@ -6102,7 +6120,7 @@ A jump table for the options with a short description can be found at |Q_op|.
When the mouse is not enabled, the GUI will still use the mouse for
modeless selection. This doesn't move the text cursor.
See |mouse-using|. Also see |'clipboard'|.
See |mouse-using|. Also see 'clipboard'.
Note: When enabling the mouse in a terminal, copy/paste will use the
"* register if there is access to an X-server. The xterm handling of
@@ -6593,7 +6611,7 @@ A jump table for the options with a short description can be found at |Q_op|.
local to buffer
When changing the indent of the current line, preserve as much of the
indent structure as possible. Normally the indent is replaced by a
series of tabs followed by spaces as required (unless |'expandtab'| is
series of tabs followed by spaces as required (unless 'expandtab' is
enabled, in which case only spaces are used). Enabling this option
means the indent will preserve as many existing characters as possible
for indenting, and only add additional tabs or spaces as required.
@@ -7228,7 +7246,7 @@ A jump table for the options with a short description can be found at |Q_op|.
current window also scrolls other scrollbind windows (windows that
also have this option set). This option is useful for viewing the
differences between two versions of a file, see 'diff'.
See |'scrollopt'| for options that determine how this option should be
See 'scrollopt' for options that determine how this option should be
interpreted.
This option is mostly reset when splitting a window to edit another
file. This means that ":split | edit file" results in two windows
@@ -7648,7 +7666,7 @@ A jump table for the options with a short description can be found at |Q_op|.
'shiftwidth' 'sw' number (default 8)
local to buffer
Number of columns that make up one level of (auto)indentation. Used
by |'cindent'|, |<<|, |>>|, etc.
by 'cindent', |<<|, |>>|, etc.
If set to 0, Vim uses the current 'tabstop' value. Use |shiftwidth()|
to obtain the effective value in scripts.
@@ -7871,7 +7889,7 @@ A jump table for the options with a short description can be found at |Q_op|.
global or local to window |global-local|
The minimal number of screen columns to keep to the left and to the
right of the cursor if 'nowrap' is set. Setting this option to a
value greater than 0 while having |'sidescroll'| also at a non-zero
value greater than 0 while having 'sidescroll' also at a non-zero
value makes some context visible in the line you are scrolling in
horizontally (except at beginning of the line). Setting this option
to a large value (like 999) has the effect of keeping the cursor
@@ -7883,9 +7901,9 @@ A jump table for the options with a short description can be found at |Q_op|.
setlocal sidescrolloff=-1
< NOTE: This option is set to 0 when 'compatible' is set.
Example: Try this together with 'sidescroll' and 'listchars' as
in the following example to never allow the cursor to move
onto the "extends" character: >
Example: Try this together with 'sidescroll' and 'listchars' as in the
following example to never allow the cursor to move onto the
"extends" character: >
:set nowrap sidescroll=1 listchars=extends:>,precedes:<
:set sidescrolloff=1
@@ -7989,8 +8007,8 @@ A jump table for the options with a short description can be found at |Q_op|.
in-depth explanations.
If Vim is compiled with the |+vartabs| feature then the value of
'softtabstop' will be ignored if |'varsofttabstop'| is set to
anything other than an empty string.
'softtabstop' will be ignored if 'varsofttabstop' is set to anything
other than an empty string.
*'spell'* *'nospell'*
'spell' boolean (default off)
@@ -8433,12 +8451,12 @@ A jump table for the options with a short description can be found at |Q_op|.
Careful: All text will be in memory:
- Don't use this for big files.
- Recovery will be impossible!
A swapfile will only be present when |'updatecount'| is non-zero and
A swapfile will only be present when 'updatecount' is non-zero and
'swapfile' is set.
When 'swapfile' is reset, the swap file for the current buffer is
immediately deleted. When 'swapfile' is set, and 'updatecount' is
non-zero, a swap file is immediately created.
Also see |swap-file| and |'swapsync'|.
Also see |swap-file| and 'swapsync'.
If you want to open a new buffer without creating a swap file for it,
use the |:noswapfile| modifier.
See 'directory' for where the swap file is created.
@@ -8643,7 +8661,7 @@ A jump table for the options with a short description can be found at |Q_op|.
character (ASCII 9); a Horizontal Tab always advances to the next tab
stop.
The value must be at least 1 and at most 9999.
If Vim was compiled with |+vartabs| and |'vartabstop'| is set, this
If Vim was compiled with |+vartabs| and 'vartabstop' is set, this
option is ignored.
Leave it at 8 unless you have a strong reason (see usr |30.5|).
@@ -9105,7 +9123,7 @@ A jump table for the options with a short description can be found at |Q_op|.
When Vim was compiled with HAVE_X11 defined, the original title will
be restored if possible. The output of ":version" will include "+X11"
when HAVE_X11 was defined, otherwise it will be "-X11". This also
works for the icon name |'icon'|.
works for the icon name 'icon'.
But: When Vim was started with the |-X| argument, restoring the title
will not work (except in the GUI).
If the title cannot be restored, it is set to the value of 'titleold'.
@@ -9338,7 +9356,7 @@ A jump table for the options with a short description can be found at |Q_op|.
global
{only when compiled with the |+persistent_undo| feature}
List of directory names for undo files, separated with commas.
See |'backupdir'| for details of the format.
See 'backupdir' for details of the format.
"." means using the directory of the file. The undo file name for
"file.txt" is ".file.txt.un~".
For other directories the file name is the full path of the edited
@@ -9410,13 +9428,13 @@ A jump table for the options with a short description can be found at |Q_op|.
recovery |crash-recovery|). 'updatecount' is set to zero by starting
Vim with the "-n" option, see |startup|. When editing in readonly
mode this option will be initialized to 10000.
The swapfile can be disabled per buffer with |'swapfile'|.
The swapfile can be disabled per buffer with 'swapfile'.
When 'updatecount' is set from zero to non-zero, swap files are
created for all buffers that have 'swapfile' set. When 'updatecount'
is set to zero, existing swap files are not deleted.
Also see |'swapsync'|.
This option has no meaning in buffers where |'buftype'| is "nofile"
or "nowrite".
Also see 'swapsync'.
This option has no meaning in buffers where 'buftype' is "nofile" or
"nowrite".
*'updatetime'* *'ut'*
'updatetime' 'ut' number (default 4000)

View File

@@ -1,4 +1,4 @@
*os_390.txt* For Vim version 9.1. Last change: 2019 Dec 07
*os_390.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Ralf Schandl
@@ -105,9 +105,9 @@ Never tested:
- Perl interface (|perl|)
- Hangul input (|hangul|)
- Encryption support (|encryption|)
- Langmap (|'langmap'|)
- Langmap ('langmap')
- Python support (|Python|)
- Right-to-left mode (|'rightleft'|)
- Right-to-left mode ('rightleft')
- TCL interface (|tcl|)
...

View File

@@ -1,4 +1,4 @@
*os_amiga.txt* For Vim version 9.1. Last change: 2010 Aug 14
*os_amiga.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -90,7 +90,7 @@ Vim for MorphOS *MorphOS*
[this section mostly by Ali Akcaagac]
For the latest info about the MorphOS version:
http://www.akcaagac.com/index_vim.html
(dead link) akcaagac.com/index_vim.html
Problems ~
@@ -111,12 +111,12 @@ would be better to enter:
vim --noplugins <of course you can add a file>
Installation ~
Installation of a binary archive ~
1) Please copy the binary 'VIM' file to c:
2) Get the Vim runtime package from:
2) Get the Vim runtime package from (Note: that server is no longer updated):
ftp://ftp.vim.org/pub/vim/amiga/vim62rt.tgz
https://ftp.nluug.nl/pub/vim/amiga/vim90src.tgz
and unpack it in your 'Apps' directory of the MorphOS installation. For me
this would create following directory hierarchy:
@@ -143,5 +143,13 @@ Installation ~
Cls
;End VIM
Compiling~
You can download the Vim source code from the official Vim site:
https://github.com/vim/vim/archive/refs/heads/master.zip
Or using git: >
git clone https://github.com/vim/vim.git
For compiling see "src/INSTALLami.txt"
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*os_dos.txt* For Vim version 9.1. Last change: 2024 Dec 25
*os_dos.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -139,7 +139,7 @@ A DOS console does not support attributes like bold and underlining. You can
set the color used in five modes with nine terminal options. Note that this
is not necessary since you can set the color directly with the ":highlight"
command; these options are for backward compatibility with older Vim versions.
The |'highlight'| option specifies which of the five modes is used for which
The 'highlight' option specifies which of the five modes is used for which
action. >
:set t_mr=^V^[\|xxm start of invert mode
@@ -231,7 +231,6 @@ writing in Unix mode (":se ff=unix").
Vim sets 'fileformat' automatically when 'fileformats' is not empty (which is
the default), so you don't really have to worry about what you are doing.
|'fileformat'| |'fileformats'|
If you want to edit a script file or a binary file, you should set the
'binary' option before loading the file. Script files and binary files may
@@ -279,10 +278,10 @@ The default for the 'sh' ('shell') option is "command.com" on Windows 95 and
"cmd.exe" on Windows NT. If SHELL is defined, Vim uses SHELL instead, and if
SHELL is not defined but COMSPEC is, Vim uses COMSPEC. Vim starts external
commands with "<shell> /c <command_name>". Typing CTRL-Z starts a new command
subshell. Return to Vim with "exit". |'shell'| |CTRL-Z|
subshell. Return to Vim with "exit". 'shell' |CTRL-Z|
If you are running a third-party shell, you may need to set the
|'shellcmdflag'| ('shcf') and |'shellquote'| ('shq') or |'shellxquote'|
'shellcmdflag' ('shcf') and 'shellquote' ('shq') or 'shellxquote'
('sxq') options. Unfortunately, this also depends on the version of Vim used.
For example, with the MKS Korn shell or with bash, the values of the options
should be:

View File

@@ -1,4 +1,4 @@
*os_mac.txt* For Vim version 9.1. Last change: 2024 Nov 14
*os_mac.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -70,7 +70,7 @@ default command-key mappings.
On older systems files starting with a dot "." are discouraged, thus the rc
files are named "vimrc" or "_vimrc" and "gvimrc" or "_gvimrc". These files
can be in any format (mac, dos or unix). Vim can handle any file format when
the |'nocompatible'| option is set, otherwise it will only handle mac format
the 'nocompatible' option is set, otherwise it will only handle mac format
files.
==============================================================================
@@ -87,7 +87,7 @@ Backspace "*d cut Visual text
==============================================================================
4. Mac FAQ *mac-faq*
On the internet: http://macvim.org/OSX/index.php#FAQ
On the internet: https://github.com/macvim-dev/macvim/wiki/FAQ
Q: I can't enter non-ASCII character in Apple Terminal.
A: Under Window Settings, Emulation, make sure that "Escape non-ASCII

View File

@@ -1,4 +1,4 @@
*os_qnx.txt* For Vim version 9.1. Last change: 2005 Mar 29
*os_qnx.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Julian Kinraid
@@ -34,11 +34,10 @@ features you can enable/disable.
Vim has support for the mouse and clipboard in a pterm, if those options
are compiled in, which they are normally.
The options that affect mouse support are |'mouse'| and |'ttymouse'|. When
using the mouse, only simple left and right mouse clicking/dragging is
supported. If you hold down shift, ctrl, or alt while using the mouse, pterm
will handle the mouse itself. It will make a selection, separate from what
vim's doing.
The options that affect mouse support are 'mouse' and 'ttymouse'. When using
the mouse, only simple left and right mouse clicking/dragging is supported.
If you hold down shift, ctrl, or alt while using the mouse, pterm will handle
the mouse itself. It will make a selection, separate from what vim's doing.
When the mouse is in use, you can press Alt-RightMouse to open the pterm menu.
To turn the mouse off in vim, set the mouse option to nothing, set mouse=
@@ -52,16 +51,16 @@ the terminal version will run. For more info - |gui-x11-start|
Supported features:
:browse command |:browse|
:confirm command |:confirm|
Cursor blinking |'guicursor'|
Cursor blinking 'guicursor'
Menus, popup menus and menu priorities |:menu|
|popup-menu|
|menu-priority|
Toolbar |gui-toolbar|
|'toolbar'|
'toolbar'
Font selector (:set guifont=*) |photon-fonts|
Mouse focus |'mousefocus'|
Mouse hide |'mousehide'|
Mouse cursor shapes |'mouseshape'|
Mouse focus 'mousefocus'
Mouse hide 'mousehide'
Mouse cursor shapes 'mouseshape'
Clipboard |gui-clipboard|
Unfinished features:

View File

@@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 9.1. Last change: 2024 May 11
*os_vms.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL
@@ -33,10 +33,17 @@ Vim on other operating systems.
2. Download files *vms-download*
You can download the Vim source code by ftp from the official Vim site:
ftp://ftp.vim.org/pub/vim/
You can download the Vim source code from the official Vim site:
https://github.com/vim/vim/archive/refs/heads/master.zip
Or using git: >
git clone https://github.com/vim/vim.git
Older release archives are also available at:
https://ftp.nluug.nl/pub/vim/
Or use one of the mirrors:
ftp://ftp.vim.org/pub/vim/MIRRORS
https://ftp.nluug.nl/pub/vim/MIRRORS
Note: the ftp server has been retired and is no longer updated.
You can download precompiled executables from:
http://www.polarhome.com/vim/

View File

@@ -1,4 +1,4 @@
*os_win32.txt* For Vim version 9.1. Last change: 2024 May 11
*os_win32.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by George Reilly
@@ -156,7 +156,7 @@ Examples, with [] around an argument:
When 'restorescreen' is set (which is the default), Vim will restore the
original contents of the console when exiting or when executing external
commands. If you don't want this, use ":set nors". |'restorescreen'|
commands. If you don't want this, use ":set nors". 'restorescreen'
==============================================================================
4. Using the mouse *win32-mouse*
@@ -232,7 +232,7 @@ A. On Unix, Vim is prepared for links (symbolic or hard). A backup copy of
protection bits are set like the original file. However, this doesn't work
properly when working on an NFS-mounted file system where links and other
things exist. The only way to fix this in the current version is not
making a backup file, by ":set nobackup nowritebackup" |'writebackup'|
making a backup file, by ":set nobackup nowritebackup" 'writebackup'
Q. I'm using Vim to edit a file on a Unix file server through Samba. When I
write the file, the owner of the file is changed. Why?

View File

@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 9.1. Last change: 2025 Jul 10
*pattern.txt* For Vim version 9.1. Last change: 2025 Aug 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -72,7 +72,7 @@ N Repeat the latest "/" or "?" [count] times in
* Search forward for the [count]'th occurrence of the
word nearest to the cursor. The word used for the
search is the first of:
1. the keyword under the cursor |'iskeyword'|
1. the keyword under the cursor 'iskeyword'
2. the first keyword after the cursor, in the
current line
3. the non-blank word under the cursor
@@ -1501,34 +1501,51 @@ Finally, these constructs are unique to Perl:
==============================================================================
11. Fuzzy matching *fuzzy-matching*
Fuzzy matching refers to matching strings using a non-exact search string.
Fuzzy matching will match a string, if all the characters in the search string
are present anywhere in the string in the same order. Case is ignored. In a
matched string, other characters can be present between two consecutive
characters in the search string. If the search string has multiple words, then
each word is matched separately. So the words in the search string can be
present in any order in a string.
Fuzzy matching scores how well a string matches a pattern when the pattern
characters appear in order but not necessarily contiguously.
Fuzzy matching assigns a score for each matched string based on the following
criteria:
- The number of sequentially matching characters.
- The number of characters (distance) between two consecutive matching
characters.
- Matches at the beginning of a word
- Matches at a camel case character (e.g. Case in CamelCase)
- Matches after a path separator or a hyphen.
- The number of unmatched characters in a string.
- A full/exact match is preferred.
The matching string with the highest score is returned first.
Example: >
Pattern: "vim"
Candidates: "vim" -> perfect
"vimeo" -> good (v i m)
"voice mail" -> weaker (v _ i _ _ _ m)
"vintage" -> no match (no "m")
<
If the search string has multiple words, each word is matched separately and
may appear in any order in the candidate. For example "get pat" matches
"GetPattern", "PatternGet", "getPattern", "patGetter", "getSomePattern",
"MatchpatternGet", etc.
For example, when you search for the "get pat" string using fuzzy matching, it
will match the strings "GetPattern", "PatternGet", "getPattern", "patGetter",
"getSomePattern", "MatchpatternGet" etc.
The 'ignorecase' and 'smartcase' options do not apply, case is ignored if the
pattern is all lower case.
The functions |matchfuzzy()| and |matchfuzzypos()| can be used to fuzzy search
a string in a List of strings. The matchfuzzy() function returns a List of
matching strings. The matchfuzzypos() functions returns the List of matches,
the matching positions and the fuzzy match scores.
Vim's implementation is based on the algorithm from the fzy project:
https://github.com/jhawthorn/fzy
It uses dynamic programming to compute an optimal score for a given pattern
and candidate.
The algorithm works in two stages:
1. Forward pass
Scan the candidate left to right, tracking the best score for each
pattern position. Matches score higher when they occur at the start
of the candidate, the start of a word (space, underscore, dash,
camelCase), or directly after the previous match.
2. Backward pass
Start from the best-scoring end position and step back to find match
positions, ensuring the alignment is optimal.
Vim extends the original algorithm to support multibyte codepoints, allowing
correct matching for UTF-8 and other encodings.
Time complexity is O(pattern * candidate). Memory usage is proportional
to the same.
The |matchfuzzy()| and |matchfuzzypos()| functions perform fuzzy searching in
a List of strings. |matchfuzzy()| returns the matching strings, while
|matchfuzzypos()| returns the matches along with their positions and scores.
The "f" flag of `:vimgrep` enables fuzzy matching.

View File

@@ -1,4 +1,4 @@
*pi_getscript.txt* For Vim version 9.1. Last change: 2025 Apr 27
*pi_getscript.txt* For Vim version 9.1. Last change: 2025 Aug 10
>
GETSCRIPT REFERENCE MANUAL by Charles E. Campbell
<
@@ -349,13 +349,9 @@ after/syntax/c.vim contained in it to overwrite a user's c.vim.
>
g:GetLatestVimScripts_scriptaddr
< default='https://www.vim.org/scripts/script.php?script_id='
Override this if your system needs
... ='http://vim.sourceforge.net/script.php?script_id='
>
g:GetLatestVimScripts_downloadaddr
< default='https://www.vim.org/scripts/download_script.php?src_id='
Override this if your system needs
... ='http://vim.sourceforge.net/scripts/download_script.php?src_id='
>
g:GetLatestVimScripts_bunzip2
< default= bunzip2

View File

@@ -7,8 +7,8 @@ Original Author: Charles E. Campbell
Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright*
The VIM LICENSE applies to the files in this package, including
netrw.vim, netrw.txt, netrwSettings.vim, and
syntax/netrw.vim. Like anything else that's free, netrw.vim and its
netrw.vim, netrw.txt, and syntax/netrw.vim.
Like anything else that's free, netrw.vim and its
associated files are provided *as is* and comes with no warranty of
any kind, either expressed or implied. No guarantees of
merchantability. No guarantees of suitability for any purpose. By
@@ -90,7 +90,6 @@ Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright*
Marked Files: Grep..................................|netrw-mg|
Marked Files: Hiding and Unhiding by Suffix.........|netrw-mh|
Marked Files: Moving................................|netrw-mm|
Marked Files: Printing..............................|netrw-mp|
Marked Files: Sourcing..............................|netrw-ms|
Marked Files: Setting the Target Directory..........|netrw-mt|
Marked Files: Tagging...............................|netrw-mT|
@@ -99,7 +98,6 @@ Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright*
Marked Files: Unmarking.............................|netrw-mu|
Netrw Browser Variables.............................|netrw-browser-var|
Netrw Browsing And Option Incompatibilities.........|netrw-incompatible|
Netrw Settings Window...............................|netrw-settings-window|
Obtaining A File....................................|netrw-O|
Preview Window......................................|netrw-p|
Previous Window.....................................|netrw-P|
@@ -122,7 +120,7 @@ you'll need to have at least the following in your <.vimrc>:
set nocp " 'compatible' is not set
filetype plugin on " plugins are enabled
<
(see |'cp'| and |:filetype-plugin-on|)
(see 'cp' and |:filetype-plugin-on|)
Netrw supports "transparent" editing of files on other machines using urls
(see |netrw-transparent|). As an example of this, let's assume you have an
@@ -668,7 +666,7 @@ However, |netrw-ssh-hack| can help with this problem.
5. Activation *netrw-activate* {{{1
Network-oriented file transfers are available by default whenever Vim's
|'nocompatible'| mode is enabled. Netrw's script files reside in your
'nocompatible' mode is enabled. Netrw's script files reside in your
system's plugin, autoload, and syntax directories; just the
plugin/netrwPlugin.vim script is sourced automatically whenever you bring up
vim. The main script in autoload/netrw.vim is only loaded when you actually
@@ -1066,7 +1064,6 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2
mg Apply vimgrep to marked files |netrw-mg|
mh Toggle marked file suffices' presence on hiding list |netrw-mh|
mm Move marked files to marked-file target directory |netrw-mm|
mp Print marked files |netrw-mp|
mr Mark files using a shell-style |regexp| |netrw-mr|
mt Current browsing directory becomes markfile target |netrw-mt|
mT Apply ctags to marked files |netrw-mT|
@@ -1172,7 +1169,7 @@ The :NetrwMB command is available outside of netrw buffers (once netrw has been
invoked in the session).
The file ".netrwbook" holds bookmarks when netrw (and vim) is not active. By
default, its stored on the first directory on the user's |'runtimepath'|.
default, its stored on the first directory on the user's 'runtimepath'.
Related Topics:
|netrw-gb| how to return (go) to a bookmark
@@ -1398,7 +1395,7 @@ used in that count.
See |g:netrw_dirhistmax| for how to control the quantity of history stack
slots. The file ".netrwhist" holds history when netrw (and vim) is not
active. By default, its stored on the first directory on the user's
|'runtimepath'|.
'runtimepath'.
Related Topics:
|netrw-U| changing to a successor directory
@@ -1517,7 +1514,7 @@ DIRECTORY EXPLORATION COMMANDS {{{2
*netrw-:Explore*
:Explore will open the local-directory browser on the current file's
directory (or on directory [dir] if specified). The window will be
split only if the file has been modified and |'hidden'| is not set,
split only if the file has been modified and 'hidden' is not set,
otherwise the browsing window will take over that window. Normally
the splitting is taken horizontally.
Also see: |netrw-:Rexplore|
@@ -1910,9 +1907,6 @@ passwords:
Thomer Gil has provided a hint on how to speed up netrw+ssh:
http://thomer.com/howtos/netrw_ssh.html
Alex Young has several hints on speeding ssh up:
http://usevim.com/2012/03/16/editing-remote-files/
LISTING BOOKMARKS AND HISTORY *netrw-qb* *netrw-listbookmark* {{{2
@@ -2001,7 +1995,6 @@ The following netrw maps make use of marked files:
|netrw-mF| Unmark marked files
|netrw-mg| Apply vimgrep to marked files
|netrw-mm| Move marked files to target
|netrw-mp| Print marked files
|netrw-ms| Netrw will source marked files
|netrw-mt| Set target for |netrw-mm| and |netrw-mc|
|netrw-mT| Generate tags using marked files
@@ -2266,15 +2259,6 @@ from the current window (where one does the mf) to the target.
Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd|
MARKED FILES: PRINTING *netrw-mp* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the local marked file list)
When "mp" is used, netrw will apply the |:hardcopy| command to marked files.
What netrw does is open each file in a one-line window, execute hardcopy, then
close the one-line window.
MARKED FILES: SOURCING *netrw-ms* {{{2
(See |netrw-mf| and |netrw-mr| for how to mark files)
(uses the local marked file list)
@@ -2412,11 +2396,11 @@ your browsing preferences. (see also: |netrw-settings|)
*g:netrw_alto* change from above splitting to below splitting
by setting this variable (see |netrw-o|)
default: =&sb (see |'sb'|)
default: =&sb (see 'sb')
*g:netrw_altv* change from left splitting to right splitting
by setting this variable (see |netrw-v|)
default: =&spr (see |'spr'|)
default: =&spr (see 'spr')
*g:netrw_banner* enable/suppress the banner
=0: suppress the banner
@@ -2484,7 +2468,7 @@ your browsing preferences. (see also: |netrw-settings|)
*g:netrw_cursor* = 2 (default)
This option controls the use of the
|'cursorline'| (cul) and |'cursorcolumn'|
'cursorline' (cul) and 'cursorcolumn'
(cuc) settings by netrw:
Value Thin-Long-Tree Wide
@@ -2499,15 +2483,15 @@ your browsing preferences. (see also: |netrw-settings|)
=8 cul U-cuc cul cuc
Where
u-cul : user's |'cursorline'| initial setting used
u-cuc : user's |'cursorcolumn'| initial setting used
U-cul : user's |'cursorline'| current setting used
U-cuc : user's |'cursorcolumn'| current setting used
cul : |'cursorline'| will be locally set
cuc : |'cursorcolumn'| will be locally set
u-cul : user's 'cursorline' initial setting used
u-cuc : user's 'cursorcolumn' initial setting used
U-cul : user's 'cursorline' current setting used
U-cuc : user's 'cursorcolumn' current setting used
cul : 'cursorline' will be locally set
cuc : 'cursorcolumn' will be locally set
The "initial setting" means the values of
the |'cuc'| and |'cul'| settings in effect when
the 'cuc' and 'cul' settings in effect when
netrw last saw |g:netrw_cursor| >= 5 or when
netrw was initially run.
@@ -2578,7 +2562,7 @@ your browsing preferences. (see also: |netrw-settings|)
*g:netrw_ffkeep* (default: doesn't exist)
If this variable exists and is zero, then
netrw will not do a save and restore for
|'fileformat'|.
'fileformat'.
*g:netrw_fname_escape* =' ?&;%'
Used on filenames before remote reading/writing
@@ -2630,7 +2614,7 @@ your browsing preferences. (see also: |netrw-settings|)
.netrwhist).
Netrw uses |expand()|on the string.
default: the first directory on the
|'runtimepath'|
'runtimepath'
*g:netrw_keepdir* =1 (default) keep current directory immune from
the browsing directory.
@@ -2826,7 +2810,7 @@ your browsing preferences. (see also: |netrw-settings|)
netrwYacc : *.y
In addition, those groups mentioned in
|'suffixes'| are also added to the special
'suffixes' are also added to the special
file highlighting group.
These syntax highlighting groups are linked
to netrwGray or Folded by default
@@ -2904,7 +2888,7 @@ your browsing preferences. (see also: |netrw-settings|)
used to specify the quantity of lines or
columns for the new window.
If g:netrw_winsize is zero, then a normal
split will be made (ie. |'equalalways'| will
split will be made (ie. 'equalalways' will
take effect, for example).
default: 50 (for 50%)
@@ -2923,7 +2907,7 @@ your browsing preferences. (see also: |netrw-settings|)
codepoint; a hard tab is one; wide and
narrow CJK are one each; etc.)
=3: virtual length (counting tabs as anything
between 1 and |'tabstop'|, wide CJK as 2
between 1 and 'tabstop', wide CJK as 2
rather than 1, Arabic alif as zero when
immediately preceded by lam, one
otherwise, etc)
@@ -3015,7 +2999,7 @@ These will:
Related: if you like this idea, you may also find :Lexplore
(|netrw-:Lexplore|) or |g:netrw_chgwin| of interest
Also see: |g:netrw_chgwin| |netrw-P| |'previewwindow'| |CTRL-W_z| |:pclose|
Also see: |g:netrw_chgwin| |netrw-P| 'previewwindow' |CTRL-W_z| |:pclose|
PREVIOUS WINDOW *netrw-P* *netrw-prvwin* {{{2
@@ -3413,7 +3397,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
not by netrw, and there appears to be no way to work around
it. Coupled with the default cmdheight of 1, this message
causes the "Press ENTER..." prompt. So: read |hit-enter|;
I also suggest that you set your |'cmdheight'| to 2 (or more) in
I also suggest that you set your 'cmdheight' to 2 (or more) in
your <.vimrc> file.
*netrw-p10*
@@ -3532,7 +3516,7 @@ Example: Clear netrw's marked file list via a mapping on gu >
I expect both buffers to exist, but only the last one does.
(Lance) Problem is caused by "set autochdir" in .vimrc.
(drchip) I am able to duplicate this problem with |'acd'| set.
(drchip) I am able to duplicate this problem with 'acd' set.
It appears that the buffers are not exactly closed;
a ":ls!" will show them (although ":ls" does not).

View File

@@ -1,4 +1,4 @@
*pi_tar.txt* For Vim version 9.1. Last change: 2025 Jul 15
*pi_tar.txt* For Vim version 9.1. Last change: 2025 Aug 10
+====================+
| Tar File Interface |
@@ -38,9 +38,9 @@ Copyright 2005-2017: *tar-copyright*
:Vimuntar [vimhome]
This command copies, if necessary, the tarball to the .vim or vimfiles
directory using the first writable directory in the |'runtimepath'|
when no [vimhome] is specified. Otherwise, the [vimhome] argument
allows the user to specify that directory, instead.
directory using the first writable directory in the 'runtimepath' when
no [vimhome] is specified. Otherwise, the [vimhome] argument allows
the user to specify that directory, instead.
The copy is done using the command in *g:tar_copycmd* , which is >
cp for cygwin, unix, macunix
@@ -173,7 +173,7 @@ Copyright 2005-2017: *tar-copyright*
v2 * converted to use Vim7's new autoload feature
by Bram Moolenaar
v1 (original) * Michael Toren
(see http://michael.toren.net/code/
(see michael.toren.net/code/
link seems dead)
==============================================================================

View File

@@ -1,4 +1,4 @@
*pi_vimball.txt* For Vim version 9.1. Last change: 2016 Apr 11
*pi_vimball.txt* For Vim version 9.1. Last change: 2025 Aug 06
----------------
Vimball Archiver
@@ -51,7 +51,7 @@ Copyright: (c) 2004-2015 by Charles E. Campbell *Vimball-copyright*
:RmVimball someplugin
< This operation is not at all easy for zips and tarballs, for example.
Vimball examines the user's |'runtimepath'| to determine where to put
Vimball examines the user's 'runtimepath' to determine where to put
the scripts. The first directory mentioned on the runtimepath is
usually used if possible. Use >
:echo &rtp
@@ -66,7 +66,7 @@ MAKING A VIMBALL *:MkVimball*
The range is composed of lines holding paths to files to be included
in your new vimball, omitting the portion of the paths that is
normally specified by the runtimepath (|'rtp'|). As an example: >
normally specified by the runtimepath ('rtp'). As an example: >
plugin/something.vim
doc/something.txt
< using >
@@ -77,7 +77,7 @@ MAKING A VIMBALL *:MkVimball*
"filename.vba" file already exists, then MkVimball will issue a
warning and not create the file. Note that these paths are relative
to your .vim (vimfiles) directory, and the files should be in that
directory. The vimball plugin normally uses the first |'runtimepath'|
directory. The vimball plugin normally uses the first 'runtimepath'
directory that exists as a prefix; don't use absolute paths, unless
the user has specified such a path.
@@ -110,7 +110,7 @@ MAKING DIRECTORIES VIA VIMBALLS *g:vimball_mkdir*
CONTROLLING THE VIMBALL EXTRACTION DIRECTORY *g:vimball_home*
You may override the use of the |'runtimepath'| by specifying a
You may override the use of the 'runtimepath' by specifying a
variable, g:vimball_home.
*vimball-extract*
@@ -138,7 +138,7 @@ MANUALLY INVOKING VIMBALL EXTRACTION *:UseVimball*
vimball. One may choose to execute it by hand instead of sourcing
the vimball; one may also choose to specify a path for the
installation, thereby overriding the automatic choice of the first
existing directory on the |'runtimepath'|.
existing directory on the 'runtimepath'.
REMOVING A VIMBALL *:RmVimball*
@@ -146,8 +146,8 @@ REMOVING A VIMBALL *:RmVimball*
This command removes all files generated by the specified vimball
(but not any directories it may have made). One may choose a path
for de-installation, too (see |'runtimepath'|); otherwise, the
default is the first existing directory on the |'runtimepath'|.
for de-installation, too (see 'runtimepath'); otherwise, the default
is the first existing directory on the 'runtimepath'.
To implement this, a file (.VimballRecord) is made in that directory
containing a record of what files need to be removed for all vimballs
used thus far.
@@ -188,7 +188,7 @@ WINDOWS *vimball-windows*
prepending the current directory to it.
33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba
* Changed silent! to sil! (shorter)
* Safed |'swf'| setting (during vimball extraction,
* Safed 'swf' setting (during vimball extraction,
its now turned off)
32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and
:so someplugin.vba.gz (and the other supported
@@ -247,7 +247,7 @@ WINDOWS *vimball-windows*
14 : May 26, 2006 * bugfixes
13 : May 01, 2006 * exists("&acd") used to determine if the acd
option exists
12 : May 01, 2006 * bugfix - the |'acd'| option is not always defined
12 : May 01, 2006 * bugfix - the 'acd' option is not always defined
11 : Apr 27, 2006 * VimballList would create missing subdirectories that
the vimball specified were needed. Fixed.
10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of

View File

@@ -1,4 +1,4 @@
*print.txt* For Vim version 9.1. Last change: 2024 May 11
*print.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -444,8 +444,8 @@ you need to define your own PostScript font encoding vector. Details on how
to define a font encoding vector is beyond the scope of this help file, but
you can find details in the PostScript Language Reference Manual, 3rd Edition,
published by Addison-Wesley and available in PDF form at
http://www.adobe.com/. The following describes what you need to do for Vim to
locate and use your print character encoding.
https://www.adobe.com/. The following describes what you need to do for Vim
to locate and use your print character encoding.
i. Decide on a unique name for your encoding vector, one that does not clash
with any of the recognized or standard encoding names that Vim uses (see
@@ -523,7 +523,7 @@ It is possible to define your own multibyte character set although this
should not be attempted lightly. A discussion on the process if beyond the
scope of these help files. You can find details on CMap (character map) files
in the document 'Adobe CMap and CIDFont Files Specification, Version 1.0',
available from http://www.adobe.com as a PDF file.
available from https://www.adobe.com as a PDF file.
==============================================================================
6. PostScript Printing Troubleshooting *postscript-print-trouble*
@@ -628,7 +628,7 @@ OpenVMS
- Is apparently supported in the main code now (untested).
See (link seems dead):
http://wwwthep.physik.uni-mainz.de/~plass/gv/
wwwthep.physik.uni-mainz.de/~plass/gv/
MS-Windows

View File

@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 9.1. Last change: 2025 Apr 06
*quickfix.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1048,8 +1048,8 @@ commands can be combined to create a NewGrep command: >
{pattern} is a Vim search pattern. Instead of
enclosing it in / any non-ID character (see
|'isident'|) can be used, so long as it does not
appear in {pattern}.
'isident') can be used, so long as it does not appear
in {pattern}.
'ignorecase' applies. To overrule it put |/\c| in the
pattern to ignore case or |/\C| to match case.
'smartcase' is not used.
@@ -1675,8 +1675,6 @@ Useful values for the 'makeprg' options therefore are:
setlocal makeprg=./alltests.py " Run a testsuite
setlocal makeprg=python\ %:S " Run a single testcase
Also see http://vim.sourceforge.net/tip_view.php?tip_id=280.
PYTEST COMPILER *compiler-pytest*
Commonly used compiler options can be added to 'makeprg' by setting the

View File

@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 9.1. Last change: 2025 Jul 16
*quickref.txt* For Vim version 9.1. Last change: 2025 Aug 16
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -607,6 +607,8 @@ Short explanation of each option: *option-list*
'arabic' 'arab' for Arabic as a default second language
'arabicshape' 'arshape' do shaping for Arabic characters
'autochdir' 'acd' change directory to the file in the current window
'autocomplete' 'ac' enable automatic completion in insert mode
'autocompletedelay' 'acl' delay in msec before menu appears after typing
'autoindent' 'ai' take indent for new line from previous line
'autoread' 'ar' autom. read file when changed outside of Vim
'autoshelldir' 'asd' change directory to the shell's current directory
@@ -1459,7 +1461,7 @@ Context-sensitive completion on the command-line:
------------------------------------------------------------------------------
*Q_fo* Folding
|'foldmethod'| set foldmethod=manual manual folding
'foldmethod' set foldmethod=manual manual folding
set foldmethod=indent folding by indent
set foldmethod=expr folding by 'foldexpr'
set foldmethod=syntax folding by syntax regions

View File

@@ -1,4 +1,4 @@
*remote.txt* For Vim version 9.1. Last change: 2022 Feb 17
*remote.txt* For Vim version 9.1. Last change: 2025 Aug 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -61,7 +61,10 @@ The following command line arguments are available:
--servername {name} Become the server {name}. When used together
with one of the --remote commands: connect to
server {name} instead of the default (see
below). The name used will be uppercase.
below). The name used will be uppercase. If
using the socketserver, you can specify a
path, see |socketserver-name| for more
details.
*--remote-send*
--remote-send {keys} Send {keys} to server and exit. The {keys}
are not mapped. Special key names are
@@ -72,6 +75,12 @@ The following command line arguments are available:
on stdout.
*--serverlist*
--serverlist Output a list of server names.
*--clientserver*
--clientserver {method} Use the specified method {method} as the
backend for clientserver functionality. Can
either be "socket" or "x11".
{only available when Vim is compiled with both
|+X11| and |+socketserver| features}
Examples ~
@@ -105,7 +114,8 @@ specified name is not available, a postfix is applied until a free name is
encountered, i.e. "gvim1" for the second invocation of gvim on a particular
X-server. The resulting name is available in the servername builtin variable
|v:servername|. The case of the server name is ignored, thus "gvim" and
"GVIM" are considered equal.
"GVIM" are considered equal. Note if a socket server is being used, there are
some differences, see |socketserver-differences|.
When Vim is invoked with --remote, --remote-wait or --remote-send it will try
to locate the server name determined by the invocation name and --servername
@@ -119,7 +129,8 @@ itself. This way it is not necessary to know whether gvim is already started
when sending command to it.
The --serverlist argument will cause Vim to print a list of registered command
servers on the standard output (stdout) and exit.
servers on the standard output (stdout) and exit. If a socket server is being
used, there are caveats, see |socketserver-differences|.
*{server}*
The {server} argument is used by several functions. When this is an empty
string then on Unix the default server name is used, which is "GVIM". On
@@ -206,4 +217,64 @@ When using gvim, the --remote-wait only works properly this way: >
start /w gvim --remote-wait file.txt
<
==============================================================================
3. Socket server specific items *socketserver-clientserver*
*E1563* *E1564* *E1565* *E1566* *E1567*
The communication between client and server is done using Unix domain sockets.
These sockets are either placed in these directories in the following order of
availability:
1. "$XDG_RUTIME_DIR/vim" if $XDG_RUNTIME_DIR is set in the environment.
2. "$TMPDIR/vim-[uid]", where "[uid]" is the uid of the user. This
directory will have the access permissions set to 700 so only the user
can read or write from/to it. If $TMPDIR is not set, "/tmp" is used.
*socketserver-name*
When specifying the server id/name, it can be taken as a generic name or an
absolute or relative path. If the server id starts with either a "/"
(absolute) or "./" | "../" (relative), then it is taken as path to the socket.
Otherwise the server id will be the filename of the socket which will be
placed in the above common directories. Note that a server id/name can only
contain slashes "/" if it is taken as a path, so names such as "abc/dir" will
be invalid.
Socket server functionality is available in both GTK GUI and terminal versions of
Vim. Unless Vim is compiled with |+autoservername| feature, the socket server
will have to started explicitly, just like X11, even in the GUI.
If Vim crashes or does not exit cleanly, the socket server will not remove the
socket file and it will be left around. This is generally not a problem,
because if a socket name is taken, Vim checks if the socket in its place is
dead (not attached to any process), and can replace it instead of finding a
new name.
To send commands to a Vim socket server from another application, read the
source file src/os_unix.c, there is detailed description of the protocol used.
*socketserver-differences*
Most of the functionality is the same as X11, however unlike X11, where the
client does not need to be a server in order to communicate with another
server, the socket server requires the server to be running even as a client.
The exception is |serverlist()| or the |--serverlist| argument, which does not
require the server to be running.
Additionally, the server id or client id will not be a number like X11 or
MS-Windows (shown in hex representation), instead it is the absolute path to
the socket. This can be seen via the |v:servername| variable.
The |--serverlist| argument will act just like X11, however it only checks the
given common directories above. If a custom path is used for a socket, it
will not be detected, such as a path either not in $XDG_RUNTIME_DIR or
<$TMPDIR or /tmp>/vim of the |--serverlist| Vim process.
If you have both |+socketserver| and |+X11| compiled, you will need to add
|--clientserver| set to "socket" in combination with |--serverlist| to list
the available servers. You cannot list both types of backends in one command.
*socketserver-x11*
If Vim is compiled with both |+X11| and |+socketserver|, then deciding which
backend to use is done at startup time, via the |--clientserver| argument. By
default if it is not specified, then X11 will be used. A Vim instance using a
socket server cannot communicate with one using X11.
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*spell.txt* For Vim version 9.1. Last change: 2024 Oct 05
*spell.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -218,7 +218,7 @@ CTRL-X s to find suggestions. This works like Insert mode completion. Use
CTRL-N to use the next suggestion, CTRL-P to go back. |i_CTRL-X_s|
The 'spellsuggest' option influences how the list of suggestions is generated
and sorted. See |'spellsuggest'|.
and sorted. See 'spellsuggest'.
The 'spellcapcheck' option is used to check the first word of a sentence
starts with a capital. This doesn't work for the first word in the file.

View File

@@ -1,4 +1,4 @@
*sponsor.txt* For Vim version 9.1. Last change: 2024 Aug 14
*sponsor.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -140,7 +140,8 @@ Are the donations tax deductible?
That depends on your country. The donations to help the children in |Uganda|
are tax deductible in Holland, Germany, Canada and in the USA. See the ICCF
website http://iccf-holland.org/donate.html.
website https://iccf-holland.org/donate.html (Note: this process is currently
undergoing some changes and will be done differently in the future).
Can you send me a bill?

View File

@@ -1,4 +1,4 @@
*starting.txt* For Vim version 9.1. Last change: 2025 Jun 28
*starting.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -505,7 +505,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
Using the "-u" argument with another argument than DEFAULTS
has the side effect that the 'compatible' option will be on by
default. This can have unexpected effects. See
|'compatible'|.
'compatible'.
*-U* *E230*
-U {gvimrc} The file {gvimrc} is read for initializations when the GUI
@@ -1380,7 +1380,7 @@ these steps:
You need to escape special characters, esp. spaces.
Note that when you create a .vimrc file, this can influence the 'compatible'
option, which has several side effects. See |'compatible'|.
option, which has several side effects. See 'compatible'.
":mkvimrc", ":mkexrc" and ":mksession" write the command to set or reset the
'compatible' option to the output file first, because of these side effects.
@@ -1666,7 +1666,7 @@ VIMINFO FILE NAME *viminfo-file-name*
is not set, "$VIM\_viminfo" is used. When $VIM is also not set,
"c:\_viminfo" is used.
- The 'n' flag in the 'viminfo' option can be used to specify another viminfo
file name |'viminfo'|.
file name 'viminfo'.
- The "-i" Vim argument can be used to set another file name, |-i|. When the
file name given is "NONE" (all uppercase), no viminfo file is ever read or
written. Also not for the commands below!

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 9.1. Last change: 2025 Jul 20
*syntax.txt* For Vim version 9.1. Last change: 2025 Aug 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1116,6 +1116,23 @@ in the "after" directory in 'runtimepath'. For Unix this would be
syn sync fromstart
set foldmethod=syntax
CANGJIE *cangjie.vim* *ft-cangjie-syntax*
This file provides syntax highlighting for the Cangjie programming language, a
new-generation language oriented to full-scenario intelligence.
All highlighting is enabled by default. To disable highlighting for a
specific group, set the corresponding variable to 0 in your |vimrc|.
All options to disable highlighting are: >
:let g:cangjie_comment_color = 0
:let g:cangjie_identifier_color = 0
:let g:cangjie_keyword_color = 0
:let g:cangjie_macro_color = 0
:let g:cangjie_number_color = 0
:let g:cangjie_operator_color = 0
:let g:cangjie_string_color = 0
:let g:cangjie_type_color = 0
CH *ch.vim* *ft-ch-syntax*
C/C++ interpreter. Ch has similar syntax highlighting to C and builds upon
@@ -1637,7 +1654,7 @@ Elixir.
FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax*
FlexWiki is an ASP.NET-based wiki package which used to be available at
http://www.flexwiki.com
www.flexwiki.com
NOTE: This site currently doesn't work, on Wikipedia is mentioned that
development stopped in 2009.
@@ -1962,7 +1979,7 @@ are read during initialization) >
:let html_my_rendering=1
If you'd like to see an example download mysyntax.vim at
http://www.fleiner.com/vim/download.html
https://www.fleiner.com/vim/download.html
You can also disable this rendering by adding the following line to your
vimrc file: >
@@ -2231,6 +2248,15 @@ Certain modifiers are incompatible with each other, e.g. `abstract` and
and can be differently highlighted as a group than other modifiers with >
:hi link javaConceptKind NonText
All instances of variable-width lookbehind assertions (|/\@<!| and |/\@<=|),
resorted to in syntax item definitions, are confined to arbitrary byte counts.
Another arbitrary value can be selected for a related group of definitions.
For example: >
:let g:java_lookbehind_byte_counts = {'javaMarkdownCommentTitle': 240}
Where each key name of this dictionary is the name of a syntax item. The use
of these assertions in syntax items may vary among revisions, so no definitive
set of supported key names is committed to.
If you notice highlighting errors while scrolling backwards, which are fixed
when redrawing with CTRL-L, try setting the "g:java_minlines" variable to
a larger number: >
@@ -2343,7 +2369,7 @@ the parentheses and backquoted parentheses. Because of the quantity of
colorization levels, unlike non-rainbow highlighting, the rainbow mode
specifies its highlighting using ctermfg and guifg, thereby bypassing the
usual color scheme control using standard highlighting groups. The actual
highlighting used depends on the dark/bright setting (see |'bg'|).
highlighting used depends on the dark/bright setting (see 'bg').
LITE *lite.vim* *ft-lite-syntax*
@@ -3913,7 +3939,7 @@ always accept such use of @.
*tex-cchar* *tex-cole* *tex-conceal*
Tex: Taking Advantage of Conceal Mode~
If you have |'conceallevel'| set to 2 and if your encoding is utf-8, then a
If you have 'conceallevel' set to 2 and if your encoding is utf-8, then a
number of character sequences can be translated into appropriate utf-8 glyphs,
including various accented characters, Greek characters in MathZones, and
superscripts and subscripts in MathZones. Not all characters can be made into
@@ -3921,7 +3947,7 @@ superscripts or subscripts; the constraint is due to what utf-8 supports.
In fact, only a few characters are supported as subscripts.
One way to use this is to have vertically split windows (see |CTRL-W_v|); one
with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|.
with 'conceallevel' at 0 and the other at 2; and both using 'scrollbind'.
*g:tex_conceal*
Tex: Selective Conceal Mode~
@@ -4048,12 +4074,12 @@ The g:vimsyn_embed option allows users to select what, if any, types of
embedded script highlighting they wish to have. >
g:vimsyn_embed == 0 : don't support any embedded scripts
g:vimsyn_embed =~ 'l' : support embedded Lua
g:vimsyn_embed =~ 'm' : support embedded MzScheme
g:vimsyn_embed =~ 'p' : support embedded Perl
g:vimsyn_embed =~ 'P' : support embedded Python
g:vimsyn_embed =~ 'r' : support embedded Ruby
g:vimsyn_embed =~ 't' : support embedded Tcl
g:vimsyn_embed =~# 'l' : support embedded Lua
g:vimsyn_embed =~# 'm' : support embedded MzScheme
g:vimsyn_embed =~# 'p' : support embedded Perl
g:vimsyn_embed =~# 'P' : support embedded Python
g:vimsyn_embed =~# 'r' : support embedded Ruby
g:vimsyn_embed =~# 't' : support embedded Tcl
<
By default, g:vimsyn_embed is unset, and the Lua and Python script interfaces
are supported.
@@ -4062,19 +4088,19 @@ are supported.
Some folding is now supported with when 'foldmethod' is set to "syntax": >
g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding
g:vimsyn_folding =~ 'a' : fold augroups
g:vimsyn_folding =~ 'c' : fold Vim9 classes
g:vimsyn_folding =~ 'e' : fold Vim9 enums
g:vimsyn_folding =~ 'f' : fold functions
g:vimsyn_folding =~ 'h' : fold let heredocs
g:vimsyn_folding =~ 'i' : fold Vim9 interfaces
g:vimsyn_folding =~ 'H' : fold Vim9 legacy headers
g:vimsyn_folding =~ 'l' : fold Lua heredocs
g:vimsyn_folding =~ 'm' : fold MzScheme heredocs
g:vimsyn_folding =~ 'p' : fold Perl heredocs
g:vimsyn_folding =~ 'P' : fold Python heredocs
g:vimsyn_folding =~ 'r' : fold Ruby heredocs
g:vimsyn_folding =~ 't' : fold Tcl heredocs
g:vimsyn_folding =~# 'a' : fold augroups
g:vimsyn_folding =~# 'c' : fold Vim9 classes
g:vimsyn_folding =~# 'e' : fold Vim9 enums
g:vimsyn_folding =~# 'f' : fold functions
g:vimsyn_folding =~# 'h' : fold let heredocs
g:vimsyn_folding =~# 'i' : fold Vim9 interfaces
g:vimsyn_folding =~# 'H' : fold Vim9 legacy headers
g:vimsyn_folding =~# 'l' : fold Lua heredocs
g:vimsyn_folding =~# 'm' : fold MzScheme heredocs
g:vimsyn_folding =~# 'p' : fold Perl heredocs
g:vimsyn_folding =~# 'P' : fold Python heredocs
g:vimsyn_folding =~# 'r' : fold Ruby heredocs
g:vimsyn_folding =~# 't' : fold Tcl heredocs
<
By default, g:vimsyn_folding is unset. Concatenate the indicated characters
@@ -5520,7 +5546,7 @@ in their own color.
Add a highlight group, or change the highlighting for
an existing group. If a given color name is not
recognized, each `colors/lists/default.vim` found on
|'runtimepath'| will be loaded.
'runtimepath' will be loaded.
See |highlight-args| for the {key}={arg} arguments.
See |:highlight-default| for the optional [default]
argument.

View File

@@ -1,4 +1,4 @@
*tabpage.txt* For Vim version 9.1. Last change: 2025 Jul 20
*tabpage.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -118,7 +118,7 @@ Closing the last window of a tab page closes the tab page too, unless there is
only one tab page.
Using the mouse: If the tab page line is displayed you can click in the "X" at
the top right to close the current tab page. A custom |'tabline'| may show
the top right to close the current tab page. A custom 'tabline' may show
something else.
*:tabc* *:tabclose*
@@ -183,7 +183,7 @@ SWITCHING TO ANOTHER TAB PAGE:
Using the mouse: If the tab page line is displayed you can click in a tab page
label to switch to that tab page. Click where there is no label to go to the
next tab page. |'tabline'|
next tab page. 'tabline'
:tabn[ext] *:tabn* *:tabnext* *gt*
<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>*

View File

@@ -41,7 +41,9 @@ $quote eval.txt /*$quote*
'] motion.txt /*']*
'^ motion.txt /*'^*
'a motion.txt /*'a*
'ac' options.txt /*'ac'*
'acd' options.txt /*'acd'*
'acl' options.txt /*'acl'*
'ai' options.txt /*'ai'*
'akm' options.txt /*'akm'*
'al' options.txt /*'al'*
@@ -62,6 +64,8 @@ $quote eval.txt /*$quote*
'as' todo.txt /*'as'*
'asd' options.txt /*'asd'*
'autochdir' options.txt /*'autochdir'*
'autocomplete' options.txt /*'autocomplete'*
'autocompletedelay' options.txt /*'autocompletedelay'*
'autoindent' options.txt /*'autoindent'*
'autoprint' vi_diff.txt /*'autoprint'*
'autoread' options.txt /*'autoread'*
@@ -555,6 +559,7 @@ $quote eval.txt /*$quote*
'mzschemedll' options.txt /*'mzschemedll'*
'mzschemegcdll' options.txt /*'mzschemegcdll'*
'nf' options.txt /*'nf'*
'noac' options.txt /*'noac'*
'noacd' options.txt /*'noacd'*
'noai' options.txt /*'noai'*
'noakm' options.txt /*'noakm'*
@@ -571,6 +576,7 @@ $quote eval.txt /*$quote*
'noas' todo.txt /*'noas'*
'noasd' options.txt /*'noasd'*
'noautochdir' options.txt /*'noautochdir'*
'noautocomplete' options.txt /*'noautocomplete'*
'noautoindent' options.txt /*'noautoindent'*
'noautoread' options.txt /*'noautoread'*
'noautosave' todo.txt /*'noautosave'*
@@ -1491,6 +1497,7 @@ $quote eval.txt /*$quote*
+scrollbind various.txt /*+scrollbind*
+signs various.txt /*+signs*
+smartindent various.txt /*+smartindent*
+socketserver various.txt /*+socketserver*
+sodium various.txt /*+sodium*
+sound various.txt /*+sound*
+spell various.txt /*+spell*
@@ -1551,6 +1558,7 @@ $quote eval.txt /*$quote*
-- starting.txt /*--*
--- starting.txt /*---*
--clean starting.txt /*--clean*
--clientserver remote.txt /*--clientserver*
--cmd starting.txt /*--cmd*
--echo-wid starting.txt /*--echo-wid*
--gui-dialog-file starting.txt /*--gui-dialog-file*
@@ -4618,6 +4626,8 @@ E143 autocmd.txt /*E143*
E1432 vim9.txt /*E1432*
E1433 vim9.txt /*E1433*
E1434 vim9.txt /*E1434*
E1435 vim9class.txt /*E1435*
E1436 vim9class.txt /*E1436*
E144 various.txt /*E144*
E145 starting.txt /*E145*
E146 change.txt /*E146*
@@ -4688,6 +4698,12 @@ E1559 vim9.txt /*E1559*
E156 sign.txt /*E156*
E1560 vim9.txt /*E1560*
E1561 vim9.txt /*E1561*
E1562 options.txt /*E1562*
E1563 remote.txt /*E1563*
E1564 remote.txt /*E1564*
E1565 remote.txt /*E1565*
E1566 remote.txt /*E1566*
E1567 remote.txt /*E1567*
E157 sign.txt /*E157*
E158 sign.txt /*E158*
E159 sign.txt /*E159*
@@ -5650,6 +5666,7 @@ GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat*
Gnome gui_x11.txt /*Gnome*
H motion.txt /*H*
Haiku os_haiku.txt /*Haiku*
HelpToc-mappings helphelp.txt /*HelpToc-mappings*
I insert.txt /*I*
ICCF uganda.txt /*ICCF*
IM-server mbyte.txt /*IM-server*
@@ -6476,6 +6493,7 @@ c_space_errors syntax.txt /*c_space_errors*
c_syntax_for_h syntax.txt /*c_syntax_for_h*
c_wildchar cmdline.txt /*c_wildchar*
call() builtin.txt /*call()*
cangjie.vim syntax.txt /*cangjie.vim*
carriage-return intro.txt /*carriage-return*
case change.txt /*case*
catch-all eval.txt /*catch-all*
@@ -7414,6 +7432,7 @@ ft-bash-syntax syntax.txt /*ft-bash-syntax*
ft-basic-syntax syntax.txt /*ft-basic-syntax*
ft-c-omni insert.txt /*ft-c-omni*
ft-c-syntax syntax.txt /*ft-c-syntax*
ft-cangjie-syntax syntax.txt /*ft-cangjie-syntax*
ft-ch-syntax syntax.txt /*ft-ch-syntax*
ft-changelog-plugin filetype.txt /*ft-changelog-plugin*
ft-changelog-syntax syntax.txt /*ft-changelog-syntax*
@@ -8583,6 +8602,7 @@ inputlist() builtin.txt /*inputlist()*
inputrestore() builtin.txt /*inputrestore()*
inputsave() builtin.txt /*inputsave()*
inputsecret() builtin.txt /*inputsecret()*
ins-autocompletion insert.txt /*ins-autocompletion*
ins-completion insert.txt /*ins-completion*
ins-completion-menu insert.txt /*ins-completion-menu*
ins-expandtab insert.txt /*ins-expandtab*
@@ -9202,7 +9222,6 @@ netrw-mm pi_netrw.txt /*netrw-mm*
netrw-modify pi_netrw.txt /*netrw-modify*
netrw-mouse pi_netrw.txt /*netrw-mouse*
netrw-move pi_netrw.txt /*netrw-move*
netrw-mp pi_netrw.txt /*netrw-mp*
netrw-mr pi_netrw.txt /*netrw-mr*
netrw-ms pi_netrw.txt /*netrw-ms*
netrw-mt pi_netrw.txt /*netrw-mt*
@@ -10213,6 +10232,10 @@ slow-fast-terminal term.txt /*slow-fast-terminal*
slow-start starting.txt /*slow-start*
slow-terminal term.txt /*slow-terminal*
socket-interface channel.txt /*socket-interface*
socketserver-clientserver remote.txt /*socketserver-clientserver*
socketserver-differences remote.txt /*socketserver-differences*
socketserver-name remote.txt /*socketserver-name*
socketserver-x11 remote.txt /*socketserver-x11*
sort() builtin.txt /*sort()*
sorting change.txt /*sorting*
sound-functions usr_41.txt /*sound-functions*

View File

@@ -1,4 +1,4 @@
*term.txt* For Vim version 9.1. Last change: 2024 Dec 31
*term.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -472,13 +472,13 @@ Added by Vim (there are no standard codes for these):
t_RV request terminal version string (works for *t_RV* *'t_RV'*
xterm and other terminal emulators) The
response is stored in |v:termresponse| |xterm-8bit|
|'ttymouse'| |xterm-codes|
'ttymouse' |xterm-codes|
t_XM enable/disable mouse reporting, *t_XM* *'t_XM'*
see |mouse-reporting| below
t_RK request terminal keyboard protocol state; *t_RK* *'t_RK'*
sent after |t_TI|
t_u7 request cursor position (for xterm) *t_u7* *'t_u7'*
see |'ambiwidth'|
see 'ambiwidth'
The response is stored in |v:termu7resp|
t_RF request terminal foreground color *t_RF* *'t_RF'*
The response is stored in |v:termrfgresp|
@@ -991,7 +991,7 @@ When the X-server clipboard is available, the command server described in
*xterm-copy-paste*
NOTE: In some (older) xterms, it's not possible to move the cursor past column
95 or 223. This is an xterm problem, not Vim's. Get a newer xterm
|color-xterm|. Also see |'ttymouse'|.
|color-xterm|. Also see 'ttymouse'.
Copy/paste in xterm with (current mode NOT included in 'mouse'):
1. Press left mouse button on first letter of text, move mouse pointer to last

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 9.1. Last change: 2025 Jul 21
*todo.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -289,7 +289,8 @@ Terminal emulator window:
then when the window is resized redraw those lines.
- Redrawing is slow with Motif. (Ramel Eshed)
- For the GUI fill termios with default values, perhaps like pangoterm:
http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
(dead link)
bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
- When 'encoding' is not utf-8, or the job is using another encoding, setup
conversions.
@@ -1426,12 +1427,6 @@ Possibly include the needed code so that it can be built everywhere.
Add a way to restart a timer. It's similar to timer_stop() and timer_start(),
but the reference remains valid.
Need to try out instructions in INSTALLpc.txt about how to install all
interfaces and how to build Vim with them.
Appveyor build with self-installing executable, includes getting most
interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build
result: https://ci.appveyor.com/project/k-takata/vim/history
Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10)
@@ -1654,7 +1649,7 @@ Or minpac: https://github.com/k-takata/minpac, since it leverages the builtin
package feature.
Long message about this from ZyX, 2014 Mar 23. And following replies.
Also see (link seems dead):
http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html
User view:
- Support multiple sources, basically any http:// URL. Or a central place that
will work for everybody (github? redirects from vim.org?).
@@ -2376,7 +2371,7 @@ Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct
Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
Using Aap to build Vim: add remarks about how to set personal preferences.
Example on http://www.calmar.ws/tmp/aap.html (link seems dead)
Example on www.calmar.ws/tmp/aap.html (link seems dead)
When 'diffopt' has "context:0" a single deleted line causes two folds to merge
and mess up syncing. (Austin Jennings, 2008 Jan 31)
@@ -2407,7 +2402,7 @@ Asked about latest version: 0.77.1 is on www.vim.org.
More AmigaOS4 patches. (Peter Bengtsson, Nov 9)
Amiga patches with vbcc. (Adrien Destugues, 2010 Aug 30)
(link seems dead): http://pulkomandy.ath.cx/drop/vim73_vbcc_amiga.diff
(link seems dead): pulkomandy.ath.cx/drop/vim73_vbcc_amiga.diff
Problem with compound words? (Bert, 2008 May 6)
No warning for when flags are defined after they are used in an affix.
@@ -2478,7 +2473,7 @@ Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7)
Win32: XPM support only works with path without spaces. Patch by Mathias
Michaelis, 2006 Jun 9. Another patch for more path names, 2006 May 31.
New version (link seems dead):
http://members.tcnet.ch/michaelis/vim/patches.zip
members.tcnet.ch/michaelis/vim/patches.zip
(also for other patches by Mathias, see mail Feb 22)
Win32: compiling with normal features and OLE fails. Patch by Mathias
@@ -3018,7 +3013,7 @@ Win32 GUI known bugs:
the screen.
8 The -P argument doesn't work very well with many MDI applications.
The last argument of CreateWindowEx() should be used, see MSDN docs.
Tutorial (link seems dead): http://win32assembly.online.fr/tut32.html
Tutorial (link seems dead): win32assembly.online.fr/tut32.html
6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":"
of ":only" is highlighted like the cursor. (Lipelis)
8 When 'encoding' is "utf-8", should use 'guifont' for both normal and wide
@@ -3248,7 +3243,7 @@ Macintosh:
7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both.
Load the Perl library dynamically see Python sources file dynload_mac
(Jack)
dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html
dynamic linking: https://developer.apple.com/library/archive/technotes/tn2064/_index.html
8 inputdialog() doesn't resize when giving more text lines. (David Fishburn,
2006 Sept 28)
8 Define vim_mkdir() for Macintosh.
@@ -3597,7 +3592,7 @@ Most interesting new features to be added when all bugs have been fixed:
198 standard http://www.jcp.org/en/jsr/detail?id=198.
Eclim does it: http://eclim.sourceforge.net/ (Eric Van Dewoestine)
Plugin that uses a terminal emulator: http://vimplugin.sf.net
And another one: http://www.satokar.com/viplugin/index.php
And another one: (dead link) satokar.com/viplugin/index.php
- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
Especially when using the scrollbar. Typing a cursor-movement command
scrolls back to where the cursor is.
@@ -3710,7 +3705,7 @@ Spell checking:
Is COMPLEXPREFIXES necessary when we have flags for affixes?
- There is no Finnish spell checking file. For openoffice Voikko is now
used, which is based on Malaga (link seems dead):
http://home.arcor.de/bjoern-beutel/malaga/ (Teemu Likonen)
home.arcor.de/bjoern-beutel/malaga/ (Teemu Likonen)
8 ":mkspell" still takes much too long in Hungarian dictionary from
hunspell. Only solution appears to be to postpone secondary suffixes.
8 Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG.
@@ -3761,14 +3756,14 @@ Spell checking:
word/flags and affix.
- Implement multiple flags for compound words and CMP item?
Await comments from other spell checking authors.
- Also see tklspell: http://tkltrans.sourceforge.net/
- Also see tklspell: (dead link) tkltrans.sourceforge.net/
8 Charles Campbell asks for method to add "contained" groups to existing
syntax items (to add @Spell).
Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn
cluster" but change the contains list directly for matching syntax items.
- References: MySpell library (in OpenOffice.org), (links seem dead):
http://spellchecker.mozdev.org/source.html
http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
spellchecker.mozdev.org/source.html
(dead link) whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
author: Kevin Hendricks <kevin.hendricks@sympatico.ca>
8 It is currently not possible to mark "can not" as rare, because "can" and
"not" are good words. Find a way to let "rare" overrule "good"?
@@ -4514,7 +4509,7 @@ Win32 GUI:
8 Could keep console open to run multiple commands, to avoid the need to hit
return in every console.
Also: Look at how Emacs does run external commands:
http://www.cs.washington.edu/homes/voelker/ntemacs.html.
(deak link) www.cs.washington.edu/homes/voelker/ntemacs.html.
8 Need a separate PopUp menu for modeless selection. Need two new commands:
Copy selection to clipboard, Paste selection (as typed text).
8 Support copy/paste for other file formats. At least HTML, perhaps RTF.
@@ -4684,7 +4679,7 @@ Autocommands:
*'autosave'* *'as'* *'noautosave'* *'noas'*
'autosave' 'as' number (default 0)
Automatically write the current buffer to file N seconds after the
last change has been made and when |'modified'| is still set.
last change has been made and when 'modified' is still set.
Default: 0 = do not autosave the buffer.
Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make
them save the file itself besides the swapfile.
@@ -4721,7 +4716,7 @@ Omni completion:
http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
Ivan Villanueva has something for Java.
Emacs (link seems dead):
http://www.xref-tech.com/xrefactory/more_c_completion.html
www.xref-tech.com/xrefactory/more_c_completion.html
Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
- Pre-expand abbreviations, show which abbrevs would match?
@@ -5246,7 +5241,7 @@ Searching:
to find out how much time has passed. Or use SIGALRM. Where to show the
number?
7 Support for approximate-regexps to find similar words (agrep
http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html).
http://www.tgries.de/agrep/ tre: (dead link) laurikari.net/tre/index.html).
8 Add an item for a big character range, so that one can search for a
chinese character: \z[234-1234] or \z[XX-YY] or \z[0x23-0x234].
7 Add an item stack to allow matching (). One side is "push X on

View File

@@ -1,4 +1,4 @@
*uganda.txt* For Vim version 9.1. Last change: 2025 Jul 08
*uganda.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -24,7 +24,7 @@ The Open Publication License applies to the Vim documentation, see
The icons used for the toolbar in the Win32 GUI are from the "Farm-Fresh Web
Icons" set. These icons are licensed under the Creative Commons Attribution
3.0 License and were created by FatCow Web Hosting. They were previously
available at http://www.fatcow.com/free-icons and are still available at:
available at (dead link) fatcow.com/free-icons and are still available at:
https://www.iconarchive.com/show/farm-fresh-icons-by-fatcow.1.html

View File

@@ -1,4 +1,4 @@
*userfunc.txt* For Vim version 9.1. Last change: 2023 May 23
*userfunc.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -378,7 +378,7 @@ the script is a |Vim9| script, this may also be caused by the function not
being exported.
*E132*
The recursiveness of user functions is restricted with the |'maxfuncdepth'|
The recursiveness of user functions is restricted with the 'maxfuncdepth'
option.
It is also possible to use `:eval`. It does not support a range, but does

View File

@@ -1,4 +1,4 @@
*usr_02.txt* For Vim version 9.1. Last change: 2025 Jun 03
*usr_02.txt* For Vim version 9.1. Last change: 2025 Jul 22
VIM USER MANUAL - by Bram Moolenaar
@@ -614,7 +614,7 @@ Summary: *help-summary* >
< for how the '|' is handled in mappings.
15) Command definitions are talked about :h command-topic, so use >
:help command-bar
:help command-bang
< to find out about the '!' argument for custom commands.
16) Window management commands always start with CTRL-W, so you find the

View File

@@ -1,4 +1,4 @@
*usr_06.txt* For Vim version 9.1. Last change: 2024 Oct 05
*usr_06.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM USER MANUAL - by Bram Moolenaar
@@ -205,7 +205,7 @@ file: >
As a color scheme author, you should be able to rely on some color names for
GUI colors. These are defined in `colors/lists/default.vim`. All such files
found on the |'runtimepath'| are loaded each time the colorscheme command is
found on the 'runtimepath' are loaded each time the colorscheme command is
run. A canonical list is provided by the vim distribution, which should
include all X11 colors (previously defined in rgb.txt).

View File

@@ -1,4 +1,4 @@
*usr_23.txt* For Vim version 9.1. Last change: 2020 Dec 19
*usr_23.txt* For Vim version 9.1. Last change: 2025 Jul 22
VIM USER MANUAL - by Bram Moolenaar
@@ -118,7 +118,7 @@ Someone sends you an e-mail message, which refers to a file by its URL. For
example:
You can find the information here: ~
ftp://ftp.vim.org/pub/vim/README ~
https://ftp.nluug.nl/pub/vim/README
You could start a program to download the file, save it on your local disk and
then start Vim to edit it.

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 9.1. Last change: 2025 Jul 21
*usr_41.txt* For Vim version 9.1. Last change: 2025 Aug 18
VIM USER MANUAL - by Bram Moolenaar
@@ -30,10 +30,10 @@ Table of contents: |usr_toc.txt|
*41.1* Introduction *vim-script-intro* *script*
Let's start with some nomenclature. A Vim script is any file that Vim can
interpret and execute. This includes files written in Vim's scripting language
like for example .vim files or configuration files like .vimrc and .gvimrc.
These scripts may define functions, commands and settings that Vim uses to
customize and extend its behavior.
interpret and execute. This includes files written in Vim's scripting
language like for example .vim files or configuration files like .vimrc and
.gvimrc. These scripts may define functions, commands and settings that Vim
uses to customize and extend its behavior.
*vim-script-notation*
The correct notation is "Vim script" (or "Vim9 script" when refering to the
@@ -125,8 +125,8 @@ make such a loop, it can be written much more compact: >
echo $"count is {i}"
endfor
We won't explain how `for`, `range()`and `$"string"` work until later. Follow
the links if you are impatient.
We won't explain how `for`, `range()` and `$"string"` work until later.
Follow the links if you are impatient.
TRYING OUT EXAMPLES
@@ -749,7 +749,7 @@ String manipulation: *string-functions*
str2list() get list of numbers from a string
str2nr() convert a string to a Number
str2float() convert a string to a Float
printf() format a string according to % items
printf() format a string according to "%" items
escape() escape characters in a string with a '\'
shellescape() escape a string for use with a shell command
fnameescape() escape a file name for use with a Vim command
@@ -806,6 +806,7 @@ String manipulation: *string-functions*
ngettext() lookup single/plural message translation
str2blob() convert a list of strings into a blob
blob2str() convert a blob into a list of strings
items() get List of String index-character pairs
List manipulation: *list-functions*
get() get an item without error for wrong index
@@ -832,9 +833,8 @@ List manipulation: *list-functions*
range() return a List with a sequence of numbers
string() String representation of a List
call() call a function with List as arguments
index() index of a value in a List or Blob
indexof() index in a List or Blob where an expression
evaluates to true
index() index of a value in a List
indexof() index in a List where an expression is true
max() maximum value in a List
min() minimum value in a List
count() count number of times a value appears in a List
@@ -918,6 +918,8 @@ Blob manipulation: *blob-functions*
blob2list() get a list of numbers from a blob
list2blob() get a blob from a list of numbers
reverse() reverse the order of numbers in a blob
index() index of a value in a Blob
indexof() index in a Blob where an expression is true
Other computation: *bitwise-function*
and() bitwise AND
@@ -1456,9 +1458,9 @@ Various: *various-functions*
luaeval() evaluate |Lua| expression
mzeval() evaluate |MzScheme| expression
perleval() evaluate Perl expression (|+perl|)
py3eval() evaluate Python expression (|+python3|)
pyeval() evaluate Python expression (|+python|)
perleval() evaluate Perl expression
py3eval() evaluate Python expression
pyeval() evaluate Python expression
pyxeval() evaluate |python_x| expression
rubyeval() evaluate |Ruby| expression
@@ -1586,7 +1588,7 @@ once for every line in the range, with the cursor in that line. Example: >
If you call this function with: >
:10,15Number()
:10,15call Number()
The function will be called six times, starting on line 10 and ending on line
15.

View File

@@ -1,4 +1,4 @@
*usr_90.txt* For Vim version 9.1. Last change: 2025 Mar 03
*usr_90.txt* For Vim version 9.1. Last change: 2025 Jul 24
VIM USER MANUAL - by Bram Moolenaar
@@ -189,69 +189,49 @@ source code yourself!
==============================================================================
*90.2* MS-Windows
There are two ways to install the Vim program for Microsoft Windows. You can
uncompress several archives, or use a self-installing big archive. Most users
with fairly recent computers will prefer the second method. For the first
one, you will need:
There are several ways to install the Vim program for Microsoft Windows:
- An archive with binaries for Vim.
- The Vim runtime archive.
- A program to unpack the zip files.
1. Official Website Download (Stable)~
To get the Vim archives, look in this file for a mirror near you, this should
provide the fastest download:
Visit the official Vim website at https://www.vim.org to download the latest
stable version. The site links to the Windows installer that works out of the
box for most users.
ftp://ftp.vim.org/pub/vim/MIRRORS
2. Using winget (Windows Package Manager) ~
Or use the home site ftp.vim.org, if you think it's fast enough. Go to the
"pc" directory and you'll find a list of files there. The version number is
embedded in the file name. You will want to get the most recent version.
We will use "82" here, which is version 8.2.
If you prefer using the command line, you can quickly install Vim using
Windows' built-in package manager for the stable version: >
gvim82.exe The self-installing archive.
winget install vim.vim
This is all you need for the second method. Just launch the executable, and
follow the prompts.
Or to download the latest nightly version, use: >
For the first method you must choose one of the binary archives. These are
available:
winget install vim.vim.nightly
gvim82.zip The normal MS-Windows GUI version.
gvim82ole.zip The MS-Windows GUI version with OLE support.
Uses more memory, supports interfacing with
other OLE applications.
vim82w32.zip 32 bit MS-Windows console version.
This method ensures you get an up-to-date version with minimal hassle.
You only need one of them. Although you could install both a GUI and a
console version. You always need to get the archive with runtime files.
3. GitHub Installer (All Architectures) ~
vim82rt.zip The runtime files.
For more control over the installation (or if you're using a specific CPU
architecture like ARM), visit the official GitHub repository:
Use your un-zip program to unpack the files. For example, using the "unzip"
program: >
https://github.com/vim/vim-win32-installer/
cd c:\
unzip path\gvim82.zip
unzip path\vim82rt.zip
This repo provides daily installer and portable zip archives for:
This will unpack the files in the directory "c:\vim\vim82". If you already
have a "vim" directory somewhere, you will want to move to the directory just
above it.
Now change to the "vim\vim82" directory and run the install program: >
- x86 (32-bit)
- x64 (64-bit)
- ARM64
install
Carefully look through the messages and select the options you want to use.
If you finally select "do it" the install program will carry out the actions
you selected.
The install program doesn't move the runtime files. They remain where you
unpacked them.
It's a great option if you want nightly builds or specific configuration
In case you are not satisfied with the features included in the supplied
binaries, you could try compiling Vim yourself. Get the source archive from
the same location as where the binaries are. You need a compiler for which a
makefile exists. Microsoft Visual C, MinGW and Cygwin compilers can be used.
Check the file src/INSTALLpc.txt for hints.
Check the file src/INSTALLpc.txt for hints. You can get the source from:
https://github.com/vim/vim
==============================================================================
*90.3* Upgrading

View File

@@ -1,4 +1,4 @@
*various.txt* For Vim version 9.1. Last change: 2025 Jun 28
*various.txt* For Vim version 9.1. Last change: 2025 Aug 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -20,7 +20,7 @@ CTRL-L Clear and redraw the screen. The redraw may happen
:redr[aw][!] Redraw the screen right now. When ! is included it is
cleared first.
It can be used to redraw the screen in a script
or function (or a mapping if |'lazyredraw'| is set).
or function (or a mapping if 'lazyredraw' is set).
*:redraws* *:redrawstatus*
:redraws[tatus][!] Redraw the status line of the current window. When !
@@ -375,20 +375,20 @@ T *++builtin_terms* maximal terminals builtin |builtin-terms| Always
N *+byte_offset* support for 'o' flag in 'statusline' option, "go"
and ":goto" commands.
m *+channel* inter process communication |channel|
T *+cindent* |'cindent'|, C indenting; Always enabled
T *+cindent* 'cindent', C indenting; Always enabled
N *+clientserver* Unix and Win32: Remote invocation |clientserver|
*+clipboard* |clipboard| support compiled-in
*+clipboard_working* |clipboard| support compiled-in and working
T *+cmdline_compl* command line completion |cmdline-completion|
T *+cmdline_hist* command line history |cmdline-history|
T *+cmdline_info* |'showcmd'| and |'ruler'|; Always enabled since
T *+cmdline_info* 'showcmd' and 'ruler'; Always enabled since
9.0.0747
T *+cmdwin* |cmdline-window| support; Always enabled since 9.0.0657
T *+comments* |'comments'| support
T *+comments* 'comments' support
N *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc.
N *+cryptv* encryption support |encryption|
H *+cscope* |cscope| support
T *+cursorbind* |'cursorbind'| support
T *+cursorbind* 'cursorbind' support
m *+cursorshape* |termcap-cursor-shape| support
m *+debug* Compiled for debugging.
N *+dialog_gui* Support for |:confirm| with GUI dialog.
@@ -396,12 +396,12 @@ N *+dialog_con* Support for |:confirm| with console dialog.
N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog.
N *+diff* |vimdiff| and 'diff'
N *+digraphs* |digraphs| *E196*
*+directx* Win32 GUI only: DirectX and |'renderoptions'|
*+directx* Win32 GUI only: DirectX and 'renderoptions'
*+dnd* Support for DnD into the "~ register |quote_~|.
H *+emacs_tags* |emacs-tags| files
N *+eval* expression evaluation |eval.txt|
T *+ex_extra* always on now, used to be for Vim's extra Ex commands
N *+extra_search* |'hlsearch'| and |'incsearch'| options.
N *+extra_search* 'hlsearch' and 'incsearch' options.
- *+farsi* Removed: |farsi| language
T *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| Always enabled since
9.0.265
@@ -424,12 +424,12 @@ T *+insert_expand* |insert_expand| Insert mode completion
m *+ipv6* Support for IPv6 networking |channel|
m *+job* starting and stopping jobs |job|
T *+jumplist* |jumplist|; Always enabled since 8.2.3795
H *+keymap* |'keymap'|
H *+keymap* 'keymap'
N *+lambda* |lambda| and |closure|
H *+langmap* |'langmap'|
H *+langmap* 'langmap'
N *+libcall* |libcall()|
N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'|
T *+lispindent* |'lisp'|
N *+linebreak* 'linebreak', 'breakat' and 'showbreak'
T *+lispindent* 'lisp'
T *+listcmds* Vim commands for the list of buffers |buffer-hidden|
and argument list |:argdelete|
T *+localmap* Support for mappings local to a buffer |:map-local|
@@ -439,7 +439,7 @@ N *+menu* |:menu|
N *+mksession* |:mksession|
T *+modify_fname* |filename-modifiers|
T *+mouse* Mouse handling |mouse-using|
N *+mouseshape* |'mouseshape'|
N *+mouseshape* 'mouseshape'
N *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse|
N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse|
m *+mouse_gpm/dyn* Same as |+mouse_gpm| with optional library dependency
@@ -481,12 +481,14 @@ m *+python3/dyn-stable*
N *+quickfix* |:make| and |quickfix| commands
N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout,
'redrawtime' option
H *+rightleft* Right to left typing |'rightleft'|
H *+rightleft* Right to left typing 'rightleft'
m *+ruby* Ruby interface |ruby|
m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn|
T *+scrollbind* |'scrollbind'|
T *+scrollbind* 'scrollbind'
N *+signs* |:sign|
T *+smartindent* |'smartindent'|
T *+smartindent* 'smartindent'
N *+socketserver* Unix only: socket server backend for clientserver
functionality
H *+sodium* compiled with libsodium for better encryption support
H *+sound* |sound_playevent()|, |sound_playfile()| functions, etc.
N *+spell* spell checking support, see |spell|
@@ -514,22 +516,22 @@ T *+title* Setting the window 'title' and 'icon'; Always enabled
N *+toolbar* |gui-toolbar|
T *+user_commands* User-defined commands. |user-commands|
Always enabled since 8.1.1210.
H *+vartabs* Variable-width tab stops. |'vartabstop'|
H *+vartabs* Variable-width tab stops. 'vartabstop'
T *+vertsplit* Vertically split windows |:vsplit|; Always enabled
since 8.0.1118.
T *+vim9script* |Vim9| script
N *+viminfo* |'viminfo'|
T *+virtualedit* |'virtualedit'| Always enabled since 8.1.826.
N *+viminfo* 'viminfo'
T *+virtualedit* 'virtualedit' Always enabled since 8.1.826.
T *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200.
T *+visualextra* extra Visual mode commands |blockwise-operators|
T *+vreplace* |gR| and |gr|
*+vtp* on MS-Windows console: support for 'termguicolors'
N *+wayland* Unix only: support for the Wayland protocol.
N *+wayland_clipboard* Unix only: support for Wayland selections/clipboard.
T *+wildignore* |'wildignore'| Always enabled since 9.0.0278
T *+wildmenu* |'wildmenu'| Always enabled since 9.0.0279
T *+wildignore* 'wildignore' Always enabled since 9.0.0278
T *+wildmenu* 'wildmenu' Always enabled since 9.0.0279
T *+windows* more than one window; Always enabled since 8.0.1118.
m *+writebackup* |'writebackup'| is default on
m *+writebackup* 'writebackup' is default on
m *+xim* X input method |xim|
*+xfontset* X fontset support |xfontset|
N *+xattr* compiled with extended attribute support (Linux only)
@@ -624,7 +626,7 @@ N *+X11* Unix only: can restore window title |X11|
to lines that do NOT match {pattern}.
{pattern} is a Vim search pattern. Instead of enclosing
it in / any non-ID character (see |'isident'|) can be
it in / any non-ID character (see 'isident') can be
used, so long as it does not appear in {pattern}.
Without the enclosing character the pattern cannot
include the bar character. 'ignorecase' is not used.

View File

@@ -1,4 +1,4 @@
*version4.txt* For Vim version 9.1. Last change: 2006 Apr 24
*version4.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,7 +38,7 @@ Now the default for 'backup' is off. As soon as the writing of the file has
successfully finished, the backup file is deleted. If you want to keep the
backup file, set 'backup' on in your vimrc. The reason for this change is
that many people complained that leaving a backup file behind is not
Vi-compatible. |'backup'|
Vi-compatible. 'backup'
Extension for backup file changed *backup-extension*
@@ -139,7 +139,7 @@ documentation.
The key names in <> can be used in mappings directly. This makes it possible
to copy/paste examples or type them literally. The <> notation has been
introduced for this |<>|. The 'B' and '<' flags must not be present in
'cpoptions' to enable this to work |'cpoptions'|.
'cpoptions' to enable this to work 'cpoptions'.
old name new name old code old MS-DOS code ~
hex dec hex dec ~
@@ -289,7 +289,7 @@ The 'graphic' option was used to make the characters between <~> and 0xa0
display directly on the screen. Now the 'isprint' option takes care of this
with many more possibilities. The default setting is the same; you only need
to look into this if you previously set the 'graphic' option in your vimrc.
|'isprint'|
'isprint'
'yankendofline' option gone *ye-option-gone*
@@ -304,11 +304,11 @@ The 'yankendofline' option has been removed. Instead you can just use
The 'title' option is now only set by default if the original title can be
restored. Avoids "Thanks for flying Vim" titles. If you want them anyway,
put ":set title" in your vimrc. |'title'|
put ":set title" in your vimrc. 'title'
The default for 'icon' now depends on the possibility of restoring the
original value, just like 'title'. If you don't like your icon titles to be
changed, add this line to your vimrc: |'icon'|
changed, add this line to your vimrc: 'icon'
:set noicon
@@ -318,7 +318,7 @@ changed, add this line to your vimrc: |'icon'|
The 'i' flag now means italic highlighting, instead of invert. The 'r' flag
is used for reverse highlighting, which is what 'i' used to be. Normally you
won't see the difference, because italic mode is not supported on most
terminals and reverse mode is used as a fallback. |'highlight'|
terminals and reverse mode is used as a fallback. 'highlight'
When an occasion is not present in 'highlight', use the mode from the default
value for 'highlight', instead of reverse mode.
@@ -327,8 +327,8 @@ value for 'highlight', instead of reverse mode.
'tildeop' and 'weirdinvert' short names changed *short-name-changed*
-----------------------------------------------
Renamed 'to' (abbreviation for 'tildeop') to 'top'. |'tildeop'|
Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'|
Renamed 'to' (abbreviation for 'tildeop') to 'top'. 'tildeop'
Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. 'weirdinvert'
This was done because Vi uses 'wi' as the short name for 'window' and 'to' as
the short name for 'timeout'. This means that if you try setting these
@@ -350,6 +350,6 @@ CTRL-B in Insert mode removed *toggle-revins*
CTRL-B in Insert mode used to toggle the 'revins' option. If you don't know
this and accidentally hit CTRL-B, it is very difficult to find out how to undo
it. Since hardly anybody uses this feature, it is disabled by default. If
you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'|
you want to use it, define RIGHTLEFT in feature.h before compiling. 'revins'
vim:tw=78:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*version6.txt* For Vim version 9.1. Last change: 2022 Apr 06
*version6.txt* For Vim version 9.1. Last change: 2025 Jul 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -12624,7 +12624,7 @@ Solution: Use ":compiler!" to set a compiler globally, otherwise it's local
to the buffer and "b:current_compiler" is used. Give an error
when no compiler script could be found.
Note: updated compiler plugins can be found at
ftp://ftp.vim.org/pub/vim/runtime/compiler/
https://github.com/vim/vim/tree/master/runtime/compiler
Files: runtime/compiler/msvc.vim, runtime/doc/quickfix.txt, src/eval.c,
src/ex_cmds2.c

View File

@@ -1,4 +1,4 @@
*version9.txt* For Vim version 9.1. Last change: 2025 Jul 21
*version9.txt* For Vim version 9.1. Last change: 2025 Aug 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -41604,10 +41604,12 @@ Completion~
"preinsert" - highlight to be inserted values
"nearest" - sort completion results by distance to cursor
- new function |wildtrigger()| to trigger wildcard expansion
- Support for Autocompletion has been added |ins-autocompletion|
Platform specific~
-----------------
- Support for Wayland UI and support for the Wayland clipboard has been added.
- Support for Wayland UI and support for the Wayland clipboard has been added
|wayland|.
- Support for the XDG Desktop Specification |xdg-base-dir| has been added and
the environment variable |$MYVIMDIR| is set to the users personal runtime
@@ -41721,6 +41723,9 @@ Functions: ~
not finished
- Add the optional {opts} |Dict| argument to |getchar()| to control: cursor
behaviour, return type and whether or not to simplify the returned key
- |chdir()| allows to optionally specify a scope argument
- |matchfuzzy()| and |matchfuzzypos()| use an improved fuzzy matching
algorithm (same as fzy).
Others: ~
- the regex engines match correctly case-insensitive multi-byte characters
@@ -41734,6 +41739,19 @@ Others: ~
- |gv| works in operator pending mode and does not abort
- The close button shown in the non-GUI 'tabline' will only be visible if the
'mouse' option contains either "a" or any of the flags "n", "v", or "i".
- |C-indenting| handles compound literals.
- The digraphs "</" (LEFT-POINTING ANGLE BRACKET) and ">/" (RIGHT-POINTING
ANGLE BRACKET) have been changed to represent LEFT ANGLE BRACKET and RIGHT
ANGLE BRACKET to match the Unicode Miscellaneous Technical code chart from
Unicode 16.
- Two additional digraphs have been added: LEFT ANGLE BRACKET "<[" and RIGHT
ANGLE BRACKET "]>".
- Support for Unix domain sockets have been added for the clientserver
feature, see |socketserver-clientserver|.
Platform specific ~
- MS-Winodws: Paths like "\Windows" and "/Windows" are now considered to be
absolute paths (to the current drive) and no longer relative.
*added-9.2*
Added ~
@@ -41809,7 +41827,10 @@ Ex-Commands: ~
Options: ~
'autocompletion' Enable auto completion |ins-autocompletion|
'autocompletedelay' Delay in msec before menu appears after typing
'chistory' Size of the quickfix stack |quickfix-stack|.
'clipmethod' How to access the clipboard.
'completefuzzycollect' Enable fuzzy collection of candidates for (some)
|ins-completion| modes
'completeitemalign' Order of |complete-items| in Insert mode completion
@@ -41831,9 +41852,14 @@ Options: ~
't_xo' Terminal uses XON/XOFF handshaking (e.g. vt420)
't_CF' Support for alternate font highlighting terminal code
'winfixbuf' Keep buffer focused in a window
'wlseat' Specify Wayland seat to use for the |wayland| feature
'wlsteal' Steal focus to access the |wayland| clipboard
'wltimeout' Specify the connection timeout for the |wayland|
compositor
Vim Arguments: ~
|-Y| Do not connect to the Wayland compositor.
|-Y| Do not connect to the |wayland| compositor.
|--clientserver| Specify backend for clientserver functionality.
==============================================================================

View File

@@ -1,4 +1,4 @@
*vi_diff.txt* For Vim version 9.1. Last change: 2025 Jun 10
*vi_diff.txt* For Vim version 9.1. Last change: 2025 Aug 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -118,7 +118,7 @@ argument when starting Vim.
==============================================================================
4. The most interesting additions *vim-additions*
Vi compatibility. |'compatible'|
Vi compatibility. 'compatible'
Although Vim is 99% Vi compatible, some things in Vi can be
considered to be a bug, or at least need improvement. But still, Vim
starts in a mode which behaves like the "real" Vi as much as possible.
@@ -192,8 +192,8 @@ Syntax highlighting. |:syntax|
this is using a |:colorscheme| command.
The highlighted text can be exported as HTML. |convert-to-HTML|
Other items that can be highlighted are matches with the search string
|'hlsearch'|, matching parens |matchparen| and the cursor line and
column |'cursorline'| |'cursorcolumn'|.
'hlsearch', matching parens |matchparen| and the cursor line and
column 'cursorline' 'cursorcolumn'.
Text properties |textprop.txt|
Vim supports highlighting text by a plugin. Property types can be
@@ -341,7 +341,7 @@ Insert-mode completion. |ins-completion|
|i_CTRL-X_CTRL-R| contents from registers
etc.
Long line support. |'wrap'| |'linebreak'|
Long line support. 'wrap' 'linebreak'
If the 'wrap' option is off, long lines will not wrap and only part
of them will be shown. When the cursor is moved to a part that is not
shown, the screen will scroll horizontally. The minimum number of
@@ -394,7 +394,7 @@ Finding matches in files. |:vimgrep|
advanced Vim regexp pattern, works on all systems and also works to
search in compressed files.
Improved indenting for programs. |'cindent'|
Improved indenting for programs. 'cindent'
When the 'cindent' option is on the indent of each line is
automatically adjusted. C syntax is mostly recognized. The indent
for various styles can be set with 'cinoptions'. The keys to trigger
@@ -468,7 +468,7 @@ Editing binary files. |edit-binary|
executable file, without corrupting it. Vim doesn't remove NUL
characters (they are represented as <NL> internally).
|-b| command-line argument to start editing a binary file
|'binary'| Option set by |-b|. Prevents adding an <EOL> for the
'binary' Option set by |-b|. Prevents adding an <EOL> for the
last line in the file.
Multi-language support. |multi-lang|
@@ -793,7 +793,7 @@ somewhere else.
Vim is able to work correctly on filesystems with 8.3 file names, also when
using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted
filesystem under Unix. See |'shortname'|.
filesystem under Unix. See 'shortname'.
Error messages are shown at least one second (Vi overwrites error messages).
@@ -1346,7 +1346,7 @@ This is where Vim does not behave as POSIX specifies and why:
These are remarks about running the POSIX test suite:
- vi test 33 sometimes fails for unknown reasons
- vi test 250 fails; behavior will be changed in a new revision
http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html
(dead link) opengroup.org/austin/mailarchives/ag-review/msg01710.html
(link no longer works, perhaps it's now:
https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711)
- vi test 310 fails; exit code non-zero when any error occurred?

View File

@@ -1,4 +1,4 @@
*vietnamese.txt* For Vim version 9.1. Last change: 2024 Dec 04
*vietnamese.txt* For Vim version 9.1. Last change: 2025 Aug 06
VIM REFERENCE MANUAL by Phạm Bình An
@@ -27,11 +27,11 @@ or use one of the Vietnamese keymaps included in the Vim distribution, like
below >
:set keymap=vietnamese-telex_utf-8
<
See |'keymap'| for more information.
See 'keymap' for more information.
In the latter case, you can type Vietnamese even if you do not have a
Vietnamese input method engine (IME) or you want Vim to be independent from a
system-wide keyboard settings (when |'imdisable'| is set). You can also |:map|
system-wide keyboard settings (when 'imdisable' is set). You can also |:map|
a key to switch between keyboards.
Vim comes with the following Vietnamese keymaps:

View File

@@ -499,8 +499,17 @@ Come \-\-remote\-wait, ma senza avvisare se non si trova un server.
Elenca i nomi di tutti i server Vim disponibili.
.TP
\-\-servername {nome}
Usa {nome} come nome server. Usato per il Vim corrente, a meno che sia usato
con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi.
Usa {nome} come nome del server usato per il Vim corrente, a meno che sia
usato con l'argomento \-\-remote, nel qual caso indica il server a cui
connettersi.
Quando si sta usando il server a socket [socketserver backend], se il nome
inizia con "/", "./", o "../", è considerato come il percorso, assoluto o
relativo per arrivare al socket.
.TP
\-\-clientserver {backend}
Usare {backend} come interfaccia per la funzionalità client/server,
rispettivamente, o "socket" o "x11". Disponibile solo se Vim è stato
compilato con le due funzionalità socketserver e X11.
.TP
\-\-socketid {id}
Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gVim in un'altra finestra.
@@ -568,7 +577,8 @@ Inizializzazioni personali di
(viene utilizzata la prima trovata).
.TP
/usr/local/share/vim/vim??/optwin.vim
Script Vim usato dal comando ":options", maniera elegante per visualizzare e impostare opzioni.
Script Vim usato dal comando ":options", maniera elegante per visualizzare
e impostare opzioni.
.TP
/usr/local/share/vim/vim??/menu.vim
Inizializzazioni del menù

View File

@@ -499,8 +499,17 @@ Come \-\-remote\-wait, ma senza avvisare se non si trova un server.
Elenca i nomi di tutti i server Vim disponibili.
.TP
\-\-servername {nome}
Usa {nome} come nome server. Usato per il Vim corrente, a meno che sia usato
con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi.
Usa {nome} come nome del server usato per il Vim corrente, a meno che sia
usato con l'argomento \-\-remote, nel qual caso indica il server a cui
connettersi.
Quando si sta usando il server a socket [socketserver backend], se il nome
inizia con "/", "./", o "../", è considerato come il percorso, assoluto o
relativo per arrivare al socket.
.TP
\-\-clientserver {backend}
Usare {backend} come interfaccia per la funzionalità client/server,
rispettivamente, o "socket" o "x11". Disponibile solo se Vim è stato
compilato con le due funzionalità socketserver e X11.
.TP
\-\-socketid {id}
Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gVim in un'altra finestra.
@@ -568,7 +577,8 @@ Inizializzazioni personali di
(viene utilizzata la prima trovata).
.TP
/usr/local/share/vim/vim??/optwin.vim
Script Vim usato dal comando ":options", maniera elegante per visualizzare e impostare opzioni.
Script Vim usato dal comando ":options", maniera elegante per visualizzare
e impostare opzioni.
.TP
/usr/local/share/vim/vim??/menu.vim
Inizializzazioni del menù

View File

@@ -499,7 +499,14 @@ List the names of all Vim servers that can be found.
.TP
\-\-servername {name}
Use {name} as the server name. Used for the current Vim, unless used with a
\-\-remote argument, then it's the name of the server to connect to.
\-\-remote argument, then it's the name of the server to connect to. If the
socketserver backend is being used, if the name starts with "/", "./", or "../",
it is taken as either an absolute, relative or relative path to the socket.
.TP
\-\-clientserver {backend}
Use {backend} as the backend for clientserver functionality, either "socket" or
"x11" respectively. Only available when compiled with both socketserver and X11
features present
.TP
\-\-socketid {id}
GTK GUI only: Use the GtkPlug mechanism to run gVim in another window.

View File

@@ -378,7 +378,16 @@ OPTIONS
--servername {name}
Use {name} as the server name. Used for the current Vim,
unless used with a --remote argument, then it's the name of
the server to connect to.
the server to connect to. If the socketserver backend is
being used, if the name starts with "/", "./", or "../", it
is taken as either an absolute, relative or relative path
to the socket.
--clientserver {backend}
Use {backend} as the backend for clientserver functional
ity, either "socket" or "x11" respectively. Only available
when compiled with both socketserver and X11 features
present
--socketid {id}
GTK GUI only: Use the GtkPlug mechanism to run gVim in an

View File

@@ -1,4 +1,4 @@
*vim9class.txt* For Vim version 9.1. Last change: 2025 Apr 21
*vim9class.txt* For Vim version 9.1. Last change: 2025 Jul 24
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -584,6 +584,8 @@ protected object methods, class variables and class methods.
An interface can extend another interface using "extends". The sub-interface
inherits all the instance variables and methods from the super interface.
An interface cannot be defined inside a function. *E1436*
==============================================================================
6. More class details *Vim9-class* *Class* *class*
@@ -971,7 +973,7 @@ of that class. Unlike typical object instantiation with the |new()| method,
enum instances cannot be created this way.
An enum can only be defined in a |Vim9| script file. *E1414*
An enum cannot be defined inside a function.
An enum cannot be defined inside a function. *E1435*
*E1415*
An enum name must start with an uppercase letter. The name of an enum value

View File

@@ -1,4 +1,4 @@
*wayland.txt* For Vim version 9.1. Last change: 2025 Jun 28
*wayland.txt* For Vim version 9.1. Last change: 2025 Aug 20
VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2025 Jun 18
" Last Change: 2025 Aug 10
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" Listen very carefully, I will say this only once
@@ -1320,7 +1320,7 @@ au BufNewFile,BufRead *.ipynb,*.jupyterlab-settings setf json
au BufNewFile,BufRead *.sublime-project,*.sublime-settings,*.sublime-workspace setf json
" Other files that look like json
au BufNewFile,BufRead .prettierrc,.firebaserc,.stylelintrc,.lintstagedrc,flake.lock,deno.lock,.swcrc setf json
au BufNewFile,BufRead .prettierrc,.firebaserc,.stylelintrc,.lintstagedrc,flake.lock,deno.lock,.swcrc,composer.lock,symfony.lock setf json
" JSONC (JSON with comments)
au BufNewFile,BufRead *.jsonc,.babelrc,.eslintrc,.jsfmtrc,bun.lock setf jsonc
@@ -1945,6 +1945,7 @@ au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine
au BufNewFile,BufRead *.pip setf requirements
au BufNewFile,BufRead requirements.txt setf requirements
au BufNewFile,BufRead *-requirements.txt setf requirements
au BufNewFile,BufRead requirements-*.txt setf requirements
au BufNewFile,BufRead constraints.txt setf requirements
au BufNewFile,BufRead requirements.in setf requirements
au BufNewFile,BufRead requirements/*.txt setf requirements
@@ -2432,6 +2433,9 @@ au BufNewFile,BufRead *.il,*.ils,*.cdf setf skill
" Cadence
au BufNewFile,BufRead *.cdc setf cdc
" Cangjie
au BufNewFile,BufRead *.cj setf cangjie
" SLRN
au BufNewFile,BufRead .slrnrc setf slrnrc
au BufNewFile,BufRead *.score setf slrnsc
@@ -2882,6 +2886,9 @@ au BufNewFile,BufRead *.vroom setf vroom
" Vue.js Single File Component
au BufNewFile,BufRead *.vue setf vue
" Waybar config
au BufNewFile,BufRead */waybar/config setf jsonc
" WebAssembly
au BufNewFile,BufRead *.wat,*.wast setf wat

View File

@@ -1,8 +1,9 @@
" Vim filetype plugin file
" Original Author: Maxim Kim <habamax@gmail.com>
" Previous Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Maintainer: This runtime file is looking for a new maintainer.
" Language: asciidoc
" Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Last Change: 2024 Jan 16
" Last Change: 2025 Aug 05
if exists("b:did_ftplugin")
finish

View File

@@ -1,8 +1,7 @@
" Vim filetype plugin file
" Language: C
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2023 Aug 22
" 2024 Jun 02 by Riley Bruins <ribru17@gmail.com> ('commentstring')
" Last Change: 2025 Aug 08
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" Only do this when not done yet for this buffer
@@ -28,7 +27,7 @@ setlocal fo-=t fo+=croql
setlocal commentstring=/*\ %s\ */ define& include&
" Set completion with CTRL-X CTRL-O to autoloaded function.
if exists('&ofu')
if exists('&ofu') && has("vim9script")
setlocal ofu=ccomplete#Complete
endif

View File

@@ -1,7 +1,8 @@
" Vim filetype plugin file
" Language: gpg(1) configuration file
" Maintainer: This runtime file is looking for a new maintainer.
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2024-09-19 (simplify keywordprg #15696)
" Latest Revision: 2025-07-22 (use :hor term #17822)
if exists("b:did_ftplugin")
finish
@@ -17,7 +18,7 @@ setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
if has('unix') && executable('less') && exists(':terminal') == 2
command -buffer -nargs=1 GpgKeywordPrg
\ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+--' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'gpg'
\ silent exe ':hor term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+--' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'gpg'
setlocal iskeyword+=-
setlocal keywordprg=:GpgKeywordPrg
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer GpgKeywordPrg'

View File

@@ -3,6 +3,7 @@
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Last Change: 2025 Apr 08
" 2025 Apr 08 by Vim project (set 'omnifunc' and 'iskeyword', #17073)
" 2025 Aug 08 by Vim project (unset comment options, #17889)
if exists("b:did_ftplugin")
finish
@@ -12,7 +13,9 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = "setl isk< fo< tw< cole< cocu< keywordprg< omnifunc<"
let b:undo_ftplugin = "setl isk< fo< tw< cole< cocu< keywordprg< omnifunc< comments< cms<"
setl comments= cms=
setlocal formatoptions+=tcroql textwidth=78 keywordprg=:help omnifunc=s:HelpComplete
let &l:iskeyword='!-~,^*,^|,^",192-255'

View File

@@ -2,7 +2,7 @@
" Language: modules.conf(5) configuration file
" Maintainer: This runtime file is looking for a new maintainer.
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2024-09-20 (remove erroneous endif)
" Latest Revision: 2025-07-22 (use :hor term #17822)
if exists("b:did_ftplugin")
finish
@@ -19,7 +19,7 @@ setlocal formatoptions-=t formatoptions+=croql
if has('unix') && executable('less') && exists(':terminal') == 2
command -buffer -nargs=1 ModconfKeywordPrg
\ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s{,8}' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'modprobe.d'
\ silent exe ':hor term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s{,8}' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'modprobe.d'
setlocal iskeyword+=-
setlocal keywordprg=:ModconfKeywordPrg
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer ModconfKeywordPrg'

View File

@@ -1,7 +1,8 @@
" Vim filetype plugin file
" Language: mutt RC File
" Maintainer: This runtime file is looking for a new maintainer.
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2024-09-19 (simplify keywordprg #15696)
" Latest Revision: 2025-07-22 (use :hor term #17822)
if exists("b:did_ftplugin")
finish
@@ -20,7 +21,7 @@ let &l:include = '^\s*source\>'
if has('unix') && executable('less') && exists(':terminal') == 2
command -buffer -nargs=1 MuttrcKeywordPrg
\ silent exe 'term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'muttrc'
\ silent exe 'hor term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'muttrc'
setlocal iskeyword+=-
setlocal keywordprg=:MuttrcKeywordPrg
let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer MuttrcKeywordPrg'

View File

@@ -0,0 +1,14 @@
" Vim filetype plugin file
" Language: OpenSCAD (https://openscad.org)
" Maintainer: Zachary Scheiman <me@zacharyscheiman.com>
" Last Change: 2025 Aug 3
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
" Comments in openscad follow C/C++ syntax
setlocal commentstring=//\ %s
let b:undo_ftplugin = 'setl commentstring<'

View File

@@ -1,7 +1,9 @@
" Vim filetype plugin file
" Language: Org
" Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Last Change: 2024 Nov 14
" Previous Maintainer: Luca Saccarola <github.e41mv@aleeas.com>
" Maintainer: This runtime file is looking for a new maintainer.
" Last Change: 2025 Aug 05
if exists("b:did_ftplugin")
finish

View File

@@ -5,6 +5,7 @@
" 2024 Jan 14 by Vim Project (browsefilter)
" 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
" 2024 Sep 19 by Konfekt (simplify keywordprg #15696)
" 2025 Jul 22 by phanium (use :hor term #17822)
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin") | finish | endif
@@ -51,7 +52,7 @@ endif
if exists('s:pwsh_cmd')
if exists(':terminal') == 2
command! -buffer -nargs=1 GetHelp silent exe 'term ' . s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full "<args>"' . (executable('less') ? ' | less' : '')
command! -buffer -nargs=1 GetHelp silent exe 'hor term ' . s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full "<args>"' . (executable('less') ? ' | less' : '')
else
command! -buffer -nargs=1 GetHelp echo system(s:pwsh_cmd . ' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command Get-Help -Full <args>')
endif

View File

@@ -3,7 +3,7 @@
" Maintainer: D. Ben Knoble <ben.knoble+github@gmail.com>
" Previous Maintainer: Will Langstroth <will@langstroth.com>
" URL: https://github.com/benknoble/vim-racket
" Last Change: 2024 Jun 01
" Last Change: 2025 Aug 09
if exists("b:did_ftplugin")
finish
@@ -39,7 +39,7 @@ if !exists("no_plugin_maps") && !exists("no_racket_maps")
" "press ENTER or type a command to continue"
" We avoid the annoyance of having to hit enter by remapping K directly.
function s:RacketDoc(word) abort
execute 'silent !raco docs --' shellescape(a:word)
execute 'silent !raco docs --' shellescape(a:word, v:true)
redraw!
endfunction
nnoremap <buffer> <Plug>RacketDoc :call <SID>RacketDoc(expand('<cword>'))<CR>

Some files were not shown because too many files have changed in this diff Show More