Compare commits

...

207 Commits

Author SHA1 Message Date
zeertzjq
4fcbc70fb1 patch 9.1.2108: tests: Test_foldtextresult_rightleft() does not restore 'columns'
Problem:  Test_foldtextresult_rightleft() does not restore 'columns'
          (after v9.1.2102)
Solution: Save and restore the value of 'columns' (zeertzjq).

related: #19220
closes:  #19234

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:26:33 +00:00
zeertzjq
85241020e8 patch 9.1.2107: :normal may change cmdline history
Problem:  :normal may change cmdline history if the keys don't
          explicitly leave Cmdline mode (after 9.1.1872).
Solution: Check ex_normal_busy (zeertzjq)

closes: #19237

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:21:42 +00:00
Yegappan Lakshmanan
7d22f84f0b patch 9.1.2106: Vim9: class, enum and type alias can be used as value
Problem:  Vim9: class, enum and type alias can be used as value in an
          expression (kennypete)
Solution: Abort expression evaluation if class, enum or type alias is
          used in an expression (Yegappan Lakshmanan)

related: #19173
closes:  #19238

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:17:29 +00:00
zeertzjq
2b6bdbc697 patch 9.1.2105: tests: not enough tests for using plain_vgetc()
Problem:  Not enough tests for using plain_vgetc().
Solution: Add tests for using plain_vgetc() during various commands.
          (zeertzjq)

closes: #19236

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:11:28 +00:00
Antoine Saez Dumas
3a324c83ab runtime(doc): Fix typo in syntax.txt
closes: #19239

Signed-off-by: Antoine Saez Dumas <antoine.saezdumas.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:09:32 +00:00
Doug Kearns
09a48056c7 runtime(csh): Update ftplugin, improve matchit behaviour
- Allow for an unparenthesised expression argument to the 'if',
  'if-then', and 'while' commands.  This is undocumented, and probably
  unintended, behaviour but is frequently seen in the wild.
- Allow for a continued-line expression argument to the 'if-then'
  command.

related: #19172 (csh: Support negated if in matchit)
closes:  #19190

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-23 19:07:21 +00:00
Yasuhiro Matsumoto
e89d97aaea patch 9.1.2104: readdirex() might be slow
Problem:  readdirex() might be slow (Mao-Yining)
Solution: Avoid double slash in path concatenation in
          create_readdirex_item() (Yasuhiro Matsumoto)

On Cygwin and MSYS2, // has a special meaning: it is treated as a prefix
for accessing network computers.
For example, //wsl$/ is used to access WSL.

In the current Vim implementation, the directory path passed to
readdirex() and the file name found during traversal are concatenated
using "/".
When the directory path already ends with /, this results in paths like:

  "/" + "/" + "$Recycle.Bin"

which produces a //-prefixed path. Such paths are interpreted as network
paths, so Vim ends up trying to retrieve the file size of a network
computer named $Recycle.Bin, which is not intended.

From a correctness perspective on Windows, file size retrieval should be
skipped for paths of the following forms:

 //host
 //host/share

However, as a first step, we should avoid generating // paths caused by
redundant / concatenation in the first place.

This change addresses this by preventing unnecessary / insertion when
constructing paths.

fixes:  #19188
closes: #19241

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 20:29:53 +00:00
Doug Kearns
95bb4ef7d1 runtime(csh,tcsh): Update syntax files
- Adopt csh syntax file.
- Highlight tcsh strings with the String highlight group.
- Fix 'set' command highlighting with trailing comments. See
  https://github.com/vim/vim/pull/19172#issuecomment-3751574224
- Fix whitespace style in MAINTAINERS file

closes: #19191

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 20:23:06 +00:00
Anatolii Sakhnik
d532b01c36 translation(ua): Update Ukrainian translation
closes: #19242

Signed-off-by: Anatolii Sakhnik <sakhnik@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 20:18:42 +00:00
Christian Brabandt
10b272c126 patch 9.1.2103: tests: test_fold.vim leaves swapfiles behind
Problem:  tests: test_fold.vim leaves swapfiles behind
Solution: Close open buffer using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:54:47 +00:00
Sergey Vlasov
b51ac5e378 patch 9.1.2102: foldtext not reversed and cut off in 'rightleft' mode
Problem:  foldtext not reversed and cut off in 'rightleft' mode
          (bfredl)
Solution: Fix the rightleft redrawing logic (Sergey Vlasov)

fixes:  #2659
closes: #19220

Signed-off-by: Sergey Vlasov <sergey@vlasov.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:48:46 +00:00
Muraoka Taro
3456303430 check.vim: Use silent command modifier
Problem:  When checking a .po file (make -C src/po check), errors are not
          displayed.

Solution: Adding "silent" to some normal commands in check.vim
          suppresses unnecessary output (Muraoka Taro)

This is because the output of check.vim is redirected to /dev/null.
However, if you stop the redirection, check.vim generates a lot of
output and becomes very slow.

When these commands are run in ex mode, they output the contents of the
line the cursor is pointing to.  This caused a lot of output.

closes: #19227

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:41:58 +00:00
James McCoy
81f1c5d384 runtime(debcontrol): improve Debian syntax files
Changes to debcontrol:
- Only use debcontrolEmail for Maintainer/Uploaders
- Add Build-Driver to debcontrolField
- Add Protected to debcontrolStrictField
- Remove Uploaders from the more generic region
- Add explicit support for highlighting build profiles
- Add explicit support for highlighting architecture specifications
- Fix URL for sections.822

Changes to debversions:
- Move plucky to unsupported

closes: #19228

Signed-off-by: James McCoy <jamessan@debian.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-21 19:38:48 +00:00
Arvin Verain
87635dcb5a runtime(kitty): Add kitty ftplugin file
closes: #19232

Signed-off-by: Arvin Verain <arvinverain@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 20:48:41 +00:00
Yegappan Lakshmanan
a7d195415b patch 9.1.2101: Vim9: more truthiness issues
Problem:  Vim9: more truthiness issues
          (kennypete)
Solution: Class, enum and typealias cannot be used with the falsy
          operator (Yegappan Lakshmanan)

related: #19213
fixes:   #19173
closes:  #19216

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:46:33 +00:00
Luis Davim
ff0e5d994c patch 9.1.2100: filetype: tiltfiles are not recognized
Problem:  filetype: tiltfiles are not recognized
Solution: Detect Tiltfiles.* and *.tiltfiles as tiltfile  filetype.
          (Luis Davim)

Reference:
- https://docs.tilt.dev/api.html

fixes:  #19214
closes: #19218

Signed-off-by: Luis Davim <luis.davim@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:40:35 +00:00
Christian Brabandt
284f8669e6 CI: Reorder path in Windows CI runners and move Python3 before $PATH
Apparently, sometimes Vim tries to load python.dll from the Mercurial
directory. So let's move the $PYTHON3_DIR before $PATH, so that Vim can
pickup python3.dll from the right directory

https://github.com/vim/vim/actions/runs/21142024316/job/60798242826?pr=19215

closes: #19217

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:23:02 +00:00
G. Branden Robinson
f338a2f1a6 runtime(doc): Update [gnt]roff information
Content:
* Refer to the formatter as "GNU troff".  Strictly, "groff" refers to
  several things.[1]  Since the context is the editing of input to the
  formatter, GNU's troff program is most relevant choice.
* Refer to groff as distributions' default "typesetting" rather than
  "text processing" package.  Many text processing tools exist, and some
  distributions (Alpine Linux, NetBSD, OpenBSD) have replaced groff with
  mandoc[2] as their man page formatter.
* Mention that Plan 9 still ships an AT&T-derived troff; they even
  maintain it.[3]
* Correct explanation of traditional `yr` register (1).  `\n(yr` is not
  a request, but an escape sequence.[4]
* Correct explanation of traditional `yr` register (2).  This register
  has not interpolated a "2-digit year" since the year 2000; it now
  interpolates a 3-digit one, because AT&T troff designed the `yr`
  register with a Y2K bug in it.[5]
* Fix scrambled terminology.  The phrase "macro request" confuses two
  separate things: macros and requests.[6]  Say instead "font, request,
  register, macro, and string names"; these are the formatter object
  types that people writing groff documents most often use.
* Refer to "groff's mm package" instead of "GNU mm".  Strictly, this
  package is in groff's "contrib" area, which implies that it's not
  official GNU product.  (To be fair, after shipping with groff for over
  34 years,[7] I'm not sure how much distinction anyone perceives.)
* Motivate the newly added advice preferring macro package facilities
  for paragraphing; this issue is distinct from aiding sentence boundary
  detection, which until recently[8] was the only advice offered here.

Style:
* Condense introductory paragraphs.
* Refer to "language syntax" rather than "language primitives".
* Use slightly more idiomatic English.

While these revisions convey more information, they leave the line count
unchanged.  I'll try to stop fooling with this material now.

Notes:
[1] https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/man/groff.7.man?h=1.24.0.rc1#n303
[2] https://mandoc.bsd.lv/
[3] https://github.com/9fans/plan9port/pull/738
    4f3a4d8b3d
[4] https://www.gnu.org/software/groff/manual/groff.html.node/Formatter-Instructions.html
    https://github.com/mamccollum/troff-resources/blob/main/cstr-54.pdf
[5] Tellingly, groff added the `year` register in its 1.16 release,
    dated 2000-05-23.
    https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/NEWS?h=1.24.0.rc1#n3650
    https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/ChangeLog.116?h=1.24.0.rc1#n261
[6] https://www.gnu.org/software/groff/manual/groff.html.node/Requests-and-Macros.html
    https://www.gnu.org/software/groff/manual/groff.html.node/groff.html_fot.html#FOOT26
[7] https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/NEWS?h=1.24.0.rc1#n4192
    https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/ChangeLog.old?h=1.24.0.rc1#n2714
[8] 638bbc57c1

closes: #19221

Signed-off-by: G. Branden Robinson <g.branden.robinson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:12:26 +00:00
Muraoka Taro
cbb72e4216 patch 9.1.2099: different line endings in ja.sjis.po and ja.po
Problem:  Depending on the worker's environment, the line endings in
          ja.sjis.po may differ from those in the source ja.po.

Solution: By setting standard input and output to binary mode, the line
          endings for input and output will match (Muraoka Taro)

This occurs when using MINGW gcc on Windows and git with autocrlf=false.
In this case, the line endings in ja.po are LF, but because sjiscorr
compiled with MINGW gcc uses text mode for standard input and output,
the line endings in the output ja.sjis.po will be CRLF.

This mismatch in line endings confuses git, causing large differences to
occur when updating.

In addition, the comment style has been changed to // to match the rest
of Vim's code.

closes: #19226

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-20 19:07:02 +00:00
Christian Brabandt
4e2aafddbb runtime(netrw): Do not create swapfiles in netrw buffers
Problem:  When using netrw to navigate directories, vim immediately
          creates, then deletes a swap file in the entered directory,
          causing the lastModifiedTime of that directory to change.
Solution: Use the :noswapfile command modifier in s:NetrwEditFile()

fixes: #18854

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:26:09 +00:00
Mateo Gjika
d829e10e0f runtime(sml): add 'include' setting to ftplugin
closes: #19156

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:10:41 +00:00
Mateo Gjika
b1fa262960 runtime(asm): add '#' as comment symbol (GNU as)
closes: #19158

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:08:39 +00:00
zeertzjq
d5f173cf90 runtime(menu): fix space before Tab and trailing space
closes: #19209

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:04:47 +00:00
zeertzjq
311b98d942 patch 9.1.2098: Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A
Problem:  Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A
          (after 9.1.1714) (fizz-is-on-the-way).
Solution: Check if there are matches before applying one (zeertzjq).

closes: #19210

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 19:02:08 +00:00
zeertzjq
9168a04e0c patch 9.1.2097: TabClosedPre may be triggered twice for the same tab page
Problem:  TabClosedPre may be triggered twice for the same tab page when
          closing another tab page in BufWinLeave (after 9.1.1211).
Solution: Store whether TabClosedPre was triggered in tabpage_T
          (zeertzjq).

Also fix the inconsistency that :tabclose! triggers TabClosedPre after
a failed :tabclose, but :close! doesn't even if there is only one window
in the tab page.

closes: #19211

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:59:08 +00:00
Yegappan Lakshmanan
4a08c8b5d4 patch 9.1.2096: Vim9: truthiness issue with objects
Problem:  Vim9: truthiness issue with objects
          (kennypete)
Solution: Return true for an non-null object
          (Yegappan Lakshmanan)

related: #19173
closes:  #19213

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:21:12 +00:00
zeertzjq
e803ad1c56 patch 9.1.2095: :wqall! doesn't quit when using :quit in BufWritePost
Problem:  :wqall! doesn't quit when using :quit in BufWritePost
          (after 8.0.1190).
Solution: Restore old value of "exiting" when calling not_exiting()
          instead of always resetting it to FALSE (zeertzjq).

related: #2205
closes:  #19212

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:15:51 +00:00
Muraoka Taro
7e585b6fa4 translation(jp): Update Japanese Translation for Vim 9.2 Release
I've updated the Japanese translation for the Vim 9.2 release.  The
content contained in this PR was created collaboratively by multiple
peoples in the vim-jp/lang-ja project, and I, koron (Muraoka Taro), am
submitting it as the project representative.

The PR used for this work is https://github.com/vim-jp/lang-ja/pull/171.
(Please note that the communication in this PR is in Japanese)

closes: #19215

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-19 18:07:28 +00:00
Mateo Gjika
0b103d6a7c runtime(haskell): add include-search and define support in ftplugin
closes: #19143

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 21:30:26 +00:00
G. Branden Robinson
638bbc57c1 runtime(doc): Update advice for [gnt]roff users
Content:
* Offer more specific guidance regarding input line breaks and sentence
  endings.
* Advise what to do when a line ends with sentence-ending punctuation
  but doesn't end a sentence.
* Advise against use of blanks lines and leading spaces for formatting
  when a macro package is in use.
* Advise how to achieve visual separation in the document without
  affecting formatting.
* Point out how the newline/end-of-sentence rules aid diffing.
* Distinguish the separate processes of inter-sentence space
  supplementation and filling.
* Use conventional (but accessible) terms from typography instead of
  more casual, approximate ones.
* Clarify what sort of extension the ms package's `XP` macro is.

Style:
* Fix comma splice with a semicolon.
* Use slightly more standard/idiomatic English.

Sources:
* https://rhodesmill.org/brandon/2012/one-sentence-per-line/
* https://www.ualberta.ca/en/computing-science/media-library/docs/unix-beginners.pdf
  (p. 20)
* https://www.gnu.org/software/groff/manual/groff.html.node/Input-Conventions.html
* https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/doc/ms.ms?h=1.23.0#n1131
* https://docs-archive.freebsd.org/44doc/usd/18.msdiffs/paper.pdf

closes: #19193

Signed-off-by: G. Branden Robinson <g.branden.robinson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 21:14:52 +00:00
Christian Clason
eb53ed5de0 patch 9.1.2094: filetype: tiger files are not recognized
Problem:  filetype: tiger files are not recognized
Solution: Detect *.tig files as tiger filetype
          (Christian Clason).

Reference:
- https://www.cs.princeton.edu/~appel/modern/

closes: #19202

Signed-off-by: Christian Clason <c.clason@uni-graz.at>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 21:03:02 +00:00
zeertzjq
8fc7042b3d patch 9.1.2093: heap-use-after-free when wiping buffer in TabClosedPre
Problem:  heap-use-after-free when wiping buffer in TabClosedPre.
Solution: Check window_layout_locked() when closing window(s) in another
          tabpage (zeertzjq).

closes: #19196

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 20:52:48 +00:00
Hirohito Higashi
617bf466bb runtime(doc): Tweak documentation style in {ft_context,terminal}.txt
closes: #19199

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 20:50:11 +00:00
Muraoka Taro
658cc102f6 runtime: Changed old "Sponsor" menu item name to a new one
Problem:  There is an unavailable "Sponsor/Register" item in the Help
          menu.
Solution: The item name has been unified to "Sponsor".

The item names of tlmenu, which are only valid in terminal mode, were
not updated, so unnecessary items that were unavailable were displayed.

This item is also very confusing when creating menu translations.

In addition, the indentation of an item with the same name in the
regular menu has been corrected.

closes: #19201

Signed-off-by: MURAOKA Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 20:45:06 +00:00
Mateo Gjika
682f630a41 patch 9.1.2092: cannot detect kitty foreground/background color
Problem:  Cannot detect kitty foreground/background color
Solution: Update builtin termcap entries (Mateo Gjika)

closes: #19208

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 14:12:04 +00:00
Christian Brabandt
3b67993a64 patch 9.1.2091: Ruby integration does not work correctly
Problem:  Ruby headers define HAVE_FSYNC, which leaks into Vim sources
          on Windows and changes conditional compilation of buf_T. This
          causes struct layout mismatches in if_ruby.c and results in a
          different offset for the b_p_bl property, making Vim::Buffer
          access fail (after v9.1.2024)
Solution: Undefine HAVE_FSYNC after including the Ruby headers.

related: #19019
closes:  #19206

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-18 14:05:32 +00:00
zeertzjq
6c118afeaa patch 9.1.2090: Last buffer not freed with EXITFREE
Problem:  Last buffer not freed with EXITFREE (after 9.1.2087).
Solution: Free the last buffer when inside free_all_mem()
          (zeertzjq).

This isn't really a memory leak, as the last buffer's memory is still
reachable via pointers like firstbuf and lastbuf. But it's possible that
this may cause false ASAN warnings in the future, which is what EXITFREE
is supposed to prevent.

closes: #19194

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-17 10:13:57 +00:00
Mao-Yining
745335c876 runtime(doc): fix return type in getqflist() and getloclist()
Problem: `call getqflist({})` will return `{}`, which is type dict<any>
Solution: fix it in the document.

closes: #19197

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-17 10:03:52 +00:00
Christian Brabandt
8211f556df runtime(syntax-tests): tests: sh_10 fails on MacOS runners
Problem:  tests: sh_10 fails on MacOS runners (after 16c2279062)
          because dash does not exist on MacOS
Solution: Force the test to use bash shebang line

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:56:28 +00:00
Foxe Chen
8b8f10d3d8 patch 9.1.2089: Wayland: Clipboard not working with external programs
Problem:  Wayland: Clipboard not working with external programs on
          Wayland (devsnek)
Solution: Simplify the Wayland offer logic and drop offering the special
          mime type (Foxe Chen)

fixes:  #19050
closes: #19184

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:36:31 +00:00
zeertzjq
ce394b13e9 patch 9.1.2088: Redundant NULL checks in find_pattern_in_path()
Problem:  Redundant NULL checks in find_pattern_in_path().
Solution: Remove the NULL checks. Also fix typos in test_diffmode.vim
          (zeertzjq).

After assigning to inc_opt on line 3461, it's dereferenced immediately,
and not assigned another value afterwards, so checking for NULL after
line 3462 is redundant.

closes: #19185

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:31:33 +00:00
zeertzjq
fa64f92f6a patch 9.1.2087: Crash when using :tabonly in BufUnload
Problem:  Crash when using :tabonly in BufUnload.
Solution: Set curbuf when setting curwin->w_buffer. Don't wipe out a
          buffer if there are no other buffers. Don't decrement
          b_nwindows if it was 0 before buf_freeall() (zeertzjq).

fixes:  #19088#issuecomment-3710172769
closes: #19186

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:25:29 +00:00
Mao-Yining
a1895b67b7 runtime(tutor): Add Chinese translation for chapter 1
closes: #19189

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 18:20:52 +00:00
Doug Kearns
da44ef6a99 runtime(c,cpp): Add reference links to noreturn tests
Add links to the example page at cppreference.com used for these tests
as per their licensing requirements.

closes: #19192

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-16 13:27:24 +00:00
Christian Brabandt
16c2279062 runtime(sh): highlight single-dash short options containing digits
fixes: #19082

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 21:01:43 +00:00
Ivan Pešić
6aaf005c04 translation(sr): update Serbian messages translation
closes: #19177

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:42:01 +00:00
Wu Yongwei
5529b750a7 runtime(c): Do not highlight noreturn in C++ code
closes: #19170

Signed-off-by: Wu Yongwei <wuyongwei@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:37:14 +00:00
Simão Afonso
f25c343b26 runtime(csh): Support negated if in matchit
Currently, the matchit configuration chokes on valid syntax like:

```csh
if !(true) then
   true
endif
```

Make sure the negation syntax is supported.

closes: #19172

Signed-off-by: Simão Afonso <simao.afonso@powertools-tech.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:27:54 +00:00
Patrick Meiser-Knosowski
f8cde69788 runtime(rapid): Update syntax file for ABB Rapid
Also remove trailing white spaces.

closes: #19175

Signed-off-by: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:21:23 +00:00
Sean Dewar
b10a3e1a20 patch 9.1.2086: Memory leak when skipping invalid literal dict
Problem:  memory leak when not evaluating (just parsing) invalid literal
          dict.
Solution: Always clear the key's typval (Sean Dewar)

Though "check_typval_is_value(&tv) == FAIL && !evaluate" is maybe never
true, also always clear tvs if check_typval_is_value fails; at worst
this would be a no-op as their initial types are VAR_UNKNOWN.

closes: #19178

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:14:08 +00:00
Mathis Bernadet
4969b8db4a runtime(mbsync): Add syntax highlighting for TLSVersions keyword
mbsync deprecated SSLVersions. Now use TLSVersions (we keep
computability with SSLVersions).

closes: #19179

Signed-off-by: Mathis Bernadet <matbernadet@emi.u-bordeaux.fr>
Signed-off-by: Pierrick Guillaume <pguillaume@fymyte.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:10:05 +00:00
Bjoern Foersterling
af973d4018 runtime(yaml): fix indentation script
Problem:  The indentation of Ansible Playbooks gets messed up after
          gg=G (after 9179ddc060)
Solution: Remove one shiftwidth() that seems to be misplaced.

closes: #19180

Signed-off-by: Bjoern Foersterling <bjoern.foersterling@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-15 20:05:58 +00:00
Christian Brabandt
ead1dda74a patch 9.1.2085: Use-after-free in winframe_remove()
Problem:  Use-after-free in winframe_remove() (henices)
Solution: Set window_layout_locked() inside winframe_remove()
          and check that writing diff files is disallowed when the
          window layout is locked.

It can happen with a custom diff expression when removing a window:

 1. Buffer was removed, so win_frame_remove() is called to remove the
    window.
 2. win_frame_remove() → frame_new_height() → scroll_to_fraction()
    → diff_check_fill() (checks for filler lines)
 3. diff_check_fill() ends up causing a diff_try_update, and because we
    are not using internal diff, it has to first write the file to a
    buffer using buf_write()
 4. buf_write() is called for a buffer that is not contained within a
    window, so it first calls aucmd_prepbuf() to create a new temporary
    window before writing the buffer and then later calls
    aucmd_restbuf(), which restores the previous window layout, calling
    winframe_remove() again, which will free the window/frame structure,
    eventually freeing stuff that will still be accessed at step 2.

closes: #19064

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:49:25 +00:00
Mateo Gjika
17d60cee55 runtime(compiler): add compiler plugin for cabal
closes: #19152

Signed-off-by: Mateo Gjika <104777599+mateoxh@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:37:46 +00:00
John Marriott
dc47097423 patch 9.1.2084: Compile error when build with job feature
Problem:  Compile error when build with job feature (after v9.1.2077)
Solution: Add ifdefs (John Marriott).

related: #19076

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:31:26 +00:00
Hirohito Higashi
1d4fe89054 CI: Add C preproc indentation check to CI
closes: #19165

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:22:27 +00:00
Hirohito Higashi
9fd2cae482 patch 9.1.2083: style: wrong indentation of nested ifdefs
Problem:  style: wrong indentation of nested ifdefs
Solution: Fix indentation
          (Hirohito Higashi)

related: #19165

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 21:14:33 +00:00
Foxe Chen
92ff4d615d patch 9.1.2082: modeless auto-select not working
Problem:  modeless auto-select not working
          (Coacher)
Solution: Add support for modeless autoselect
          (Foxe Chen)

fixes:  #19159
closes: #19168

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 20:15:07 +00:00
KnoP-01
c2f453f5f3 runtime(krl): Update syntax file for Kuka Robot Language
closes: #19171

Signed-off-by: KnoP-01 <knosowski@graeffrobotics.de>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 20:11:51 +00:00
Jon Parise
ec46b9d4f2 runtime(matchit): include minor improvement from chrisbra/matchit
In particular, documentation update from
related: chrisbra/matchit#55

Signed-off-by: Jon Parise <jon@indelible.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-13 19:40:40 +00:00
Muraoka Taro
47c84295bb patch 9.1.2081: MS-Windows: unnecessary "#ifdef FEAT_GUI" in os_win32.c
Problem:  MS-Windows: "#ifdef FEAT_GUI" exists within "ifdef
          FEAT_GUI_MSWIN", which is confusing when reading the code.
          FEAT_GUI is always defined if FEAT_GUI_MSWIN is defined (see
          vim.h).  Therefore, this check and the else block are
          unnecessary.
Solution: Removed unnecessary "#ifdef FEAT_GUI" (Muraoka Taro).

closes: #19164

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 19:44:06 +00:00
Foxe Chen
f3961074fb patch 9.1.2080: W23/W24 messsage appears on :reg
Problem:  W23/W24 messsage appears on :reg
          (Coacher)
Solution: Silence message when using :reg command
          (Foxe Chen)

fixes:  #19161
closes: #19166

Co-authored-by: h_east <h.east.727@gmail.com>
Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 19:34:04 +00:00
Christian Brabandt
300ea1133f patch 9.1.2079: use-after-free with 'qftf' wiping buffer
Problem:  use-after-free with 'quickfixtextfunc' wiping buffer
          (henices)
Solution: Evaluate 'quickfixtextfunc' with textlock enabled.

closes: #19142

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 19:06:31 +00:00
zeertzjq
6a2b5b2246 patch 9.1.2078: A few more typos in various files
Problem:  A few more typos in various files
Solution: Fix those (zeertzjq, antonkesy)

related: neovim/neovim#37348
closes:  #19153

Co-authored-by: Anton Kesy <anton@kesy.de>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:59:51 +00:00
Doug Kearns
f78629b9af runtime(doc): Fix typo at :help 'fsync'
closes: #19155

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:53:40 +00:00
Anakin Childerhose
be6225976c runtime(rst): set suffixesadd for rst
Add .rst to suffixesadd. This allows gf and similar commands to work for
rst documentation such as in the linux kernel Documentation.

closes: #19149

Signed-off-by: Anakin Childerhose <anakin@childerhose.ca>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:50:13 +00:00
Lifepillar
cb7cbfcc12 runtime: Update files for ConTeXt, METAFONT, and MetaPost.
This update is meant to be included in the upcoming 9.2 release.

**New**

- Support ConTeXt's convention to optionally specify an output directory
  in a comment line at the beginning of a source file.
- If a log file is not found, Vim does not create a new buffer.
- Removed `syntax/shared` files for the following reasons:
  - they are not necessary for the plugin to work (they only improve
    over existing syntax highlighting);
  - they are relative large;
  - they can be automatically (re)generated by users at any time using
    ConTeXt (explained in the doc);
  - since ConTeXt is updated frequently, they quickly become obsolete.

**Minor**

- Prefer `var` to `const` inside functions.
- Prefer `$`-interpolation to `printf()`.
- All revision dates set to the same date for consistency.
- Updated the error format.
- Various tweaks to the documentation, but nothing disruptive or new.

closes: #19148

Signed-off-by: Lifepillar <lifepillar@lifepillar.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:45:42 +00:00
Doug Kearns
c4dc4d8f1e runtime(syntax-tests): Add :help command termination tests
Problem:  The :help command lacks command termination tests.
Solution: Add tests for command termination at "|", "^M" and "^J".

- Check special handling of "|" in arguments.
- Update the Vim syntax file.

closes: #18932

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:25:38 +00:00
Phạm Bình An
1e54023673 runtime(doc): clarify vim.eval behavior with Vim special variables
Problem:  The behavior of vim.eval() with Vim special variables is not
          clearly documented. It is (partly) the reason why Nvim
          Python's vim.eval gives different output when evaluating
          v:true and v:false
Solution: Document it (Phạm Bình An)

closes: #19157

Signed-off-by: Phạm Bình An <phambinhanctb2004@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-11 18:23:20 +00:00
Ubaldo Tiberi
69075d35be runtime(compiler): Do not set title in pandoc compiler
closes: #19048

Signed-off-by: Ubaldo Tiberi <ubaldo.tiberi@volvo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 18:23:16 +00:00
Yegappan Lakshmanan
949e3be916 patch 9.1.2077: Vim9: type issue when appending item to a list
Problem:  Vim9: type issue when appending item to a list
          (Peter Kenny)
Solution: When adding a new item at the end of a list in vim9script, use
          the proper item type (Yegappan Lakshmanan)

fixes:  #19045
closes: #19076

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 18:14:13 +00:00
Muraoka Taro
8ddbd31c18 patch 9.1.2076: tests: MinGW test fails midway and stops
Problem:  tests: When running the MinGW test, an error occurs after
          generating opt_test.vim.
Solution: Rewrite the error detection in cmd.exe syntax (Muraoka Taro).

The recipe section of src/testdir/Make_ming.mak must be written in
cmd.exe syntax.  This is because "SHELL = cmd.exe" is specified at the
beginning.  However, the error detection in the opt_test.vim recipe is
written in UNXI syntax, which caused the error.

closes: #19146

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 18:07:09 +00:00
Christian Brabandt
28fd7e7702 patch 9.1.2075: tests: wrong change to test_ins_complete.vim
Problem:  tests: wrong change to test_ins_complete.vim
          (zeertzjq, after v9.1.2071)
Solution: Revert unintentional changes

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 16:59:04 +00:00
Christian Brabandt
b694561b4d patch 9.1.2074: Compile error with Motif GUI
Problem:  Compile error with Motif GUI
          (Tony Mechelynck, after v9.1.2072)
Solution: Add ifdef FEAT_GUI_GTK

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-10 16:43:43 +00:00
André-Patrick Bubel
fc00006777 runtime(sieve): preserve existing line endings in ftplugin
Only set fileformat=dos for new files; preserve existing line endings
when editing. This satisfies RFC 5228 for new files while avoiding
issues with version control and existing workflows.

The previous change (3cb4148) unconditionally set fileformat=dos, which
converts existing files with LF line endings to CRLF on save. This
causes issues with version control (entire file appears changed) and
breaks workflows where sieve files are stored with unix line endings.

Dovecot Pigeonhole (the main sieve implementation) has explicitly
accepted LF line endings since 2008 (commit 97b967b5):
  /* Loose LF is allowed (non-standard) and converted to CRLF */
This behavior has remained unchanged for almost 18 years.

closes: #19144

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: André-Patrick Bubel <code@apb.name>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:44:04 +00:00
Christian Brabandt
4023bd270a patch 9.1.2073: auto/configure needs to be regenerated
Problem:  auto/configure needs to be regenerated
          (after v9.1.2072)
Solution: Run make autoconf and update the configure script

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:36:30 +00:00
Foxe Chen
a378c722a2 patch 9.1.2072: Socket server has a few minor issues
Problem:  Socket server has some small issues
Solution: Fix issues (see below)

- don't poll current vim instance when using serverlist()
- list the current vim instance in serverlist() (to match X11
  behaviour)
- don't make X11 feature disable socketserver feature
- refactor CheckSocketServer logic and update tests with remote server
  dependency

closes: #19118

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:30:50 +00:00
Aliaksei Budavei
5516fc534e runtime(syntax-tests): Adapt "runtime/syntax/testdir/vimcmd" for "src/testdir/util/shared.vim"
Problem:  When "util/shared.vim" is sourced and GetVimCommand is called on
          behalf of the syntax test runner, the "vimcmd" file will be searched
          in the current working directory, i.e. "src/testdir", whereas the
          desired file is in "runtime/syntax/testdir".
Solution: Temporarily copy "vimcmd" between test directories.

closes: #19127

Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:19:18 +00:00
Christian Brabandt
0e0cb8520c patch 9.1.2071: tests: test_ins_complete.vim leaves swapfiles behind
Problem:  tests: test_ins_complete.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

closes: #19137

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 17:06:54 +00:00
Girish Palya
a9711b5395 patch 9.1.2070: completion: autocomplete breaks with large dict
Problem:  Autocomplete breaks ":help" when 'dict' points to a large file
          (lxhillwind)
Solution: Reset autocompletion timer expiry flag (Girish Palya)

fixes:  #19130
closes: #19137

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 16:59:30 +00:00
glepnir
ccb7b43365 patch 9.1.2069: Search wrap indicator not shown w/out 'shm-S'
Problem:  when shortmess doesn't have 'S', backward search wrap doesn't
          show the "W" before count. forward search works fine but
          backward fails because the position check logic is backwards -
          it checks if cursor < pos instead of using the existing
          wrapped flag.
Solution: Use sia->sa_wrapped flag that searchit() already sets
          correctly (glepnir).

fixes:  #5280
closes: #19138

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 16:52:10 +00:00
Doug Kearns
27e5d95edf runtime(lynx): Update syntax file
Update for Lynx version 2.9.2.

closes: #19141

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-09 16:49:32 +00:00
Christian Brabandt
cf8e378f4e runtime(doc): clarify the behaviour of 'fo-m'
fixes: #19095

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:39:15 +00:00
Christian Brabandt
a3d4b895ae translation(de): update German message translation
While at it, update vim.pot with the current year.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:31:41 +00:00
Sean Dewar
63d53de72d patch 9.1.2068: :bd/bw may try to switch to a closing buffer
Problem:  :bdelete/bunload/bwipeout may attempt to switch to a closing
          buffer, which fails. (after 9.1.2058)
Solution: don't consider switching to closing buffers (Sean Dewar)

closes: #19107

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:27:55 +00:00
Dominique Pelle
335aecd98f runtime(cpp): Fix c++ float and integer literal syntax highlighting
closes: #8939

Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
Signed-off-by: Dominique Pelle <dominique.pelle@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 21:24:23 +00:00
Christian Brabandt
e80a4ed845 runtime(matchit): Update to Release 1.21
closes: #19109

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:53:40 +00:00
Christian Brabandt
8e079085d2 runtime(sh): Update indent script
closes: #19110

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:52:01 +00:00
John Marriott
4936e761a5 patch 9.1.2067: shadow variable warning in menu.c
Problem:  shadow variable warning in menu.c
Solution: Rename the variable (John Marriott).

closes: #19120

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:29:54 +00:00
D. Ben Knoble
a71e52a0b1 runtime(racket): update Racket syntax file
This brings us to upstream commit f251a43 (Merge syntax based folding
for block comments, 2025-09-10). Note that not all upstream files are
included.

closes: #19126

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:26:23 +00:00
zeertzjq
d8558fdf4f patch 9.1.2066: :wqall! doesn't close a terminal like :qall! does
Problem:  :wqall! doesn't close a terminal buffer like :qall! does
          (after 8.0.1525).
Solution: Check eap->forceit (zeertzjq).

Ref: https://github.com/vim/vim/issues/2654#issuecomment-366803932

related: #2654
related: neovim/neovim#14061
closes:  #19129

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:23:05 +00:00
Muraoka Taro
7d632a0a77 patch 9.1.2065: GvimExt cannot be linked statically using MinGW
Problem:  When building GvimExt with MinGW, some DLLs are still linked
          even if STATIC_STDCPLUS=yes is set.
Solution: Following the Vim core, make some libraries explicitly
          statically linked.  The order of libraries is important, and
          gcc_eh must be placed before winpthread (Muraoka Taro)

closes: #19131

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:12:58 +00:00
zeertzjq
aa58f1fe44 CI: build failure in if_perl.xs
Problem:  CI: build failure in if_perl.xs.
Solution: Add -Wno-strict-prototypes to PERL_CFLAGS_EXTRA
          (zeertzjq).

closes: #19132

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:10:09 +00:00
Cezar Dimoiu
9179ddc060 runtime(yaml): update YAML indentation for mapping keys inside list items
When a list item contains a mapping key (e.g., '- element1:'), the
content under that key was incorrectly indented. The indent function
was not accounting for the '- ' prefix when calculating indentation
for nested content.

Example that now works correctly:
  list:
    - element1:
        foo: bar  # Now correctly at indent 6, not 4

The fix adds special handling in two places:
1. When previous line ends with ':' and starts with '- '
2. When looking up previous mapping key that is a list item

Fixes indentation to account for the 2-character '- ' prefix.

fixes:  #18943
closes: #19133

Signed-off-by: Cezar Dimoiu <cezar.dimoiu@keysight.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 20:07:18 +00:00
Girish Palya
4895ae8c0c patch 9.1.2064: completion: segfault during file name completion
Problem:  completion: segfault during file name completion
Solution: Initialize compl_num_bests (Girish Palya)

closes: #19134

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 19:56:40 +00:00
Christian Brabandt
0084e4bd16 gitattributes: mark test21.ok binary, drop test42.in
This change does 2 things:
1) Mark src/testdir/test21.ok as binary by git.

After 0ed8ba3079, test21.ok was treated by Git as a text file
using LF line endings. However, the test explicitly checks handling of
files with mixed line endings, so it must retain its literal LF and CR
endings and must not be modified by Git. Therefore, mark it explicitly
as binary.

2) Remove src/testdir/test42.in

This test was converted to the new-style test in v8.2.1316 and was
therefore deleted. There is no need to keep gitattributes rules for a
non-existing file.

related: #19086

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 19:51:53 +00:00
Phạm Bình An
536ee91189 runtime(doc): add termdebug tag, remove term "floating window"
Problem:
- When I type `:h termdebug`, I will expect to see the introduction of
  the termdebug plugin. But instead, it shows me document of
  `termdebug_wide`, and I have to scroll up quite much to find the
  introduction.
- `:h popup` says `floating-window`? Why? As I have tried both features
  (of Vim and Neovim), I think they are _very different_ things, even
  more different than job features in Vim and Neovim.

Solution:
- In `:h terminal.txt`, add tag `*termdebug*` to the introduction of
  termdebug plugin.
- In `:h popup.txt`, "floating window" -> "popup window".

closes: #19135

Signed-off-by: Phạm Bình An <phambinhanctb2004@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-08 19:35:38 +00:00
Christian Brabandt
4ba3dadd68 runtime(sqloracle): Update syntax script
closes: #19111

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:56:03 +00:00
Christian Brabandt
5eb10c5359 runtime(xml): update XML runtime files
closes: #19112

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:54:51 +00:00
Christian Brabandt
c45e16a939 runtime(zsh): Update runtime files
closes: #19113

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:53:13 +00:00
Doug Kearns
46cc91ecbf runtime(privoxy): Update syntax file
Update to version 4.1.0.

closes: #19115

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:52:21 +00:00
zeertzjq
5e37e31496 runtime(tutor): fix wrong motion in instruction
related: neovim/neovim#37213
closes: #19117

Co-authored-by: DrNayak2306 <dhruvgnk.work@gmail.com>
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:50:37 +00:00
zeertzjq
da1c431309 patch 9.1.2063: A few typos in the code and runtime files
Problem:  A few typos in the code and runtime files
Solution: Fix those (zeertzjq).

closes: #19119

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 21:33:28 +00:00
Doug Kearns
e7bb907c24 runtime(wget): Update syntax files
Update to versions Wget 1.25.0 and Wget2 2.2.1.

closes: #19122

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 20:34:19 +00:00
Yegappan Lakshmanan
08953f7113 runtime(doc): Minor updates to version9.txt
closes: #19124

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-07 20:32:22 +00:00
Christian Brabandt
6c30628392 runtime(cpp): Announce syntax file adoption
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 15:55:37 +00:00
Hoang Nguyen
8d0fcff002 patch 9.1.2062: filetype: djot files are not recognized
Problem:  filetype: djot files are not recognized
Solution: Detect *.dj and *.djot files as djot filetype
          (Hoang Nguyen).

Reference:
- https://djot.net/

closes: #19105

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 15:00:15 +00:00
Hoang Nguyen
969a4a0ba5 patch 9.1.2061: filetype: Koka files are not recognized
Problem:  filetype: Koka files are not recognized
Solution: Detect *.kk files as koka filetype (Hoang Nguyen).

Reference:
- https://koka-lang.github.io/koka/doc/index.html

closes: #19104

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 14:56:00 +00:00
Hoang Nguyen
b084b8f1db patch 9.1.2060: filetype: Rasi include files are not recognized
Problem:  filetype: Rasi include files are not recognized
Solution: Detect *.rasinc as rasi filetype (Hoang Nguyen)

Reference:
- https://github.com/davatorium/rofi/blob/next/doc/rofi-theme.5.markdown#file-extension

closes: #19103

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 14:52:13 +00:00
Hoang Nguyen
88f3ac34ea patch 9.1.2059: filetype: Nickel files are not recognized
Problem:  filetype: Nickel files are not recognized
Solution: Detect *.ncl files as nickel filetype
          (Hoang Nguyen)

Reference:
- https://nickel-lang.org/getting-started/
- https://github.com/tweag/nickel/tree/master/examples

closes: #19102

Signed-off-by: Hoang Nguyen <folliekazetani@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 14:49:51 +00:00
Sean Dewar
ac5c8ab6cc patch 9.1.2058: b_locked_split is not checked for :sbuffer
Problem:  b_locked_split is not checked for :sbuffer, which allows
          autocommands to leave windows open to freed buffers.
Solution: In do_buffer_ext, check just before possibly splitting, after
          handling 'switchbuf'. Leave win_split to handle the check for
          curbuf. (needed even if curbuf is not the target, as setting
          the buffer after splitting may fail) (Sean Dewar)

closes: #19096

Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:58:44 +00:00
Foxe Chen
4157787be8 patch 9.1.2057: copying to clipboard register broken with 'go-P'
Problem:  Copying to clipboard register broken with 'go-P'
          (Coacher)
Solution: Verify that clip_plus is available (Foxe Chen).

fixes:  #19072
closes: #19097

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:54:40 +00:00
zeertzjq
254f844dda patch 9.1.2056: tests: inconsistent indent and line breaking in Test_maparg()
Problem:  tests: inconsistent indent and line breaking in Test_maparg().
Solution: Consistently use spaces-only indent. Reorder fields to group
          similar ones together and break lines at consistent positions.
          Remove a mapping when it is no longer used (zeertzjq).

closes: #19099

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:22:42 +00:00
RestorerZ
d5560fd395 translation(ru): Updated message file
closes: #19093

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:19:44 +00:00
RestorerZ
416d1a5e28 translation(ru): added a disclaimer to the license translation
closes: #19092

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:17:35 +00:00
RestorerZ
a735e44b3c translation(ru): updated menu files according to the patch 9.1.1989
closes: #19091

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:16:11 +00:00
RestorerZ
3ac486b8a6 translation(ru): updated tutor files
closes: #19090

Signed-off-by: RestorerZ <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:14:57 +00:00
zeertzjq
1aa5ca4ecb patch 9.1.2055: Division by zero in :file after failing to wipe buffer
Problem:  Division by zero in :file after failing to wipe buffer
          (after 8.2.4631).
Solution: Still call buf_clear_file() when failing to wipe buffer
          (zeertzjq).

closes: #19088

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 11:11:16 +00:00
Muraoka Taro
0ed8ba3079 Always force LF line endings in old test .ok files
Problem: When running tests on a source tree checked out with git for
Windows, the old tests fail.

The Git for Windows installer installs git with core.autocrlf=true by
default. If you check out, build, and run tests using such a git, the
old test .ok files will likely fail because they use CRLF line endings.
Tests on Windows assume that .ok files use LF line endings, and
appropriately convert the line endings of related files.  This
assumption breaks down when .ok files use CRLF.

Solution: Force LF line endings for old test .ok files in the
.gitattributes file.  Related to that, we've stopped explicitly
specifying line endings when checking out in CI, since this is no longer
necessary.

While at it, also fix a typo in the comment of the gitattributes file.

closes: #19086

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:36:03 +00:00
Neila
77a59be594 runtime(cangjie): Update syntax script
This commit updates `syntax/cangjie.vim` to match the latest `std.core`
library:

New Features:
* Documentation: Added highlighting for documentation keywords (e.g., `@param`, `@return`).
* Standard Library: Added highlighting for `std.core` functions, interfaces, and classes.
* Exceptions: Added highlighting for standard exception types.
* FFI Support: Added highlighting for C interoperability types (e.g., `CPointer`).

Improvements:
* Configuration: Added a unified switch (`s:enabled('builtin')`) for standard library highlighting.
* Type System: Updated `Int` and `UInt` aliases.
* Interpolation: Enabled standard library highlighting inside string interpolation.
* Cleanup: Removed non-core types like `ArrayList` and `HashMap`.

closes: #19085

Signed-off-by: Neila <wu.junkai@qq.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:18:09 +00:00
Yegappan Lakshmanan
eb577f9206 patch 9.1.2054: Can't unpack tuple from imported function
Problem:  Can't unpack tuple from imported function
          (Mao-Yining)
Solution: Support multi-variable assignment from a tuple returned by an
          imported function (Yegappan Lakshmanan)

fixes:  #19080
closes: #19083

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:13:02 +00:00
Muraoka Taro
2a3b608355 patch 9.1.2053: MS-Windows: May use wrong find command
Problem:  If another find.exe derived from findutils is installed on
          Windows, unintended behavior will occur. If MSYS2 is installed and
          prioritized over the system path, then find.exe derived from
          findutils will be launched during build, resulting in an
          unintended warning message.
Solution: Specify the absolute path including SYSTEMROOT to launch
          find.exe (Muraoka Taro)

closes: #19081

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 10:04:59 +00:00
Matthias Rader
a5b19603e4 patch 9.1.2052: Compile error when disabling linebreak feature
Problem:  Compile error when disabling linebreak feature
Solution: Adjust ifdefs (Matthias Rader)

When compiling with all features except for linebreak, there were some
compiler errors. By slightly modifying some preprocessor conditions,
compiling without the linebreak feature should work as expected.

closes: #19068

Signed-off-by: Matthias Rader <matthias.rader@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-06 09:58:04 +00:00
Muraoka Taro
679c2c01fa patch 9.1.2051: tests: fix Test_cd_completion fails in Appveyor
Problem:  Test_cd_completion test fails in Appveyor. In Appveyor, a path
          containing spaces was selected as the test target. But the
          comparison failed because spaces were not taken into account
          (after v9.1.2050)
Solution: Escape spaces in paths for comparison (Muraoka Taro)

closes: #19087

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-05 08:13:18 +00:00
Muraoka Taro
6625ba359e patch 9.1.2050: tests: Test_cd_completion may fail
Problem:  tests: Test_cd_completion() may fail depending on the contents
          of the root directory of the current drive on Windows.
          readdir() may return a directory that cannot "cd" to, causing
          this test to fail. An example of such a directory is
          "System Volume Information" which only admin can "cd" to.
Solution: When determining the directory to use for testing, use the
          directory that we actually "cd" to successfully.
          In addition, directories with '$' in their names are also
          excluded, as they are considered environment variables during
          completion and do not work as expected.
          Example: "$RECYCLE.BIN" (Muraoka Taro).

closes: #19078

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 23:47:27 +00:00
Hirohito Higashi
4a9967bddf patch 9.1.2049: Vim9: unexpected E1209 error
Problem:  Vim9: unexpected E1209 error
Solution: Fix error message (Hirohito Higashi)

closes: #19067

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 17:16:23 +00:00
Muraoka Taro
997952a512 patch 9.1.2048: MS-Windows: backspace behavior wrong with ConPTY
Problem:  Pressing backspace in ConPTY on Windows deletes an entire
          word, not just a single character. This is the same as
          pressing Alt + backspace in cmd.exe.
Solution: When using ConPTY on Windows, the `VTERM_KEY_BACKSPACE` key is
          now sent when the Backspace key or Ctrl+H is detected.
          (Muraoka Taro)

Historically, Windows has assigned the code 0x7F (DEL) to backspace, and
it seems necessary to follow that behavior when using ConPTY.

closes: #19065

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 17:06:03 +00:00
Mao-Yining
bfd4f75b5a patch 9.1.2047: MS-Windows: style issue in gui_w32.c
Problem:  MS-Windows: style issue in gui_w32.c
Solution: Fix indentation, drop unnecessary braces
          (Mao-Yining)

closes: #19073

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 17:00:09 +00:00
Mao-Yining
8be4610588 patch 9.1.2046: MS-Windows: compile warnings
Problem:  MS-Windows: compile warnings in os_win32.c,
          acp_to_enc() requires char_u* but others require char*
          (John Marriott, after v9.1.2013)
Solution: Cast the variables (Mao-Yining)

closes: #19074

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 16:51:47 +00:00
Larson, Eric
93eb081eee runtime(doc): Clarify visual mark behavior in getpos(), setpos()
Add documentation notes explaining that visual marks '< and '> have
different behaviors in getpos() and setpos().

Also fix a small typo.

closes: #19070

Signed-off-by: Larson, Eric <numeric.larson@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 16:46:59 +00:00
Christian Brabandt
57352b279d runtime: mention subscription only ml, fix typo in maintainer email
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 16:29:07 +00:00
Muraoka Taro
0115da33b4 CI: Missing test of Vim with ConPTY on Windows
Problem:  Current CI Windows testing does not test Vim using ConPTY.

Solution: Added a configuration to enable ConPTY to the Windows matrix.
          This configuration suppresses the installation of winpty,
          allowing testing with ConPTY.

Since the fixes made at the end of last year, all tests now pass when
using ConPTY, just like when using winpty. ConPTY itself is stable on
recent versions of Windows, so there are no longer any reasons not to
test it.

closes: #19066

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-03 11:08:26 +00:00
Antonio Giovanni Colombo
5beb6b58c9 translation(it): Update Italian translation
Signed-off-by: Antonio Giovanni Colombo <azc100@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:29:17 +00:00
Christian Brabandt
bc12a938d9 patch 9.1.2045: Mac: Build failure with Mac OS X 10.6
Problem:  Mac: Build failure with Mac OS X 10.6
          (Sergey Fedorov, after: v9.1.1748)
Solution: Add ifdefs MAC_OS_X_VERSION_10_7 around the code that sets the
          scheduler priority.

fixes:   #19044
related: #18120
closes:  #19054

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:24:42 +00:00
John Marriott
a7e671fbb9 patch 9.1.2044: Inefficient use of ga_concat()
Problem:  Inefficient use of ga_concat()
Solution: Use ga_concat_len() when the length is already known to avoid
          use of strlen() (John Marriott).

Additionally the following changes are done:
os_unix.c:
- in function `socket_server_list_sockets()` use a `string_T` for the
  strings `buf` and `path` for use in `ga_concat_len()`
  and drop un-needed variable `dir`.

quickfix.c:
- in function `qf_jump_print_msg()` use a `string_T` for the string
  `IObuff` for use in `ga_concat_len()`.
- in function `qf_range_text()` use a `string_T` for the string `buf`
  for use in `ga_concat_len()`.

register.c:
- simplify function `execreg_line_continuation()`.

terminal.c:
- in function `read_dump_file()` use a `string_T` for the
  string `prev_char` for use in `ga_concat_len()`.

tuple.c:
- in function `tuple_join_inner()` use a `string_T` for the
  string `s` for use in `ga_concat_len()`. Also, change local struct
  `join_T` to use `string_T`.

vim9type.c:
- in functions `type_name_tuple()` and `type_name_func()`
  use a `string_T` for the string `arg_type` for use in
  `ga_concat_len()`.

closes: #19038

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:11:58 +00:00
Chris Dragan
96a1caac6b patch 9.1.2043: filetype: kos files are not reconized
Problem:  filetype: kos files are not reconized
Solution: Detect *.kos files as kos filetype
          (Chris Dragan)

Reference:
- https://github.com/kos-lang/kos

closes: #19056

Signed-off-by: Chris Dragan <chris@dragan.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 14:06:55 +00:00
Ac5000
0f93c988e9 patch 9.1.2042: filetype: systemd quadlet files are not recognized
Problem:  filetype: systemd quadlet files are not recognized
Solution: Detect additional patterns as systemd filetype
          (Ac5000)

Reference:
- https://docs.podman.io/en/latest/markdown/podman.1.html
- https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html
- https://docs.podman.io/en/latest/markdown/podman-quadlet.1.html

fixes:  #15078
closes: #19057

Signed-off-by: Ac5000 <15003210+Ac5000@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:58:30 +00:00
Christian Brabandt
7f5c60b31e patch 9.1.2041: tests: test_menu.vim leaves swapfiles behind
Problem:  tests: test_menu.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:49:18 +00:00
Doug Kearns
19442ad118 patch 9.1.2040: :tlunmenu incorrectly accepts a range
Problem:  :tlnumenu incorrectly accepts a range.
Solution: Remove EX_RANGE and EX_ZEROR from the command definition and
          use ADDR_NONE (Doug Kearns).

closes: #19055

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:45:46 +00:00
Paulo Moura
cc71684ab0 runtime(logtalk): Update Logtalk runtime files for the latest language spec
closes: #19058

Signed-off-by: Paulo Moura <pmoura@logtalk.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-02 13:42:57 +00:00
Yee Cheng Chin
871d2cc2ef patch 9.1.2039: if_ruby: crash when using Ruby/dyn 4.0
Problem:  if_ruby: crash when using Ruby/dyn 4.0
          (after v9.1.2036)
Solution: Fix Ruby 4.0 dynamic builds correctly by inlining
          rb_check_typeddata (Yee Cheng Chin)

Ruby 4.0 broke Vim compilation in dynamic builds. That's because the
function `rb_check_typeddata` is now used in an inline function defined
in Ruby headers, which causes it to link against the lib statically
rather than using the one we load in dynamically
(`dll_rb_check_typeddata`) as we only remap it later (after the Ruby
header include).

A previous fix (v9.1.2036) did a wrong fix by stubbing in the actual
inline function `rbimpl_check_typeddata` instead. This does not work
because the inline function is not part of the dynamic lib and therefore
it's not possible to load it in dynamically (the patch also did not
actually attempt to load in the stub). With that patch, Vim would
crash when this function is used as the function pointer is null.

Fix this properly by reverting the previous change, and simply stub
`rb_check_typeddata` using similar mechanisms the file had already set
up for similar situations.

fixes:   #18884
related: #19051
closes:  #19060

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 16:25:10 +00:00
Christian Brabandt
4fe7301df9 patch 9.1.2038: tests: test_marks.vim leaves swapfiles behind
Problem:  tests: test_marks.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

closes: #19061

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 16:20:08 +00:00
Christian Brabandt
62d8f3dab5 runtime: Revert several "mark invalid contact addresses" commits
This reverts commits:
- 6b652a7850
- 2f689d5abd
- a025a46d41

Several email addresses that are known to be valid caused bounces
due to an issue with my email setup. The previous commits incorrectly
marked these addresses as invalid. So revert the whole thing again.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 15:14:14 +00:00
altermo
a722da29c1 patch 9.1.2037: undo: cursor position not correctly restored
Problem:  undo: cursor position not correctly restored
Solution: Do not override the saved cursor position (altermo)

closes: #19052

Signed-off-by: altermo <107814000+altermo@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 14:32:50 +00:00
EnumDev
eea85983cb patch 9.1.2036: if_ruby: build error with ruby 4.0
Problem:  if_ruby: build error with ruby 4.0
          (Mamoru Tasaka)
Solution: Always define rb_check_typeddata (EnumDev).

fixes:  #18884
closes: #19051

Signed-off-by: EnumDev <enumdev@enumerated.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2026-01-01 14:25:38 +00:00
Christian Brabandt
a025a46d41 runtime: mark more invalid email addresses
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 17:18:13 +00:00
Christian Brabandt
2f689d5abd runtime: mark more invalid email addresses
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 16:38:08 +00:00
Christian Brabandt
6b652a7850 runtime: mark invalid contact addresses
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 12:03:36 +00:00
Christian Brabandt
ea189a6f4d patch 9.1.2035: filetype: filetype: Fennel fnlm files are not recognized
Problem:  filetype: Fennel fnlm files are not recognized
          (Alexei Mozaidze, after v9.1.2034)
Solution: Detect *.fnlm files as fennel filetype, revert detecting
          *.fnml files

related: #19047

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 11:52:34 +00:00
Christian Brabandt
9c87af5c3c patch 9.1.2034: filetype: Fennel fnml files are not recognized
Problem:  filetype: Fennel fnml files are not recognized
          (Alexei Mozaidze)
Solution: Detect *.fnml files as fennel filetype

Reference:
- https://fennel-lang.org/changelog#160--2025-10-13

fixes: #19047

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:57:09 +00:00
Muraoka Taro
9d71fdaf3a patch 9.1.2033: tests: Test_terminal_cwd flaky when using ConPTY
Problem:  tests: Test_terminal_cwd in test_terminal.vim fails flaky
          in the Windows ConPTY terminal.
Solution: In ConPTY, the timeout is extended to 1msec when reading a
          channel associated with a job that is about to finish.  This
          allows Vim to read the last output of a process in a pseudo
          console. Add comments to make the reasoning clear.
          (Muraoka Taro)

Processes that terminate too quickly in the ConPTY terminal cause Vim to
miss their final output.

In my environment, the probability of the "cmd /D /c cd" used in
Test_terminal_cwd occurring is about 1/4.  For a simple statically
linked Hello World, the probability of it occurring is about 3/4.

closes: #19036

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:42:02 +00:00
Foxe Chen
83fc7c4d8e patch 9.1.2032: Vim9: error when using class member in Lambda
Problem:  Vim9: error when using class member in Lambda
Solution: Compare against uf_defclass variable
          (Foxe Chen)

closes: #19041

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:30:51 +00:00
Mao-Yining
10dc693ea0 translation(zh_CN): Update the Simplify Chinese translation
closes: #19034

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:28:45 +00:00
Brian Carbone
5c2b594d0e runtime(rust): Update indentation after nested array literal
fixes:  #18974
closes: #19042

Signed-off-by: Brian Carbone <brian@briancarbone.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:26:20 +00:00
Christian Brabandt
d09be15847 runtime(doc): Update Contributing.md on the use of AI
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:20:37 +00:00
Christian Brabandt
ce1636548d runtime(doc): Emphasize adding tests when contributing
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-31 09:07:18 +00:00
Christian Brabandt
7a6d9454c8 README.md: remove the warp ad again
related: #18153

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-30 10:35:10 +01:00
Christian Brabandt
1bc3610b0a runtime(rust): partly revert e426245b, it causes more issues than it solves
related: #18974

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-29 09:41:17 +01:00
Thomas Petazzoni
6df5360691 patch 9.1.2031: Makefile: cannot run make installinks twice
Problem:  Makefile: cannot run make installinks twice
Solution: Change "ln -s" to "ln -sf" to force creation of the symlinks
          (Thomas Petazzoni)

Running "make installlinks" twice towards the same destination
directory will fail, as symlink will already exist. This is not really
expected as "make install" is normally expected to work again and
again towards the same destination directory.

Fix this by using ln -sf.

closes: #19035

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:26:52 +00:00
John Marriott
32b801abc3 patch 9.1.2030: inefficient use of ga_concat()
Problem:  inefficient use of ga_concat()
Solution: Use ga_concat_len() when length is known.
          (John Marriott)

closes: #19027

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:14:41 +00:00
Yegappan Lakshmanan
1dd301a4b3 patch 9.1.2029: tests: the test_vim9_class.vim testfile is too long
Problem:  tests: the test_vim9_class.vim testfile is too long
Solution: Split out the interface related test cases into a new
          test file test_vim9_interface.vim (Yegappan Lakshmanan)

closes: #19032

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:08:21 +00:00
Victorhck
e74e40dc43 runtime(tutor): Improve Spanish translation for chapter 2 after 757b42a
related: #18950
closes:  #19014

Signed-off-by: Victorhck <victorhck@mailbox.org>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:03:25 +00:00
Christian Brabandt
ea2b98b9e9 runtime(indent-tests): Include a simple Rust indent test
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 14:00:44 +00:00
Christian Brabandt
e426245bb3 runtime(rust): clean-up indent script, handle opening empty line correctly
fixes: #18974

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-28 13:57:33 +00:00
Christian Brabandt
f99de42a9f patch 9.1.2028: [security]: Buffer-overflow with incomplete multi-byte chars
Problem:  Buffer overflow in buf_write() when converting incomplete
          multi-byte characters (Kevin Goodsell)
Solution: Make the buffer slightly larger

closes: #19007

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:46:44 +00:00
Stanislaw Gruszka
ee3f10af87 runtime(bpftrace): add indention plugin
Problem:  No indention support when editing bpftrace files.
Solution: Add indention settings based on cindent with custom options.

closes: #19030

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:37:53 +00:00
Mao-Yining
dab78ec4a2 translation(zh_CN): Update the Simplify Chinese translation
closes: #19031

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:33:21 +00:00
Mao-Yining
a7f703c215 runtime(doc): improve :catch documentation
related: #18984
closes:  #19029

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:28:26 +00:00
Scott McKendry
4e722fdfdd patch 9.1.2027: filetype: bicep filetype used for 2 bicep file types
Problem:  filetype: bicep filetype used for 2 bicep file types
Solution: Detect *.bicepparam files as bicep-param filetype, include
          new bicep-params and bicep filetype plugin
          (Scott McKendry)

The bicep language server handles parameter files differently than
regular bicep files. Treating them the same at the editor level leads to
false positive diagnostics in the editor.

References:

Bicep Language Constants:
- 51392d32ca/src/Bicep.Core/LanguageConstants.cs (L23)
VS Code Extension definition:
- 51392d32ca/src/vscode-bicep/package.json (L47)

closes: #19026

Signed-off-by: Scott McKendry <me@scottmckendry.tech>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:20:39 +00:00
zeertzjq
78046cc539 patch 9.1.2026: tests: patch 9.1.2019 not tested properly
Problem:  tests: patch 9.1.2019 not tested properly.
Solution: Add missing :exe (zeertzjq).

closes: #19028

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 15:07:52 +00:00
Muraoka Taro
9f5b09ea1f patch 9.1.2025: conpty terminal process may not start
Problem:  Conpty terminal process may not start.
Solution: Do not close the input handle at EOF when conpty is in use.
          (Muraoka Taro)

It causes the following tests to fail in Windows conpty:

          - Test_terminal_duplicate_eof_arg()
          - Test_terminal_eof_arg()
          - Test_terminal_eof_arg_win32_ctrl_z()

To be precise, the process is launched, but immediately after it is
launched, the input handle to the console is closed with the EOF of the
input, and the console is terminated. When the console is terminated,
the associated process is also terminated.

In the Windows pseudo console, input and output handles are closed after
the process in the console has terminated.  This is not explicitly
stated in Microsoft's documentation.  However, looking at the code for
Windows Terminal, which is presented as a complete example of the pseudo
console, it is implemented exactly this way.

See the sample codes below:

- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/EchoCon/EchoCon/EchoCon.cpp
- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/GUIConsole/GUIConsole.ConPTY/Terminal.cs
- https://github.com/microsoft/terminal/blob/main/samples/ConPTY/MiniTerm/MiniTerm/Terminal.cs

The handle that is not closed at EOF is closed when Vim detects the end
of the job, so there is no risk of them being forgotten and leaking.

`ch_anonymous_pipe`, which was used to determine whether a channel was
for conpty, was set to TRUE only when conpty was being used. The
definition also had the comment `// ConPTY` attached to it.  This name
is not very appropriate, but I felt it would be rude to add a new field
to `channel_T` just for this purpose, so I reused it.

closes: #19025

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:36:31 +00:00
glepnir
4d5b303726 patch 9.1.2024: 'fsync' option cannot be set per buffer
Problem:  'fsync' option cannot be set per buffer
Solution: Make 'fsync' option global-local
          (glepnir)

closes: #19019

Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:32:47 +00:00
Christian Brabandt
9266a2a197 patch 9.1.2023: [security]: Use-after-free in alist_add() with nasty autocmd
Problem:  A BufAdd autocommand may cause alist_add() to use freed
          memory, this is caused by the w_locked variable unset too
          early (henices)
Solution: in trigger_undo_ftplugin() only set w_locked to false, if it
          was false when calling the function.

related: v9.1.0678
closes: #19023

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:10:37 +00:00
Konfekt
1ff2239053 runtime(compiler): add pyright Python type checker
closes: #19017

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-27 14:07:21 +00:00
Mao-Yining
08aaa7ae19 runtime(doc): remove some fixed items from todo.txt
closes: #19024

Signed-off-by: Mao-Yining <mao.yining@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 16:01:31 +00:00
Wei Tang
43b87938f5 patch 9.1.2022: using C++ keyword class as member variable name
Problem:  A recent commit introduced a member variable named `class` in
          the `exarg` structure, which conflicts with the C++ keyword
          `class`. This causes compilation issues on Windows when VIM
          is compiled with OLE enabled, as "if_ole.cpp" cannot compile
          due to the keyword conflict (after v9.1.2012).
Solution: Rename the member variable of `exarg` from `class` to `ea_class`.
          (Wei Tang)

related: #18949
closes:  #19016

Signed-off-by: Wei Tang <gauchyler@uestc.edu.cn>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:54:46 +00:00
tao
538da34ad3 runtime(netrw): Fix reading UNC paths on windows
Problem:  When Vim is launched with a UNC directory, netrw treats it as a
          relative path and compose it again.
Solution: This is due to `exists("g:netrw_cygwin")` always being true.
          We can directly use `g:netrw_cygwin`.

closes: #19015

Signed-off-by: tao <2471314@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:51:32 +00:00
Konfekt
ffd5c52d23 runtime(compiler): ignore 'Found' messages in ruff and ty compiler
while at it, also update the ty command line

closes: #19012

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:33:39 +00:00
ners
b91b30643a patch 9.1.2021: filetype: fluent files are not recognized
Problem:  filetype: fluent files are not recognized
Solution: Detect *.ftl files as fluent filetype (ners)

References:
- https://projectfluent.org/

closes: #19011

Signed-off-by: ners <ners@gmx.ch>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:27:19 +00:00
Miguel Barro
c721b69e88 runtime(termdebug): update v:shell_error condition test.
vim9 conditions only admit 0 or 1 integers, however the return value of
shells is not limited to either 0 or 1 (e.g. powershell)

closes: #19010

Signed-off-by: Miguel Barro <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:19:41 +00:00
Christian Brabandt
a8a0ee5004 patch 9.1.2020: tests: test_virtualedit.vim leaves swapfiles behind
Problem:  tests: test_virtualedit.vim leaves swapfiles behind
Solution: Close open buffers using :bw! instead of :close!

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:16:46 +00:00
McAuley Penney
491f0fa457 patch 9.1.2019: inconsistent cursor encoding past EOL with ve=all
Problem:  When virtualedit is set to all, the cursor is supposed to be
          permitted to reside anywhere, including on the virtual space
          beyond the end of the buffer's text. Switching modes triggered
          a routine that "fixed" a cursor that was past the end of the
          line by shifting it back to the last actual character in the
          line and compensating with a virtual column offset. While
          visually identical, this re-encoding changed the underlying
          byte index, causing position-reporting functions to return
          inconsistent values after a mode change.
Solution: Skip this coordinate adjustment when virtual editing is fully
          enabled. By treating the line terminator as a valid, stable
          position, the cursor’s internal representation remains
          unchanged when entering or exiting Visual mode, ensuring
          consistent coordinate reporting. Add a regression test to
          check this functionality.
          (McAuley Penney)

fixes:  #16276
closes: #19009

Signed-off-by: McAuley Penney <jacobmpenney@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:10:01 +00:00
tao
eb3007b417 patch 9.1.2018: proto: ops.pro outdated
Problem:  proto: ops.pro outdated (after v9.1.2017)
Solution: Regenerate the ops.pro proto file (Tao)

closes: #19018

Signed-off-by: tao <2471314@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 15:04:24 +00:00
Foxe Chen
e6a11d45e5 runtime(osc52): A few minor fixes
- If g:osc52_disable_paste is enabled, then return an empty list instead
  of a list with a single empty string.
- use `echo` instead of `echom` when printing osc waiting message

closes: #19002

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-26 14:59:01 +00:00
Christian Brabandt
2006415016 runtime(doc): add reference to searchcount() function
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 22:22:38 +00:00
Christian Brabandt
6d211bc4f0 runtime(doc): Improve :catch documentation
fixes: #18984

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 21:58:57 +00:00
Beleswar Prasad Padhi
519dc391d8 runtime(make): Makefile highlighting breaks with ')' in string
Problem:  Makefile syntax highlighting incorrectly ends function calls
          when encountering ')' inside double or single quoted strings,
          causing incorrect highlighting for the remainder of the line.
Solution: Add makeDString and makeSString to the contains list for
          makeIdent regions. This allows strings to be recognized inside
          variable references and function calls.

fixes:  #18687
closes: #18818

Signed-off-by: Beleswar Prasad Padhi <beleswarprasad@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 21:32:10 +00:00
Yiyang Wu
aded55463a runtime(make): Move target greedy match after $() to avoid region matching overflow
Partially revert 2a33b499a3, where all
syn match makeIdent are moved before syn region makeIdent to match $()
(reason: see https://github.com/vim/vim/pull/18403#issuecomment-3341161566)

However this results in https://github.com/vim/vim/issues/18890 ,
because lines like
`$(a) =`
will first start a region search beginning with `$(`
but then the whole target including `)` will be matched by
`syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1`
which leaves the region search for the never-found `)` and let the
region matching overflow.

Same for

`$(a) ::`
`$(a) +=`

The solution is to move those greedy target match back, so they take
priority and prevents region match from happening.

fixes:  #18890
closes: #18938

Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 21:25:04 +00:00
McAuley Penney
8ea0e7205c patch 9.1.2017: getregionpos() depends on 'linebreak' setting
Problem:  getregionpos() depends on 'linebreak' setting
Solution: Reset linebreak setting temporarily (McAuley Penney)

When a line is wrapped on word boundaries, getregionpos() may report a
different end column for a visual block than the cursor position used to
define the selection.

Update the blockwise calculation in getregionpos() to use the same
wrapping assumptions as visual block mode, so the reported region
matches the selection boundaries.

Add a regression test that forces wrapping and checks that the end
position stays consistent under "setlocal wrap" and "setlocal
linebreak".

closes: #19006

Signed-off-by: McAuley Penney <jacobmpenney@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:51:25 +00:00
Anttoni Erkkilä
9d661b057e patch 9.1.2016: cindent wrong indentation after do-while loop
Problem:  At "if(0) do if(0); while(0); else", else should be aligned
          with outer if, but is aligned with inner if.
Solution: In function find_match, ignore "if" and "else" inside a
          do-while loop, when looking for "if". (Anttoni Erkkilä)

closes: #19004

Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:42:57 +00:00
Foxe Chen
60c87056b4 patch 9.1.2015: blob2string() stopped after an empty line
Problem:  blob2string() stopped after an empty line
Solution: Specifically check for empty content (Foxe Chen)

closes: #19001

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:37:19 +00:00
Foxe Chen
11c3c62aa8 patch 9.1.2014: clipboard: clipboard register corrupted with clipboard provider
Problem:  clipboard: clipboard register corrupted with clipboard
          provider (Satoru Kitaguchi and mikoto2000 after v9.1.1972)
Solution: Only adjust clipboard register points to the unnamed register
          (Foxe Chen)

fixes:  #18983
fixes:  #18988
closes: #19000

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:29:08 +00:00
Muraoka Taro
90e17110c4 patch 9.1.2013: tests: Test_terminal_shell_option fails with conpty
Problem:  tests: When opening a conpty terminal, if process startup
          fails, it will silently exit.  As a result, the
          Test_terminal_shell_option in test_terminal3.vim failed in
          conpty.

          In a winpty terminal, the winpty-provided error message
          "CreateProcess failed" was displayed.  The test is designed to
          catch this error as an exception.

Solution: Make conpty fail with an error messages in the same way as winpty.
          (Muraoka Taro)

In addition, since the GetWin32Error() function can obtain more detailed
error messages, the format has been changed to "CreateProcess failed:
{localized message from the OS}" for conpty.

Also, since the GetWin32Error() function returns errors in ACP (Active
Code Page) encoding, these have been converted to Vim's internal
encoding, enc.  This will prevent messages from being garbled in
Japanese environments, etc.  The output of this function was basically
used by the semsg() function in other places, so this change also fixes
potential similar garbled characters.

The test now errors out immediately in places where it is expected not
to be reached, and comments have been added about the expected content
of the winpty and conpty error messages.

closes: #18998

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:22:54 +00:00
Foxe Chen
cbcc5babba patch 9.1.2012: Vim9: cannot initialize class member with protected var
Problem:  Vim9: cannot initialize class member with protected var
Solution: Allow this to work if this happens within the same class
          (Foxe Chen)

closes: #18949

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:17:30 +00:00
Stanislaw Gruszka
5e577c7aa8 runtime(ftplugin): set different formatoptions for bpftrace
Problem:   Comment formatting does not work by default for bpftrace.
Solution:  Change default 'formatoptions' similarly as C and many other
           languages.

closes: #18996

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-23 20:15:14 +00:00
Christian Brabandt
bb10f71402 patch 9.1.2011: crash when unreferencing gtk icon theme
Problem:  crash when unreferencing gtk icon theme
          (noamhalevy-wq, after v9.1.1583)
Solution: Remove the g_object_unref() call.

gtk_icon_theme_get_default() returns a singleton that should NOT be
unreferenced. From GTK documentation:

> A unique GtkIconTheme associated with the default screen. This icon
theme is associated with the screen and can be used as long as the
screen is open. Do not ref or unref it.

fixes: #18997

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:59:50 +00:00
John Marriott
a90e80411a patch 9.1.2010: Missing out-of-memory checks in vim9class.c
Problem:  Missing out-of-memory checks in vim9class.c
          (after v9.1.2000)
Solution: Return FAIL early (John Marriott)

closes: #18991

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:49:43 +00:00
Stanislaw Gruszka
7982966f3e runtime(bpftrace): add base syntax plugin
Problem:  No syntax highlighting for bpftrace files.
Solution: Add basic syntax rules, which cover comments, keywords, strings,
          numbers, macros and probes (the bpftrace specific items).

closes: #18999

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:46:44 +00:00
Muraoka Taro
de37e7430a patch 9.1.2009: tests: "Xm4" test directory may not be deleted
Problem:  tests: "Xm4" test directory may not be deleted
Solution: Use "R" flag with mkdir() call to have the directory
          recursively deleted at the end of function Test_m4_format()
          (Muraoka Taro)

Test_m4_format in test_filetype.vim creates the "Xm4" directory with the
'D' flag. Then it creates two files in the "Xm4" directory. One of them,
"alocal.m4," was created with the 'D' flag, so it will disappear after
the test is complete. However, the other, "configure.ac," was created
without any flags, so it will remain even after the test is complete.
Because the parent directory "Xm4" was created with the 'D' flag, the
latter "configure.ac" remains and is not empty, so it will not be
deleted.

This forces the directory to be deleted regardless of its contents. As a
result, the two files "alocal.m4" and "configure.ac" created in the
directory are no longer needed, so they have been deleted.

closes: #18995

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:33:50 +00:00
Ambrus Tóth
9c9982240a patch 9.1.2008: filetype: hylo files are not recognized
Problem:  filetype: hylo files are not recognized
Solution: Detect *.hylo files as hylo filetype (Ambrus Tóth)

References:
- https://hylo-lang.org/

closes: #18994

Signed-off-by: Ambrus Tóth <ping@ambrus.dev>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:26:52 +00:00
Ivan Pešić
b571034a8f translation(sr): Update Serbian message translation
closes: #18993

Signed-off-by: Ivan Pešić <27575106+eevan78@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:21:01 +00:00
Stanislaw Gruszka
f2814754c0 patch 9.1.2007: filetype: bpftrace hashbang lines are not recognized
Problem:    bpftrace files are not recognized from the hashbang line.
Solution:   Add a hashbang check (Stanislaw Gruszka)

closes: #18992

Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-22 18:17:36 +00:00
Muraoka Taro
86855ea8ee patch 9.1.2006: MS-Windows: ANSI colors not correct in terminal
Problem:  ANSI escape colors are not displayed correctly in
          non-termguicolors in vim (cli) on Windows. The red and blue
          channels seem to be swapped.
Cause:    When converting VTerm ANSI index colors to cterm colors in
          terminal.c, the Windows case equivalent to NR-16 (:help
          cterm-colors) is ignored.
Solution: Created and used a table to convert ANSI indexed colors to
          cterm's NR-16 representation (Windows only). This table
          corresponds to the inverse conversion of cterm_ansi_idx in
          term.c. The values in both tables are exactly the same, but
          the meanings are opposite, so they are separate tables
          (Muraoka Taro).

closes: #18931

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:45:02 +00:00
Doug Kearns
3913f13a7d runtime(doc): Improve :help builtin-function-list table formatting
- Start each field at the correct tabstop - on a new line if required.
- Use "Type1/Type2" for return types rather than "Type1 or Type2",
  matching the dominant style.
- Convert hyperlinked Ex commands to command markup, `:cmd`.
- Wrap overlong lines.

closes: #18438

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:37:10 +00:00
Mao-Yining
49e0f833dd patch 9.1.2005: MS-Windows: Missing fullscreen support for GUI version
Problem:  MS-Windows: Missing fullscreen support for GUI version
Solution: Add "s" flag to guioptions (Mao-Yining)

- Implement fullscreen mode controlled by the 'go-s' flag in 'guioptions'
- Update documentation with usage examples and platform-specific details

See :help 'go-s' and :help gui-w32-fullscreen for complete documentation.

closes: #18836

Signed-off-by: Mao-Yining <101858210+mao-yining@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:33:53 +00:00
Muraoka Taro
bd686d85dc patch 9.1.2004: MS-Windows: executable() cannot find file in directory with single char
Problem:  MS-Windows: If a directory with a single character name is
          included in the PATH environment variable without a trailing
          path separator, executable() will not be able to find the
          executable file under it.
Solution: The second argument of the after_pathsep() function is now
          passed the next pointer where a path separator may exist
          (Muraoka Taro).

As a specific example, the default installation path for PowerShell v7
is "C:\Program Files\PowerShell\7", but if you set this as is in the
PATH environment variable, Vim will not be able to find the pwsh.exe
command. In this case, Vim will try to search for "C:\Program
Files\PowerShell\7pwsh.exe".

Cause: The after_pathsep() function determines whether the location
passed as its second argument immediately follows a path separator.
However, in the code where the problem occurred, the second argument was
passed a location that might contain a path separator. As a result, it
was mistakenly determined that a path separator was present in cases
where the final directory name was a single character and not followed
by a path separator, and the path to search was incorrect.

closes: #18979

Signed-off-by: Muraoka Taro <koron.kaoriya@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:19:39 +00:00
Konfekt
e09ff34129 runtime(ty): include ty compiler plugin
closes: #18960

Signed-off-by: Konfekt <Konfekt@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-12-21 19:17:14 +00:00
406 changed files with 16833 additions and 10705 deletions

15
.gitattributes vendored
View File

@@ -1,4 +1,13 @@
src/testdir/test42.in diff
# The old test .ok files are expected to use LF line endings, even on Windows.
# In src/testdir/Make_mvc.mak and src/testdir/Make_ming.mak, the test result
# files .out are converted to LF line endings before being compared.
# Therefore, if the .ok files' line endings are not specified and are
# converted to CRLF, the comparison between .ok and .out will fail.
src/testdir/test*.ok text eol=lf
# This ok file contains literal CR LF endings. Should not be touched by git,
# so handle as binary
src/testdir/test21.ok -text
# `vim.pot` is updated every time any of the *.c files are modified. And as it
# contains line numbers for strings from *.c files, inserting a line into a
@@ -24,8 +33,10 @@ src/po/vim.pot -diff
src/po/vim.pot diff=ignore_vim_pot
# GitHub reacts to the `linguist-generated` attribute, by ignoring marked files
# for the repository's language statistics and hiddning changes in these files
# for the repository's language statistics and hiding changes in these files
# by default in diffs.
#
# https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github
src/po/vim.pot linguist-generated=true
runtime/syntax/testdir/input/vim_ex_help.vim -text diff linguist-language=vim linguist-detectable=true

34
.github/MAINTAINERS vendored
View File

@@ -3,20 +3,22 @@
# You can use github users with @user or email addresses
# These owners will be the default owners for everything in the repo.
#* @brammool
#* @brammool
# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
nsis/lang/russian.nsi @RestorerZ
runtime/autoload/context.vim @lifepillar
runtime/autoload/freebasic.vim @dkearns
runtime/autoload/hare.vim @selenebun
runtime/autoload/hcl.vim @gpanders
runtime/autoload/javascriptcomplete.vim @jsit
runtime/autoload/javascriptcomplete.vim @jsit
runtime/autoload/modula2.vim @dkearns
runtime/autoload/rubycomplete.vim @segfault @dkearns
runtime/autoload/rust.vim @lilyball
runtime/autoload/typeset.vim @lifepillar
runtime/autoload/xmlformat.vim @chrisbra
runtime/autoload/dist/json.vim @habamax
runtime/colors/blue.vim @habamax @romainl @neutaaaaan
@@ -46,8 +48,10 @@ runtime/colors/wildcharm.vim @habamax @romainl @neutaaaaan
runtime/colors/zaibatsu.vim @habamax @romainl @neutaaaaan
runtime/colors/zellner.vim @habamax @romainl @neutaaaaan
runtime/compiler/biome.vim @Konfekt
runtime/compiler/cabal.vim @mateoxh
runtime/compiler/checkstyle.vim @dkearns
runtime/compiler/cm3.vim @dkearns
runtime/compiler/context.vim @lifepillar
runtime/compiler/cucumber.vim @tpope
runtime/compiler/dart.vim @dkearns
runtime/compiler/dart2js.vim @dkearns
@@ -127,6 +131,8 @@ runtime/ftplugin/asy.vim @avidseeker
runtime/ftplugin/autohotkey.vim @telemachus
runtime/ftplugin/awk.vim @dkearns
runtime/ftplugin/basic.vim @dkearns
runtime/ftplugin/bicep.vim @scottmckendry
runtime/ftplugin/bicep-params.vim @scottmckendry
runtime/ftplugin/brighterscript.vim @ribru17
runtime/ftplugin/brightscript.vim @ribru17
runtime/ftplugin/bst.vim @tpope
@@ -140,6 +146,7 @@ runtime/ftplugin/chicken.vim @evhan
runtime/ftplugin/clojure.vim @axvr
runtime/ftplugin/cmakecache.vim @ribru17
runtime/ftplugin/codeowners.vim @jparise
runtime/ftplugin/context.vim @lifepillar
runtime/ftplugin/cook.vim @ribru17
runtime/ftplugin/cs.vim @nickspoons
runtime/ftplugin/csh.vim @dkearns
@@ -217,7 +224,8 @@ runtime/ftplugin/julia.vim @carlobaldassi
runtime/ftplugin/just.vim @pbnj
runtime/ftplugin/kconfig.vim @chrisbra
runtime/ftplugin/kdl.vim @imsnif @jiangyinzuo
runtime/ftplugin/kerml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/kerml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/kitty.vim @rivenirvana
runtime/ftplugin/kivy.vim @ribru17
runtime/ftplugin/kotlin.vim @udalov
runtime/ftplugin/lc.vim @ribru17
@@ -228,6 +236,8 @@ runtime/ftplugin/less.vim @genoma
runtime/ftplugin/lex.vim @ribru17
runtime/ftplugin/lf.vim @andis-sprinkis
runtime/ftplugin/liquid.vim @tpope
runtime/ftplugin/logtalk.dict @pmoura
runtime/ftplugin/logtalk.vim @pmoura
runtime/ftplugin/lua.vim @dkearns
runtime/ftplugin/lynx.vim @dkearns
runtime/ftplugin/m17ndb.vim @dseomn
@@ -237,9 +247,11 @@ runtime/ftplugin/markdown.vim @tpope
runtime/ftplugin/mbsync.vim @fymyte
runtime/ftplugin/mediawiki.vim @avidseeker
runtime/ftplugin/meson.vim @Liambeguin
runtime/ftplugin/mf.vim @lifepillar
runtime/ftplugin/modula2.vim @dkearns
runtime/ftplugin/modula3.vim @dkearns
runtime/ftplugin/mojo.vim @ribru17
runtime/ftplugin/mp.vim @lifepillar
runtime/ftplugin/mss.vim @Freed-Wu
runtime/ftplugin/nginx.vim @chr4
runtime/ftplugin/nim.vim @ribru17
@@ -249,7 +261,7 @@ runtime/ftplugin/nu.vim @elkasztano
runtime/ftplugin/octave.vim @dkearns
runtime/ftplugin/ondir.vim @jparise
runtime/ftplugin/opencl.vim @Freed-Wu
runtime/ftplugin/openscad.vim @squibid
runtime/ftplugin/openscad.vim @squibid
runtime/ftplugin/openvpn.vim @ObserverOfTime
runtime/ftplugin/pascal.vim @dkearns
runtime/ftplugin/pbtxt.vim @lakshayg
@@ -303,7 +315,7 @@ runtime/ftplugin/sshdconfig.vim @jiangyinzuo
runtime/ftplugin/svelte.vim @igorlfs
runtime/ftplugin/sway.vim @ribru17
runtime/ftplugin/swayconfig.vim @jamespeapen
runtime/ftplugin/sysml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/sysml.vim @daumantas-kavolis-sensmetry
runtime/ftplugin/systemverilog.vim @Kocha
runtime/ftplugin/swig.vim @jmarrec
runtime/ftplugin/tap.vim @petdance
@@ -336,11 +348,13 @@ runtime/import/dist/vimhighlight.vim @lacygoill
runtime/indent/arduino.vim @k-takata
runtime/indent/astro.vim @wuelnerdotexe
runtime/indent/basic.vim @dkearns
runtime/indent/bpftrace.vim @sgruszka
runtime/indent/bst.vim @tpope
runtime/indent/cdl.vim @dkearns
runtime/indent/chatito.vim @ObserverOfTime
runtime/indent/clojure.vim @axvr
runtime/indent/config.vim @dkearns
runtime/indent/context.vim @lifepillar
runtime/indent/cs.vim @nickspoons
runtime/indent/css.vim @dkearns
runtime/indent/cucumber.vim @tpope
@@ -382,12 +396,15 @@ runtime/indent/ld.vim @dkearns
runtime/indent/lf.vim @andis-sprinkis
runtime/indent/less.vim @genoma
runtime/indent/liquid.vim @tpope
runtime/indent/logtalk.vim @pmoura
runtime/indent/lua.vim @marcuscf
runtime/indent/m17ndb.vim @dseomn
runtime/indent/make.vim @dkearns
runtime/indent/meson.vim @Liambeguin
runtime/indent/mf.vim @lifepillar
runtime/indent/mma.vim @dkearns
runtime/indent/mojo.vim @ribru17
runtime/indent/mp.vim @lifepillar
runtime/indent/nginx.vim @chr4
runtime/indent/nsis.vim @k-takata
runtime/indent/nu.vim @elkasztano
@@ -454,6 +471,7 @@ runtime/syntax/asy.vim @avidseeker
runtime/syntax/autohotkey.vim @mmikeww
runtime/syntax/awk.vim @dkearns
runtime/syntax/basic.vim @dkearns
runtime/syntax/bpftrace.vim @sgruszka
runtime/syntax/bst.vim @tpope
runtime/syntax/bzl.vim @dbarnett
runtime/syntax/bzr.vim @hdima
@@ -467,7 +485,9 @@ runtime/syntax/chicken.vim @evhan
runtime/syntax/chuck.vim @andreacfromtheapp
runtime/syntax/clojure.vim @axvr
runtime/syntax/codeowners.vim @jparise
runtime/syntax/context.vim @lifepillar
runtime/syntax/cs.vim @nickspoons
runtime/syntax/csh.vim @dkearns
runtime/syntax/css.vim @jsit
runtime/syntax/csv.vim @habamax
runtime/syntax/cucumber.vim @tpope
@@ -558,6 +578,7 @@ runtime/syntax/less.vim @genoma
runtime/syntax/lf.vim @andis-sprinkis
runtime/syntax/liquid.vim @tpope
runtime/syntax/log.vim @mao-yining
runtime/syntax/logtalk.vim @pmoura
runtime/syntax/lua.vim @marcuscf
runtime/syntax/lynx.vim @dkearns
runtime/syntax/lyrics.vim @ObserverOfTime
@@ -572,11 +593,13 @@ runtime/syntax/mbsync.vim @fymyte
runtime/syntax/mason.vim @petdance
runtime/syntax/mediawiki.vim @avidseeker
runtime/syntax/meson.vim @Liambeguin
runtime/syntax/mf.vim @lifepillar
runtime/syntax/modula2.vim @dkearns
runtime/syntax/modula2/opt/iso.vim @trijezdci
runtime/syntax/modula2/opt/pim.vim @trijezdci
runtime/syntax/modula2/opt/r10.vim @trijezdci
runtime/syntax/modula3.vim @dkearns
runtime/syntax/mp.vim @lifepillar
runtime/syntax/mss.vim @Freed-Wu
runtime/syntax/n1ql.vim @pr3d4t0r
runtime/syntax/nginx.vim @chr4
@@ -679,6 +702,7 @@ runtime/syntax/xs.vim @petdance
runtime/syntax/xslt.vim @Boobies
runtime/syntax/zserio.vim @dpelle
runtime/syntax/zsh.vim @chrisbra
runtime/tools/preproc_indent.vim @h-east
runtime/tutor/tutor1.eo @dpelle
runtime/tutor/tutor1.fr @dpelle
runtime/tutor/tutor1.ru @RestorerZ

View File

@@ -84,7 +84,7 @@ jobs:
architecture: arm64
- features: normal
compiler: gcc
extra: [vimtags, proto]
extra: [vimtags, proto, preproc_indent]
- features: huge
compiler: gcc
extra: [no_x11_wl]
@@ -363,6 +363,16 @@ jobs:
true
)
- name: Check preprocessor indent
if: contains(matrix.extra, 'preproc_indent')
run: |
# This will exit with an error code if the files differ from source
(
"${SRCDIR}"/vim -u NONE --not-a-term -esNX +"cd runtime/tools" -S preproc_indent.vim
git diff --exit-code -- src/*.[ch] src/xxd/xxd.c
true
)
- name: Generate gcov files
if: matrix.coverage
run: |
@@ -522,6 +532,7 @@ jobs:
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: yes, arch: x86, python3: stable, coverage: yes }
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: yes, arch: x86 }
- { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: no, arch: x64, coverage: yes }
- { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64, ttytype: conpty }
- { features: NORMAL, toolchain: msvc, VIMDLL: yes, GUI: no, arch: x86 }
- { features: NORMAL, toolchain: mingw, VIMDLL: no, GUI: yes, arch: x64 }
- { features: TINY, toolchain: msvc, VIMDLL: yes, GUI: yes, arch: x64 }
@@ -535,8 +546,6 @@ jobs:
# Show Windows version
cmd /c ver
git config --global core.autocrlf input
if ${{ matrix.arch == 'x64' }}; then
cygreg=registry
pyreg=
@@ -616,11 +625,13 @@ jobs:
call :downloadfile %LUA${{ env.BITS }}_URL% downloads\lua.zip
7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
echo %COL_GREEN%Download winpty%COL_RESET%
call :downloadfile %WINPTY_URL% downloads\winpty.zip
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
copy /Y D:\winpty\%WARCH%\bin\winpty.dll src\winpty%BITS%.dll
copy /Y D:\winpty\%WARCH%\bin\winpty-agent.exe src\
if not "${{ matrix.ttytype }}" == "conpty" (
echo %COL_GREEN%Download winpty%COL_RESET%
call :downloadfile %WINPTY_URL% downloads\winpty.zip
7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
copy /Y D:\winpty\%WARCH%\bin\winpty.dll src\winpty%BITS%.dll
copy /Y D:\winpty\%WARCH%\bin\winpty-agent.exe src\
)
echo %COL_GREEN%Download libsodium%COL_RESET%
if "${{ matrix.toolchain }}"=="msvc" (
@@ -719,7 +730,7 @@ jobs:
- name: Check version
shell: cmd
run: |
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PATH%;%PYTHON3_DIR%
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%
if "${{ matrix.GUI }}"=="yes" (
start /wait src\gvim -u NONE -i NONE -c "redir > version.txt | ver | q" || exit 1
type version.txt
@@ -769,7 +780,7 @@ jobs:
shell: cmd
timeout-minutes: 15
run: |
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PATH%;%PYTHON3_DIR%;%SODIUM_LIB%
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%;%SODIUM_LIB%
call "%VCVARSALL%" %VCARCH%
echo %COL_GREEN%Test gVim:%COL_RESET%
@@ -786,7 +797,7 @@ jobs:
shell: cmd
timeout-minutes: 15
run: |
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PATH%;%PYTHON3_DIR%;%SODIUM_LIB%
PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%;%SODIUM_LIB%
call "%VCVARSALL%" %VCARCH%
echo %COL_GREEN%Test Vim:%COL_RESET%

View File

@@ -12,10 +12,10 @@ A pull request has the advantage that it will trigger the Continuous
Integration tests, you will be warned of problems (you can ignore the coverage
warning, it's noisy).
Please consider adding a test. All new functionality should be tested and bug
fixes should be tested for regressions: the test should fail before the fix and
pass after the fix. Look through recent patches for examples and find help
with ":help testing". The tests are located under "src/testdir".
Please always add a test, if possible. All new functionality should be tested
and bug fixes should be tested for regressions: the test should fail before the
fix and pass after the fix. Look through recent patches for examples and find
help with ":help testing". The tests are located under "src/testdir".
Contributions will be distributed with Vim under the Vim license. Providing a
change to be included implies that you agree with this and your contribution
@@ -46,6 +46,15 @@ When merging PRs into Vim, the current maintainer @chrisbra usually adds missing
anybody that explicitly *ACK*s a pull request as a statement that those
approvers are happy with that particular change.
## Using AI
When using AI for contributions, please disclose this. Any AI-generated code
must follow the Vim code style. In particular, [test_codestyle.vim][18]
must not report any failures. Check the CI output for any test failures.
Ensure that changes are properly tested. Do not submit a single PR that
addresses multiple unrelated issues.
# Reporting issues
We use GitHub [issues][17], but that is not a requirement. Writing to the Vim
@@ -160,3 +169,4 @@ mailing list. For other questions please use the [Vi Stack Exchange][8] website,
[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
[18]: https://github.com/vim/vim/blob/master/src/testdir/test_codestyle.vim

View File

@@ -248,6 +248,7 @@ SRC_ALL = \
src/testdir/util/view_util.vim \
src/testdir/util/vim9.vim \
src/testdir/util/window_manager.vim \
src/testdir/util/socketserver.vim \
src/testdir/viewdumps.vim \
src/proto.h \
src/protodef.h \
@@ -1122,6 +1123,8 @@ LANG_GEN = \
runtime/tutor/sr/vim-01-beginner.tutor.json \
runtime/tutor/sr/vim-02-beginner.tutor \
runtime/tutor/sr/vim-02-beginner.tutor.json \
runtime/tutor/zh/vim-01-beginner.tutor \
runtime/tutor/zh/vim-01-beginner.tutor.json \
runtime/tutor/tutor1.?? \
runtime/tutor/tutor1.??_?? \
runtime/tutor/tutor1.bar \

View File

@@ -1,16 +1,3 @@
<div align="center" markdown="1">
<sup>Special thanks for supporting Vim by donating to the <a href="https://iccf-holland.org/">ICCF</a>:</sup>
<br>
<br>
<a href="https://go.warp.dev/vim">
<img alt="Warp sponsorship" width="400" src="https://raw.githubusercontent.com/warpdotdev/brand-assets/refs/heads/main/Github/Sponsor/Warp-Github-LG-03.png">
</a>
### [Warp, built for coding with multiple AI agents.](https://www.warp.dev/vim)
[Available for MacOS, Linux, & Windows](https://www.warp.dev/vim)<br>
</div>
<hr>
# [![Vim The editor](https://github.com/vim/vim/raw/master/runtime/vimlogo.gif)](https://www.vim.org)
[![Github Build status](https://github.com/vim/vim/workflows/GitHub%20CI/badge.svg)](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22)

View File

@@ -1,3 +1,3 @@
/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Werror -Wno-deprecated-declarations/
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-shadow/
/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-strict-prototypes -Wno-shadow/
/^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter -Wno-strict-prototypes/

View File

@@ -1,3 +1,8 @@
Примечание. Данный текст перевода лицензии Vim предоставляется с целью
ознакомления и не является юридически значимым. Переводчик не несёт
ответственности за возможные неточности и ошибки при переводе лицензии.
Единственно юридически значимым является текст лицензии Vim на английском языке.
ЛИЦЕНЗИЯ VIM
I) Неизменённые копии программы Vim могут распространяться без ограничения
@@ -29,15 +34,15 @@ II) Изменённую (или дополненную) версию прогр
будут распространяться на условиях настоящей лицензии или более
поздней её версии. Лица, в данное время являющиеся ответственными
за разработку, указаны в перечне, размещённом по адресу:
https://github.com/orgs/vim/people. В случае изменения этой
информации, актуальные данные будут опубликованы на
соответствующих ресурсах (вероятнее всего по интернет‐адресам
vim.sf.net, www.vim.org и/или comp.editors). В случае полной
невозможности установить контакт с ответственным разработчиком,
обязательства по отправке изменений утрачивают силу. После
передачи подтверждения о получении изменений от ответственного
разработчика, необходимость в повторной отправке копии изменённой
программы Vim неприменима.
https://github.com/orgs/vim/people.
При изменении этой информации, актуальные данные будут
опубликованы на соответствующих ресурсах (вероятнее всего
по интернет‐адресам vim.sf.net, www.vim.org и/или comp.editors).
В случае полной невозможности связаться с ответственным
разработчиком, обязательства по отправке изменений утрачивают
силу. После передачи подтверждения о получении изменений
от ответственного разработчика, необходимость в повторной
отправке копии изменённой программы Vim неприменима.
b) Если лицом получена изменённая версия программа Vim,
распространяющаяся на условиях, указанных в ч. II) п. 2) пп. а)
допускается дальнейшее её распространение этим лицом без внесения

View File

@@ -32,14 +32,14 @@ LangString ^InstallBtn ${LANG_JAPANESE} \
##############################################################################
LicenseLangString page_lic_file 0 "..\lang\LICENSE.nsis.txt"
#LicenseLangString page_lic_file ${LANG_JAPANESE} "..\lang\LICENSE.ja.nsis.txt"
#LicenseLangString page_lic_file ${LANG_JAPANESE} "..\lang\LICENSE.ja.txt"
##############################################################################
# Translated README.txt file, which is opened after installation {{{1
##############################################################################
LangString vim_readme_file 0 "README.txt"
#LangString vim_readme_file ${LANG_JAPANESE} "README.ja.txt"
#LangString vim_readme_file ${LANG_JAPANESE} "README.jax.txt"
##############################################################################
# MUI Configuration Strings {{{1

View File

@@ -3,7 +3,7 @@ vim9script
# Language: ConTeXt typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2023 Dec 26
# Latest Revision: 2026 Jan 10
# Typesetting {{{
import autoload './typeset.vim'
@@ -30,14 +30,21 @@ export def StopJobs()
enddef
export def Log(bufname: string)
execute 'edit' typeset.LogPath(bufname)
var logpath = typeset.LogPath(bufname)
if filereadable(logpath)
execute 'edit' typeset.LogPath(bufname)
return
endif
echomsg $'[ConTeXt] No log file found ({logpath})'
enddef
# }}}
# Completion {{{
def BinarySearch(base: string, keywords: list<string>): list<string>
const pat = '^' .. base
const len = len(keywords)
var pat = '^' .. base
var len = len(keywords)
var res = []
var lft = 0
var rgt = len

View File

@@ -3,7 +3,7 @@ vim9script
# Vim functions for file type detection
#
# Maintainer: The Vim Project <https://github.com/vim/vim>
# Last Change: 2025 Dec 14
# Last Change: 2026 Jan 20
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
# These functions are moved here from runtime/filetype.vim to make startup
@@ -98,7 +98,7 @@ export def FTasmsyntax()
b:asmsyntax = "masm"
return
elseif line =~ 'Texas Instruments Incorporated' || (line =~ '^\*' && !is_slash_star_encountered)
# tiasm uses `* commment`, but detection is unreliable if '/*' is seen
# tiasm uses `* comment`, but detection is unreliable if '/*' is seen
b:asmsyntax = "tiasm"
return
elseif ((line =~? '\.title\>\|\.ident\>\|\.macro\>\|\.subtitle\>\|\.library\>'))
@@ -1506,7 +1506,7 @@ export def FTdsp()
# Test the file contents
for line in getline(1, 200)
# Chech for comment style
# Check for comment style
if line =~ '^#.*'
setf make
return
@@ -1746,7 +1746,7 @@ const ft_from_ext = {
"bst": "bst",
# Bicep
"bicep": "bicep",
"bicepparam": "bicep",
"bicepparam": "bicep-params",
# BIND zone
"zone": "bindzone",
# Blank
@@ -1876,6 +1876,9 @@ const ft_from_ext = {
"elv": "elvish",
# Faust
"lib": "faust",
# Fennel
"fnl": "fennel",
"fnlm": "fennel",
# Libreoffice config files
"xcu": "xml",
"xlb": "xml",
@@ -1914,6 +1917,9 @@ const ft_from_ext = {
# Diff files
"diff": "diff",
"rej": "diff",
# Djot
"dj": "djot",
"djot": "djot",
# DOT
"dot": "dot",
"gv": "dot",
@@ -1976,6 +1982,8 @@ const ft_from_ext = {
"fish": "fish",
# Flix
"flix": "flix",
# Fluent
"ftl": "fluent",
# Focus Executable
"fex": "focexec",
"focexec": "focexec",
@@ -2118,6 +2126,8 @@ const ft_from_ext = {
"tmpl": "template",
# Hurl
"hurl": "hurl",
# Hylo
"hylo": "hylo",
# Hyper Builder
"hb": "hb",
# Httest
@@ -2227,6 +2237,10 @@ const ft_from_ext = {
"k": "kwt",
# Kivy
"kv": "kivy",
# Koka
"kk": "koka",
# Kos
"kos": "kos",
# Kotlin
"kt": "kotlin",
"ktm": "kotlin",
@@ -2359,6 +2373,8 @@ const ft_from_ext = {
# N1QL
"n1ql": "n1ql",
"nql": "n1ql",
# Nickel
"ncl": "nickel",
# Nim file
"nim": "nim",
"nims": "nim",
@@ -2811,6 +2827,8 @@ const ft_from_ext = {
"txi": "texinfo",
# Thrift (Apache)
"thrift": "thrift",
# Tiger
"tig": "tiger",
# TLA+
"tla": "tla",
# TPP - Text Presentation Program
@@ -3000,6 +3018,7 @@ const ft_from_ext = {
"usd": "usd",
# Rofi stylesheet
"rasi": "rasi",
"rasinc": "rasi",
# Zsh module
# mdd: https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L285-L288
# mdh, pro: https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L268-L271
@@ -3014,6 +3033,9 @@ const ft_from_ext = {
"blp": "blueprint",
# Blueprint build system file
"bp": "bp",
# Tiltfile
"Tiltfile": "tiltfile",
"tiltfile": "tiltfile"
}
# Key: file name (the final path component, excluding the drive and root)
# Value: filetype
@@ -3300,6 +3322,9 @@ const ft_from_name = {
# TF (TinyFugue) mud client
".tfrc": "tf",
"tfrc": "tf",
# Tilefile
"Tiltfile": "tiltfile",
"tiltfile": "tiltfile",
# Trustees
"trustees.conf": "trustees",
# Vagrant (uses Ruby syntax)

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 Aug 09
# Last Change: 2025 Dec 22
# Former Maintainer: Bram Moolenaar <Bram@vim.org>
export def DetectFiletype()
@@ -233,6 +233,10 @@ export def Exe2filetype(name: string, line1: string): string
elseif name =~ '^execlineb\>'
return 'execline'
# Bpftrace
elseif name =~ '^bpftrace\>'
return 'bpftrace'
# Vim
elseif name =~ '^vim\>'
return 'vim'

View File

@@ -1,9 +1,9 @@
" Vim runtime support library,
" runs the Vim9 script version or legacy script version
" on demand (mostly for Neovim compatability)
" on demand (mostly for Neovim compatibility)
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2025 Apr 27
" Last Change: 2026 Jan 11
" enable the zip and gzip plugin by default, if not set

View File

@@ -3,7 +3,7 @@
" Language: Ada (GNAT)
" $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>k
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>
" Ned Okie <nokie@radford.edu>
" $Author: krischik $
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $

View File

@@ -2,7 +2,7 @@ vim9script
# Language: Generic TeX typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Latest Revision: 2022 Aug 12
# Latest Revision: 2026 Jan 10
# Constants and helpers {{{
const SLASH = !exists("+shellslash") || &shellslash ? '/' : '\'
@@ -11,7 +11,7 @@ def Echo(msg: string, mode: string, label: string)
redraw
echo "\r"
execute 'echohl' mode
echomsg printf('[%s] %s', label, msg)
echomsg $'[{label}] {msg}'
echohl None
enddef
@@ -29,7 +29,7 @@ enddef
# }}}
# Track jobs {{{
var running_jobs = {} # Dictionary of job IDs of jobs currently executing
var running_jobs: dict<list<job>> = {}
def AddJob(label: string, j: job)
if !has_key(running_jobs, label)
@@ -55,7 +55,7 @@ def ProcessOutput(qfid: number, wd: string, efm: string, ch: channel, msg: strin
# Make sure the quickfix list still exists
if getqflist({'id': qfid}).id != qfid
EchoErr("Quickfix list not found, stopping the job")
call job_stop(ch_getjob(ch))
job_stop(ch_getjob(ch))
return
endif
@@ -106,31 +106,81 @@ enddef
#
# This function searches for the magic line in the first ten lines of the
# given buffer, and returns the full path of the root document.
#
# NOTE: the value of "% !TEX root" *must* be a relative path.
export def FindRootDocument(bufname: string = bufname("%")): string
const bufnr = bufnr(bufname)
var docpath = fnamemodify(bufname, ":p")
var bufnr = bufnr(bufname)
var header: list<string>
var rootpath = docpath
if !bufexists(bufnr)
return bufname
if bufexists(bufnr)
header = getbufline(bufnr, 1, 10)
elseif filereadable(bufname)
header = readfile(bufname, "", 10)
else
return simplify(rootpath)
endif
var rootpath = fnamemodify(bufname(bufnr), ':p')
# Search for magic line `% !TEX root = ...` in the first ten lines
const header = getbufline(bufnr, 1, 10)
const idx = match(header, '^\s*%\s\+!TEX\s\+root\s*=\s*\S')
var idx = match(header, '^\s*%\s\+!TEX\s\+root\s*=\s*\S')
if idx > -1
const main = matchstr(header[idx], '!TEX\s\+root\s*=\s*\zs.*$')
rootpath = simplify(fnamemodify(rootpath, ":h") .. SLASH .. main)
rootpath = matchstr(header[idx], '!TEX\s\+root\s*=\s*\zs.*$')
if !isabsolutepath(rootpath) # Path is relative to the buffer's path
rootpath = fnamemodify(docpath, ":h") .. SLASH .. rootpath
endif
endif
return rootpath
return simplify(rootpath)
enddef
# ConTeXt documents may specify an output directory in a comment using the
# following syntax:
#
# runpath=texruns:<output directory>
#
# This function looks for such a comment in the first ten lines of the given
# buffer, and returns the full path of the output directory. If the comment is
# not found then the output directory coincides with the directory of the
# buffer.
export def GetOutputDirectory(bufname: string = bufname("%")): string
var basedir = fnamemodify(bufname, ':p:h')
var bufnr = bufnr(bufname)
var header: list<string>
var outdir = basedir
if bufexists(bufnr)
header = getbufline(bufnr, 1, 10)
elseif filereadable(bufname)
header = readfile(bufname, "", 10)
else
return simplify(outdir)
endif
# Search for output path in the first ten lines
var idx = match(header, '^\s*%.*\<runpath\s*=\s*texruns\s*:\s*\S')
if idx > -1
outdir = matchstr(header[idx], '\<runpath\s*=\s*texruns\s*:\s*\zs.*$')
if !isabsolutepath(outdir) # Path is relative to the buffer's directory
outdir = basedir .. SLASH .. outdir
endif
endif
return simplify(outdir)
enddef
export def LogPath(bufname: string): string
const logfile = FindRootDocument(bufname)
return fnamemodify(logfile, ":r") .. ".log"
var rootdoc = FindRootDocument(bufname)
var docname = fnamemodify(rootdoc, ":t:r")
var outdir = GetOutputDirectory(rootdoc)
if empty(docname) # Set an arbitrary name to avoid returning a dotfile (.log)
docname = '[NotFound]'
endif
return $'{outdir}{SLASH}{docname}.log'
enddef
# Typeset the specified path
@@ -146,14 +196,14 @@ enddef
# true if the job is started successfully;
# false otherwise.
export def Typeset(
label: string,
Cmd: func(string): list<string>,
path: string,
efm: string,
env: dict<string> = {}
): bool
var fp = fnamemodify(path, ":p")
var wd = fnamemodify(fp, ":h")
label: string,
Cmd: func(string): list<string>,
path: string,
efm: string,
env: dict<string> = {}
): bool
var fp = fnamemodify(path, ':p')
var wd = fnamemodify(fp, ':h')
var qfid = NewQuickfixList(fp)
if qfid == -1
@@ -162,7 +212,7 @@ export def Typeset(
endif
if !filereadable(fp)
EchoErr(printf('File not readable: %s', fp), label)
EchoErr($'File not readable: {fp}', label)
return false
endif
@@ -173,7 +223,7 @@ export def Typeset(
callback: (c, m) => ProcessOutput(qfid, wd, efm, c, m),
close_cb: CloseCb,
exit_cb: (j, e) => ExitCb(label, j, e),
})
})
if job_status(jobid) ==# "fail"
EchoErr("Failed to start job", label)
@@ -188,7 +238,7 @@ export def Typeset(
enddef
export def JobStatus(label: string)
EchoMsg('Jobs still running: ' .. string(len(GetRunningJobs(label))), label)
EchoMsg($'Jobs still running: {len(GetRunningJobs(label))}', label)
enddef
export def StopJobs(label: string)
@@ -211,20 +261,20 @@ enddef
# true if the job is started successfully;
# false otherwise.
export def TypesetBuffer(
name: string,
Cmd: func(string): list<string>,
env = {},
label = 'Typeset'
): bool
const bufname = bufname(name)
name: string,
Cmd: func(string): list<string>,
env = {},
label = 'Typeset'
): bool
var bufname = bufname(name)
if empty(bufname)
EchoErr('Please save the buffer first.', label)
return false
endif
const efm = getbufvar(bufnr(bufname), "&efm")
const rootpath = FindRootDocument(bufname)
var efm = getbufvar(bufnr(bufname), "&efm")
var rootpath = FindRootDocument(bufname)
return Typeset('ConTeXt', Cmd, rootpath, efm, env)
enddef

View File

@@ -1,5 +1,5 @@
" Vim plugin for formatting XML
" Last Change: 2020 Jan 06
" Last Change: 2023 March 15th
" Version: 0.3
" Author: Christian Brabandt <cb@256bit.org>
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
@@ -37,13 +37,17 @@ func! xmlformat#Format() abort
" Keep empty input lines?
if empty(line)
call add(result, '')
let current += 1
continue
elseif line !~# '<[/]\?[^>]*>'
let nextmatch = match(list, '<[/]\?[^>]*>', current)
if nextmatch > -1
let line .= ' '. join(list[(current + 1):(nextmatch-1)], " ")
call remove(list, current+1, nextmatch-1)
let nextmatch = match(list, '^\s*$\|<[/]\?[^>]*>', current)
if nextmatch > -1
let lineEnd = nextmatch
else
let lineEnd = len(list)
endif
let line .= ' '. join(list[(current + 1):(lineEnd-1)], " ")
call remove(list, current+1, lineEnd-1)
endif
" split on `>`, but don't split on very first opening <
" this means, items can be like ['<tag>', 'tag content</tag>']
@@ -79,9 +83,13 @@ func! xmlformat#Format() abort
if s:EndTag(t[1])
call s:DecreaseIndent()
endif
"for y in t[1:]
let result+=s:FormatContent(t[1:])
"endfor
let result+=s:FormatContent(t[1:])
if s:IsTag(t[1])
let lastitem = t[1]
continue
endif
elseif s:IsComment(item)
let result+=s:FormatContent([item])
else
call add(result, s:Indent(item))
endif
@@ -94,7 +102,7 @@ func! xmlformat#Format() abort
if !empty(result)
let lastprevline = getline(v:lnum + count_orig)
let delete_lastline = v:lnum + count_orig - 1 == line('$')
exe v:lnum. ",". (v:lnum + count_orig - 1). 'd'
exe 'silent ' .. v:lnum. ",". (v:lnum + count_orig - 1). 'd'
call append(v:lnum - 1, result)
" Might need to remove the last line, if it became empty because of the
" append() call

View File

@@ -0,0 +1,39 @@
" Vim compiler file
" Compiler: Haskell Cabal Build file
" Maintainer: Mateo Gjika <@mateoxh>
if exists('current_compiler')
finish
endif
let current_compiler = 'cabal'
let s:save_cpo = &cpo
set cpo&vim
CompilerSet makeprg=cabal\ build
CompilerSet errorformat=
\%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:\ [%.%#],
\%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:%m,
\%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:,
\%W%f:%l:%c-%k:\ %tarning:\ [%.%#],
\%W%f:%l:%c-%k:\ %tarning:%m,
\%W%f:%l:%c-%k:\ %tarning:,
\%W%f:%l:%c:\ %tarning:\ [%.%#],
\%W%f:%l:%c:\ %tarning:%m,
\%W%f:%l:%c:\ %tarning:,
\%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:\ [%.%#],
\%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:%m,
\%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:,
\%E%f:%l:%c-%k:\ %trror:\ [%.%#],
\%E%f:%l:%c-%k:\ %trror:%m,
\%E%f:%l:%c-%k:\ %trror:,
\%E%f:%l:%c:\ %trror:\ [%.%#],
\%E%f:%l:%c:\ %trror:%m,
\%E%f:%l:%c:\ %trror:,
\%Z\ %\\+\|%.%#,
\%C%m
let &cpo = s:save_cpo
unlet s:save_cpo

View File

@@ -4,9 +4,7 @@ vim9script
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Contributors: Enno Nagel
# Last Change: 2024 Mar 29
# 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
# 2025 Mar 11 by The Vim Project (add comment for Dispatch)
# Last Change: 2026 Jan 10
if exists("g:current_compiler")
finish
@@ -16,7 +14,6 @@ import autoload '../autoload/context.vim'
g:current_compiler = 'context'
# CompilerSet makeprg=context
if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) ||
(!filereadable('Makefile') && !filereadable('makefile'))
var makeprg = join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ')
@@ -30,14 +27,14 @@ const context_errorformat = join([
"%-Qclose source%.%#> %f",
"%-Popen source%.%#name '%f'",
"%-Qclose source%.%#name '%f'",
"tex %trror%.%#error on line %l in file %f: %m",
"%E! %m",
"%Ztex %trror%.%#error on line %l in file %f",
"%Elua %trror%.%#error on line %l in file %f:",
"%+Emetapost %#> error: %#",
"%Emetafun%.%#error: %m",
"! error: %#%m",
"%-C %#",
"%C! %m",
"%Z[ctxlua]%m",
"%Z%.%#[ctxlua]:%l:%m",
"%+C<*> %.%#",
"%-C%.%#",
"%Z...%m",

View File

@@ -3,7 +3,7 @@
" Language: Ada (GNAT)
" $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $
" Copyright: Copyright (C) 2006 Martin Krischik
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>k
" Maintainer: Martin Krischi <krischik@users.sourceforge.net>
" Ned Okie <nokie@radford.edu>
" $Author: krischik $
" $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $

View File

@@ -2,7 +2,8 @@
" Compiler: Pandoc
" Maintainer: Konfekt
" Last Change: 2024 Nov 19
" 2025 May 15 Update the title regex for CompilerSet #17321
" 2025 May 15 by Vim Project: Update the title regex for CompilerSet #17321
" 2026 Jan 10 by Vim Project: Do not set the title #19048
"
" Expects output file extension, say `:make html` or `:make pdf`.
" Passes additional arguments to pandoc, say `:make html --self-contained`.
@@ -52,8 +53,6 @@ endfunction
execute 'CompilerSet makeprg=pandoc'..escape(
\ ' --standalone'..
\ (s:PandocFiletype(&filetype) ==# 'markdown' && (getline(1) =~# '^%\s\+\S\+' || (search('^title:\s\+\S\+', 'cnw') > 0)) ?
\ '' : ' --metadata title=%:t:r:S')..
\ ' '..s:PandocLang()..
\ ' --from='..s:PandocFiletype(&filetype)..
\ ' '..get(b:, 'pandoc_compiler_args', get(g:, 'pandoc_compiler_args', ''))..

View File

@@ -1,6 +1,6 @@
" Vim compiler file
" Compiler: Perl syntax checks (perl -Wc)
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Author: Christian J. Robinson <heptite@gmail.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues

View File

@@ -1,6 +1,6 @@
" Vim compiler file
" Compiler: perlcritic
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Author: Doug Kearns <dougkearns@gmail.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues

View File

@@ -1,6 +1,6 @@
" Vim compiler file
" Compiler: podchecker
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Author: Doug Kearns <dougkearns@gmail.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues

View File

@@ -0,0 +1,25 @@
" Vim compiler file
" Compiler: Pyright (Python Type Checker)
" Maintainer: @konfekt
" Last Change: 2025 Dec 26
if exists("current_compiler") | finish | endif
let current_compiler = "pyright"
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=pyright
" CompilerSet makeprg=basedpyright
exe 'CompilerSet makeprg=' .. escape(
\ get(b:, 'pyright_makeprg', get(g:, 'pyright_makeprg', 'pyright')),
\ ' \|"')
CompilerSet errorformat=
\%E%f:%l:%c\ -\ error:\ %m,
\%W%f:%l:%c\ -\ warning:\ %m,
\%N%f:%l:%c\ -\ note:\ %m,
\%C[ \t]\ %.%#,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -4,6 +4,7 @@
" Last Change: 2024 Nov 07
" 2024 Nov 19 by the Vim Project (properly escape makeprg setting)
" 2025 Nov 06 by the Vim Project (do not set buffer-local makeprg)
" 2024 Dec 24 by the Vim Project (mute Found messages)
if exists("current_compiler") | finish | endif
let current_compiler = "ruff"
@@ -16,6 +17,7 @@ exe 'CompilerSet makeprg=' .. escape('ruff check --output-format=concise '
\ ..get(b:, 'ruff_makeprg_params', get(g:, 'ruff_makeprg_params', '--preview')),
\ ' \|"')
CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,%f:%l:%c\ -\ %m,%f:
CompilerSet errorformat+=%-GFound\ %.%#
let &cpo = s:cpo_save
unlet s:cpo_save

20
runtime/compiler/ty.vim Normal file
View File

@@ -0,0 +1,20 @@
" Vim compiler file
" Compiler: Ty (Python Type Checker)
" Maintainer: @konfekt
" Last Change: 2024 Dec 24
if exists("current_compiler") | finish | endif
let current_compiler = "ty"
let s:cpo_save = &cpo
set cpo&vim
" CompilerSet makeprg=ty
exe 'CompilerSet makeprg=' .. escape(
\ get(b:, 'ty_makeprg', get(g:, 'ty_makeprg', 'ty check --no-progress --color=never'))
\ ..' --output-format=concise', ' \|"')
CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,%f:%l:%c\ -\ %m,%f:
CompilerSet errorformat+=%-GFound\ %.%#
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -1,4 +1,4 @@
*builtin.txt* For Vim version 9.1. Last change: 2025 Dec 13
*builtin.txt* For Vim version 9.1. Last change: 2026 Jan 17
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -23,9 +23,11 @@ Use CTRL-] on the function name to jump to the full explanation.
USAGE RESULT DESCRIPTION ~
abs({expr}) Float or Number absolute value of {expr}
abs({expr}) Float/Number
absolute value of {expr}
acos({expr}) Float arc cosine of {expr}
add({object}, {item}) List/Blob append {item} to {object}
add({object}, {item}) List/Blob
append {item} to {object}
and({expr}, {expr}) Number bitwise AND
append({lnum}, {text}) Number append {text} below line {lnum}
appendbufline({buf}, {lnum}, {text})
@@ -33,7 +35,8 @@ appendbufline({buf}, {lnum}, {text})
in buffer {buf}
argc([{winid}]) Number number of files in the argument list
argidx() Number current index in the argument list
arglistid([{winnr} [, {tabnr}]]) Number argument list id
arglistid([{winnr} [, {tabnr}]])
Number argument list id
argv({nr} [, {winid}]) String {nr} entry of the argument list
argv([-1, {winid}]) List the argument list
asin({expr}) Float arc sine of {expr}
@@ -43,7 +46,7 @@ assert_equal({exp}, {act} [, {msg}])
assert_equalfile({fname-one}, {fname-two} [, {msg}])
Number assert file contents are equal
assert_exception({error} [, {msg}])
Number assert {error} is in v:exception
Number assert {error} is in |v:exception|
assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]])
Number assert {cmd} fails
assert_false({actual} [, {msg}])
@@ -81,8 +84,8 @@ bufexists({buf}) Number |TRUE| if buffer {buf} exists
buflisted({buf}) Number |TRUE| if buffer {buf} is listed
bufload({buf}) Number load buffer {buf} if not loaded yet
bufloaded({buf}) Number |TRUE| if buffer {buf} is loaded
bufname([{buf}]) String Name of the buffer {buf}
bufnr([{buf} [, {create}]]) Number Number of the buffer {buf}
bufname([{buf}]) String name of the buffer {buf}
bufnr([{buf} [, {create}]]) Number number of the buffer {buf}
bufwinid({buf}) Number window ID of buffer {buf}
bufwinnr({buf}) Number window number of buffer {buf}
byte2line({byte}) Number line number at byte count {byte}
@@ -121,7 +124,8 @@ ch_setoptions({handle}, {options})
ch_status({handle} [, {options}])
String status of channel {handle}
changenr() Number current change number
char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in {expr}
char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in
{expr}
charclass({string}) Number character class of {string}
charcol({expr} [, {winid}]) Number column number of cursor or mark
charidx({string}, {idx} [, {countcc} [, {utf16}]])
@@ -180,10 +184,12 @@ expand({expr} [, {nosuf} [, {list}]])
expandcmd({string} [, {options}])
String expand {string} like with `:edit`
extend({expr1}, {expr2} [, {expr3}])
List/Dict insert items of {expr2} into {expr1}
List/Dict
insert items of {expr2} into {expr1}
extendnew({expr1}, {expr2} [, {expr3}])
List/Dict like |extend()| but creates a new
List or Dictionary
List/Dict
like |extend()| but creates a new List
or Dictionary
feedkeys({string} [, {mode}]) Number add key sequence to typeahead buffer
filecopy({from}, {to}) Number |TRUE| if copying file {from} to {to}
worked
@@ -194,7 +200,8 @@ filter({expr1}, {expr2}) List/Dict/Blob/String
{expr2} is 0
finddir({name} [, {path} [, {count}]])
findfile({name} [, {path} [, {count}]])
String/List find dir/file {name} in {path}
String/List
find dir/file {name} in {path}
flatten({list} [, {maxdepth}]) List flatten {list} up to {maxdepth} levels
flattennew({list} [, {maxdepth}])
List flatten a copy of {list}
@@ -216,7 +223,8 @@ funcref({name} [, {arglist}] [, {dict}])
Funcref reference to function {name}
function({name} [, {arglist}] [, {dict}])
Funcref named reference to function {name}
garbagecollect([{atexit}]) none free memory, breaking cyclic references
garbagecollect([{atexit}]) none free memory, breaking cyclic
references
get({list}, {idx} [, {def}]) any get item {idx} from {list} or {def}
get({dict}, {key} [, {def}]) any get item {key} from {dict} or {def}
get({func}, {what}) any get property of funcref/partial {func}
@@ -229,7 +237,7 @@ getbufvar({buf}, {varname} [, {def}])
getcellpixels() List get character cell pixel size
getcellwidths() List get character cell width overrides
getchangelist([{buf}]) List list of change list items
getchar([{expr} [, {opts}]]) Number or String
getchar([{expr} [, {opts}]]) Number/String
get one character from the user
getcharmod() Number modifiers for the last typed character
getcharpos({expr}) List position of cursor, mark, etc.
@@ -245,7 +253,8 @@ getcmdprompt() String return the current command-line prompt
getcmdscreenpos() Number return cursor screen position in
command-line
getcmdtype() String return current command-line type
getcmdwintype() String return current command-line window type
getcmdwintype() String return current command-line window
type
getcompletion({pat}, {type} [, {filtered}])
List list of cmdline completion matches
getcompletiontype({pat}) String return the type of the command-line
@@ -263,7 +272,8 @@ getimstatus() Number |TRUE| if the IME status is active
getjumplist([{winnr} [, {tabnr}]])
List list of jump list items
getline({lnum}) String line {lnum} of current buffer
getline({lnum}, {end}) List lines {lnum} to {end} of current buffer
getline({lnum}, {end}) List lines {lnum} to {end} of current
buffer
getloclist({nr}) List list of location list items
getloclist({nr}, {what}) Dict get specific location list properties
getmarklist([{buf}]) List list of global/local marks
@@ -275,7 +285,8 @@ getpos({expr}) List position of cursor, mark, etc.
getqflist() List list of quickfix items
getqflist({what}) Dict get specific quickfix list properties
getreg([{regname} [, 1 [, {list}]]])
String or List contents of a register
String/List
contents of a register
getreginfo([{regname}]) Dict information about a register
getregion({pos1}, {pos2} [, {opts}])
List get the text from {pos1} to {pos2}
@@ -286,7 +297,8 @@ getscriptinfo([{opts}]) List list of sourced scripts
getstacktrace() List get current stack trace of Vim scripts
gettabinfo([{expr}]) List list of tab pages
gettabvar({nr}, {varname} [, {def}])
any variable {varname} in tab {nr} or {def}
any variable {varname} in tab {nr} or
{def}
gettabwinvar({tabnr}, {winnr}, {name} [, {def}])
any {name} in {winnr} in tab page {tabnr}
gettagstack([{nr}]) Dict get the tag stack of window {nr}
@@ -305,8 +317,8 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]])
has({feature} [, {check}]) Number |TRUE| if feature {feature} supported
has_key({dict}, {key}) Number |TRUE| if {dict} has entry {key}
haslocaldir([{winnr} [, {tabnr}]])
Number |TRUE| if the window executed |:lcd|
or |:tcd|
Number |TRUE| if the window executed `:lcd` or
`:tcd`
hasmapto({what} [, {mode} [, {abbr}]])
Number |TRUE| if mapping to {what} exists
histadd({history}, {item}) Number add an item to a history
@@ -332,9 +344,13 @@ inputdialog({prompt} [, {text} [, {cancelreturn}]])
inputlist({textlist}) Number let the user pick from a choice list
inputrestore() Number restore typeahead
inputsave() Number save and clear typeahead
inputsecret({prompt} [, {text}]) String like input() but hiding the text
insert({object}, {item} [, {idx}]) List insert {item} in {object} [before {idx}]
instanceof({object}, {class}) Number |TRUE| if {object} is an instance of {class}
inputsecret({prompt} [, {text}])
String like input() but hiding the text
insert({object}, {item} [, {idx}])
List insert {item} in {object}
[before {idx}]
instanceof({object}, {class}) Number |TRUE| if {object} is an instance of
{class}
interrupt() none interrupt script execution
invert({expr}) Number bitwise invert
isabsolutepath({path}) Number |TRUE| if {path} is an absolute path
@@ -346,7 +362,8 @@ isnan({expr}) Number |TRUE| if {expr} is NaN
items({expr}) List key/index-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}
job_setoptions({job}, {options})
none set options for {job}
job_start({command} [, {options}])
Job start a job
job_status({job}) String get the status of {job}
@@ -358,9 +375,10 @@ json_decode({string}) any decode JSON
json_encode({expr}) String encode JSON
keys({dict}) List keys in {dict}
keytrans({string}) String translate internal keycodes to a form
that can be used by |:map|
that can be used by `:map`
len({expr}) Number the length of {expr}
libcall({lib}, {func}, {arg}) String call {func} in library {lib} with {arg}
libcall({lib}, {func}, {arg}) String call {func} in library {lib} with
{arg}
libcallnr({lib}, {func}, {arg}) Number idem, but return a Number
line({expr} [, {winid}]) Number line nr of cursor, last line or mark
line2byte({lnum}) Number byte count of line {lnum}
@@ -379,7 +397,7 @@ luaeval({expr} [, {expr}]) any evaluate |Lua| expression
map({expr1}, {expr2}) List/Dict/Blob/String
change each item in {expr1} to {expr2}
maparg({name} [, {mode} [, {abbr} [, {dict}]]])
String or Dict
String/Dict
rhs of mapping {name} in mode {mode}
mapcheck({name} [, {mode} [, {abbr}]])
String check for mappings matching {name}
@@ -394,7 +412,7 @@ matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]])
Number highlight {pattern} with {group}
matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]])
Number highlight positions with {group}
matcharg({nr}) List arguments of |:match|
matcharg({nr}) List arguments of `:match`
matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict})
List all the {pat} matches in buffer {buf}
matchdelete({id} [, {win}]) Number delete match identified by {id}
@@ -405,7 +423,8 @@ matchfuzzy({list}, {str} [, {dict}])
matchfuzzypos({list}, {str} [, {dict}])
List fuzzy match {str} in {list}
matchlist({expr}, {pat} [, {start} [, {count}]])
List match and submatches of {pat} in {expr}
List match and submatches of {pat} in
{expr}
matchstr({expr}, {pat} [, {start} [, {count}]])
String {count}'th match of {pat} in {expr}
matchstrlist({list}, {pat} [, {dict})
@@ -422,11 +441,13 @@ mzeval({expr}) any evaluate |MzScheme| expression
nextnonblank({lnum}) Number line nr of non-blank line >= {lnum}
ngettext({single}, {plural}, {number}[, {domain}])
String translate text based on {number}
nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value {expr}
nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value
{expr}
or({expr}, {expr}) Number bitwise OR
pathshorten({expr} [, {len}]) String shorten directory names in a path
perleval({expr}) any evaluate |Perl| expression
popup_atcursor({what}, {options}) Number create popup window near the cursor
popup_atcursor({what}, {options})
Number create popup window near the cursor
popup_beval({what}, {options}) Number create popup window for 'ballooneval'
popup_clear() none close all popup windows
popup_close({id} [, {result}]) none close popup window {id}
@@ -446,7 +467,8 @@ popup_menu({what}, {options}) Number create a popup window used as a menu
popup_move({id}, {options}) none set position of popup window {id}
popup_notification({what}, {options})
Number create a notification popup window
popup_setbuf({id}, {buf}) Bool set the buffer for the popup window {id}
popup_setbuf({id}, {buf}) Bool set the buffer for the popup window
{id}
popup_setoptions({id}, {options})
none set options for popup window {id}
popup_settext({id}, {text}) none set the text of popup window {id}
@@ -456,10 +478,13 @@ preinserted() Number whether text is inserted after cursor
prevnonblank({lnum}) Number line nr of non-blank line <= {lnum}
printf({fmt}, {expr1}...) String format text
prompt_getprompt({buf}) String get prompt text
prompt_setcallback({buf}, {expr}) none set prompt callback function
prompt_setinterrupt({buf}, {text}) none set prompt interrupt function
prompt_setcallback({buf}, {expr})
none set prompt callback function
prompt_setinterrupt({buf}, {text})
none set prompt interrupt function
prompt_setprompt({buf}, {text}) none set prompt text
prop_add({lnum}, {col}, {props}) none add one text property
prop_add({lnum}, {col}, {props})
none add one text property
prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...])
none add multiple text properties
prop_clear({lnum} [, {lnum-end} [, {props}]])
@@ -527,9 +552,10 @@ round({expr}) Float round off {expr}
rubyeval({expr}) any evaluate |Ruby| expression
screenattr({row}, {col}) Number attribute at screen position
screenchar({row}, {col}) Number character at screen position
screenchars({row}, {col}) List List of characters at screen position
screenchars({row}, {col}) List list of characters at screen position
screencol() Number current cursor column
screenpos({winid}, {lnum}, {col}) Dict screen row and col of a text character
screenpos({winid}, {lnum}, {col})
Dict screen row and col of a text character
screenrow() Number current cursor row
screenstring({row}, {col}) String characters at screen position
search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]])
@@ -570,7 +596,9 @@ setqflist({list} [, {action}]) Number modify quickfix list using {list}
setqflist({list}, {action}, {what})
Number modify specific quickfix list props
setreg({n}, {v} [, {opt}]) Number set register to value and type
settabvar({nr}, {varname}, {val}) none set {varname} in tab page {nr} to {val}
settabvar({nr}, {varname}, {val})
none set {varname} in tab page {nr} to
{val}
settabwinvar({tabnr}, {winnr}, {varname}, {val})
none set {varname} in window {winnr} in tab
page {tabnr} to {val}
@@ -600,7 +628,8 @@ sign_unplacelist({list}) List unplace a list of signs
simplify({filename}) String simplify filename as much as possible
sin({expr}) Float sine of {expr}
sinh({expr}) Float hyperbolic sine of {expr}
slice({expr}, {start} [, {end}]) String, List or Blob
slice({expr}, {start} [, {end}])
String/List/Blob
slice of a String, List or Blob
sort({list} [, {how} [, {dict}]])
List sort {list}, compare with {how}
@@ -630,7 +659,8 @@ strcharpart({str}, {start} [, {len} [, {skipcc}]])
String {len} characters of {str} at
character {start}
strchars({expr} [, {skipcc}]) Number character count of the String {expr}
strdisplaywidth({expr} [, {col}]) Number display length of the String {expr}
strdisplaywidth({expr} [, {col}])
Number display length of the String {expr}
strftime({format} [, {time}]) String format time with a specified format
strgetchar({str}, {index}) Number get char {index} from {str}
stridx({haystack}, {needle} [, {start}])
@@ -638,20 +668,24 @@ stridx({haystack}, {needle} [, {start}])
string({expr}) String String representation of {expr} value
strlen({expr}) Number length of the String {expr}
strpart({str}, {start} [, {len} [, {chars}]])
String {len} bytes/chars of {str} at
byte {start}
String {len} bytes/chars of {str} at byte
{start}
strptime({format}, {timestring})
Number Convert {timestring} to unix timestamp
Number convert {timestring} to unix timestamp
strridx({haystack}, {needle} [, {start}])
Number last index of {needle} in {haystack}
strtrans({expr}) String translate string to make it printable
strutf16len({string} [, {countcc}])
Number number of UTF-16 code units in {string}
strwidth({expr}) Number display cell length of the String {expr}
submatch({nr} [, {list}]) String or List
specific match in ":s" or substitute()
Number number of UTF-16 code units in
{string}
strwidth({expr}) Number display cell length of the String
{expr}
submatch({nr} [, {list}]) String/List
specific match in `:substitute` or
substitute()
substitute({expr}, {pat}, {sub}, {flags})
String all {pat} in {expr} replaced with {sub}
String all {pat} in {expr} replaced with
{sub}
swapfilelist() List swap files found in 'directory'
swapinfo({fname}) Dict information about swap file {fname}
swapname({buf}) String swap file of buffer {buf}
@@ -660,12 +694,14 @@ synIDattr({synID}, {what} [, {mode}])
String attribute {what} of syntax ID {synID}
synIDtrans({synID}) Number translated syntax ID of {synID}
synconcealed({lnum}, {col}) List info about concealing
synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and
{col}
system({expr} [, {input}]) String output of shell command/filter {expr}
systemlist({expr} [, {input}]) List output of shell command/filter {expr}
tabpagebuflist([{arg}]) List list of buffer numbers in tab page
tabpagenr([{arg}]) Number number of current or last tab page
tabpagewinnr({tabarg} [, {arg}]) Number number of current window in tab page
tabpagewinnr({tabarg} [, {arg}])
Number number of current window in tab page
tagfiles() List tags files used
taglist({expr} [, {filename}]) List list of tags matching {expr}
tan({expr}) Float tangent of {expr}
@@ -695,7 +731,8 @@ term_setansicolors({buf}, {colors})
none set ANSI palette in GUI color mode
term_setapi({buf}, {expr}) none set |terminal-api| function name prefix
term_setkill({buf}, {how}) none set signal to stop job in terminal
term_setrestore({buf}, {command}) none set command to restore terminal
term_setrestore({buf}, {command})
none set command to restore terminal
term_setsize({buf}, {rows}, {cols})
none set the size of a terminal
term_start({cmd} [, {options}]) Number open a terminal window and run a job
@@ -735,8 +772,10 @@ timer_start({time}, {callback} [, {options}])
Number create a timer
timer_stop({timer}) none stop a timer
timer_stopall() none stop all timers
tolower({expr}) String the String {expr} switched to lowercase
toupper({expr}) String the String {expr} switched to uppercase
tolower({expr}) String the String {expr} switched to
lowercase
toupper({expr}) String the String {expr} switched to
uppercase
tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr}
to chars in {tostr}
trim({text} [, {mask} [, {dir}]])
@@ -755,7 +794,7 @@ utf16idx({string}, {idx} [, {countcc} [, {charidx}]])
Number UTF-16 index of byte {idx} in {string}
values({dict}) List values in {dict}
virtcol({expr} [, {list} [, {winid}])
Number or List
Number/List
screen column of cursor or mark
virtcol2col({winid}, {lnum}, {col})
Number byte index of a character on screen
@@ -782,7 +821,8 @@ winheight({nr}) Number height of window {nr}
winlayout([{tabnr}]) List layout of windows in tab {tabnr}
winline() Number window line of the cursor
winnr([{expr}]) Number number of current window
winrestcmd() String returns command to restore window sizes
winrestcmd() String returns command to restore window
sizes
winrestview({dict}) none restore view of current window
winsaveview() Dict save view of current window
winwidth({nr}) Number width of window {nr}
@@ -4687,7 +4727,7 @@ getloclist({nr} [, {what}]) *getloclist()*
:echo getloclist(3, {'all': 0})
:echo getloclist(5, {'filewinid': 0})
<
Return type: list<dict<any>> or list<any>
Return type: list<dict<any>> or dict<any>
getmarklist([{buf}]) *getmarklist()*
@@ -4839,6 +4879,11 @@ getpos({expr}) *getpos()*
within the line. To get the character position in the line,
use |getcharpos()|.
The visual marks |'<| and |'>| refer to the beginning and end
of the visual selection relative to the buffer. Note that
this differs from |setpos()|, where they are relative to the
cursor position.
Note that for '< and '> Visual mode matters: when it is "V"
(visual line mode) the column of '< is zero and the column of
'> is a large number equal to |v:maxcol|.
@@ -4963,7 +5008,7 @@ getqflist([{what}]) *getqflist()*
:echo getqflist({'nr': 2, 'title': 1})
:echo getqflist({'lines' : ["F1:10:L10"]})
<
Return type: list<dict<any>> or list<any>
Return type: list<dict<any>> or dict<any>
getreg([{regname} [, 1 [, {list}]]]) *getreg()*
@@ -10112,9 +10157,14 @@ setpos({expr}, {list}) *setpos()*
preferred column is not set. When it is present and setting a
mark position it is not used.
Note that for '< and '> changing the line number may result in
the marks to be effectively be swapped, so that '< is always
before '>.
Note that for |'<| and |'>| changing the line number may
result in the marks to be effectively swapped, so that |'<| is
always before |'>|.
The visual marks |'<| and |'>| refer to the beginning and end
of the visual selection relative to the cursor position.
Note that this differs from |getpos()|, where they are
relative to the buffer.
Returns 0 when the position could be set, -1 otherwise.
An error message is given if {expr} is invalid.

View File

@@ -1,4 +1,4 @@
*change.txt* For Vim version 9.1. Last change: 2025 Dec 18
*change.txt* For Vim version 9.1. Last change: 2026 Jan 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1777,7 +1777,9 @@ l Long lines are not broken in insert mode: When a line was longer than
automatically format it.
*fo-m*
m Also break at a multibyte character above 255. This is useful for
Asian text where every character is a word on its own.
Asian text where every character is a word on its own. Note that
line breaks may also be added after punctuation characters such as
colons to match the CJK linebreaking rules.
*fo-M*
M When joining lines, don't insert a space before or after a multibyte
character. Overrules the 'B' flag.

View File

@@ -1,4 +1,4 @@
*eval.txt* For Vim version 9.1. Last change: 2025 Dec 21
*eval.txt* For Vim version 9.1. Last change: 2026 Jan 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -467,7 +467,13 @@ Changing the order of items in a list: >
:call reverse(list) " reverse the order of items
:call uniq(sort(list)) " sort and remove duplicates
In a Vim9 script or a def method, a new item can be appended to a List by
using the list length as the index: >
vim9script
var l: list<string>
l[0] = 'a'
l[1] = 'b'
<
For loop ~
The |:for| loop executes commands for each item in a List, Tuple, String or
@@ -3718,13 +3724,16 @@ text...
matching {pattern} is being thrown and has not yet
been caught by a previous `:catch`. Otherwise, these
commands are skipped.
When {pattern} is omitted all errors are caught.
Examples: >
Pattern can start with "Vim({cmd})" to indicate an
exception that occurred when executing the Ex command
{cmd}. When {pattern} is omitted all errors are
caught. Examples: >
:catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C)
:catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors
:catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts
:catch /^Vim\%((\S\+)\)\=:E/ " catch all Vim errors
:catch /^Vim\%((\S\+)\)\=:/ " catch errors and interrupts
:catch /^Vim(write):/ " catch all errors in :write
:catch /^Vim\%((\a\+)\)\=:E123:/ " catch error E123
:catch /^Vim(!):/ " catch all errors in :!
:catch /^Vim\%((\S\+)\)\=:E123:/ " catch error E123
:catch /my-exception/ " catch user exception
:catch /.*/ " catch everything
:catch " same as /.*/

View File

@@ -1,4 +1,4 @@
.TH EVIM 1 "2002 February 16"
.TH EVIM 1 "2024 August 12"
.SH 名前
evim \- easy Vim, モードレスエディタ Vim
.SH 書式
@@ -34,8 +34,13 @@ CTRL-X が切り取り、CTRL-C がコピー、CTRL-V がペーストです。
vim(1) を参照してください。
.SH ファイル
.TP 15
/usr/local/lib/vim/evim.vim
/usr/local/share/vim/vim??/evim.vim
eVim の初期化スクリプト。
.br
.I vim??
は短いバージョン番号で
.B Vim 9.1
では vim91 です。
.SH 別名
evim は "gumbies のための Vim" とも呼ばれています。
evim を使っているあなたはきっと、頭にハンカチをかぶっているのです。

View File

@@ -1,8 +1,8 @@
*ft_context.txt* For Vim version 9.1. Last change: 2024 Jan 01
*ft_context.txt* For Vim version 9.2. Last change: 2026 Jan 18
This is the documentation for the ConTeXt filetype plugin.
NOTE: the plugin requires +vim9script.
NOTE: the plugin requires |+vim9script|.
==============================================================================
CONTENTS *context.vim* *ft-context*
@@ -19,11 +19,11 @@ Introduction ~
ConTeXt, similarly to LaTeX, is a macro-based typesetting system built on TeX:
>
https://wiki.contextgarden.net
https://wiki.contextgarden.net/Vim
https://wiki.contextgarden.net/Input_and_compilation/Text_editors/Vim
<
The ConTeXt plugin provides syntax highlighting, completion and support for
typesetting ConTeXt documents. The recommended way to typeset a document is to
use |:ConTeXt|. This will invoke the `mtxrun` script that is found in `$PATH`.
use |:ConTeXt|, which invokes the `mtxrun` script that is found in $PATH.
For more fine grained control over the command and its environment,
`context.Typeset()` can be used directly (or `context#Typeset()` from legacy
@@ -32,26 +32,31 @@ Vim script). For instance, if a version of ConTeXt is installed in
>
import autoload 'context.vim'
var os = "linux" # Update to match your system
var arch = "arm64" # Update to match your system
def MyConTeXt()
const env = {'PATH':
printf("%s/context/tex/texmf-<os>-<arch>/bin:%s", $HOME, $PATH)}
context.Typeset("%", env)
var env = {
'PATH': $'{$HOME}/context/tex/texmf-{os}-{arch}/bin:{$PATH}'
}
context.Typeset("%", env)
enddef
This code may go in `~/.vim/after/ftplugin/context.vim`. A mapping can then be
defined to invoke the custom command:
>
nnoremap <silent><buffer><leader>t <scriptcmd>MyConTeXt()<cr>
<
This code should go in `~/.vim/after/ftplugin/context.vim`.
`context.Typeset()` accepts a third optional argument to specify a custom
typesetting command. That must be a function that takes a path and returns the
command as a List. For example:
command as a |list|. For example:
>
def ConTeXtCustomCommand(path: string): list<string>
return ['mtxrun', '--script', 'context', '--nonstopmode', path]
enddef
context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand)
def MyContext()
context.Typeset("%", v:none, ConTeXtCustomCommand)
enddef
<
Large projects are often organized as a root document and various chapter
files. When editing a chapter file, it is convenient to invoke |:ConTeXt|
@@ -67,7 +72,7 @@ one in the current buffer. The root document does not have to be opened in
Vim.
To extend completion and syntax highlighting, you may generate supporting
files using ConTeXt and add them to your configuration. If you configuration
files using ConTeXt and add them to your configuration. If your configuration
resides in `~/.vim`, you may use these commands:
>
mkdir -p ~/.vim/syntax/shared
@@ -81,7 +86,8 @@ The last command will create the following syntax files:
- `context-data-metafun.vim`;
- `context-data-tex.vim`.
The same command can be used to update those syntax files.
If present, such files will be automatically loaded to enhance syntax
highlighting. The same command can be used to update those syntax files.
*ft-context-commands*
Commands ~
@@ -109,8 +115,9 @@ and this option is not set, standard `make` is used. If this option is set,
>
g:context_ignore_makefile = 0
<
NOTE: before using |:make|, set the working directory of the buffer to the
directory of the file to be typeset.
NOTE: before using |:make|, ensure that the working directory of the buffer is
set to the directory of the file you want to typeset. Additionally, be aware
that |:make| searches for `mtxrun` in $PATH.
*'g:context_extra_options'*
A list of additional options to pass to `mtxrun`.
@@ -135,11 +142,11 @@ When set, do not define any mappings.
*ft-context-mappings*
Mappings ~
tp "reflow TeX paragraph".
tp "reflow TeX paragraph" (motion).
i$ "inside inline math block".
i$ "inside inline math block" (text object selection).
a$ "around inline math block".
a$ "around inline math block" (text object selection).
]] [count] start of sections forward.

View File

@@ -1,10 +1,10 @@
*ft_mp.txt* For Vim version 9.1. Last change: 2022 Aug 12
*ft_mp.txt* For Vim version 9.2. Last change: 2026 Jan 10
This is the documentation for the METAFONT and MetaPost filetype plugins.
Unless otherwise specified, the commands, settings and mappings defined below
apply equally to both filetypes.
NOTE: the plugin requires +vim9script.
NOTE: the plugin requires |+vim9script|.
==============================================================================
CONTENTS *mp.vim* *ft-metapost*
@@ -38,25 +38,25 @@ next line should not change from whatever it has been manually set.
For example, this is the default indentation of a simple macro:
>
def foo =
makepen(
subpath(T-n,t) of r
shifted .5down
--subpath(t,T) of r shifted .5up -- cycle
)
withcolor black
enddef
def foo =
makepen(
subpath(T-n,t) of r
shifted .5down
--subpath(t,T) of r shifted .5up -- cycle
)
withcolor black
enddef
<
By adding the special comments, the indentation can be adjusted arbitrarily:
>
def foo =
makepen(
subpath(T-n,t) of r %>
shifted .5down %>
--subpath(t,T) of r shifted .5up -- cycle %<<<
)
withcolor black
enddef
def foo =
makepen(
subpath(T-n,t) of r %>
shifted .5down %>
--subpath(t,T) of r shifted .5up -- cycle %<<<
)
withcolor black
enddef
<
*ft-metapost-commands*
Commands ~

View File

@@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 9.1. Last change: 2025 Nov 09
*gui_w32.txt* For Vim version 9.1. Last change: 2025 Dec 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -504,4 +504,25 @@ To use the system's default title bar colors, set highlighting groups to
hi TitleBar guibg=NONE guifg=NONE
hi TitleBarNC guibg=NONE guifg=NONE
<
Full Screen *gui-w32-fullscreen*
To enable fullscreen mode in the Windows GUI version of Vim, add the 's' flag
to the 'guioptions' setting.
For convenience, you can define a command or mapping to toggle fullscreen mode:
>
command! ToggleFullscreen {
if &guioptions =~# 's'
set guioptions-=s
else
set guioptions+=s
endif
}
map <expr> <F11> &go =~# 's' ? ":se go-=s<CR>" : ":se go+=s<CR>"
The fullscreen mode will occupy the entire screen area while hiding window
decorations such as the title bar and borders.
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:

View File

@@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 9.1. Last change: 2025 Nov 09
*if_pyth.txt* For Vim version 9.1. Last change: 2026 Jan 11
VIM REFERENCE MANUAL by Paul Moore
@@ -183,9 +183,11 @@ vim.eval(str) *python-eval*
Evaluates the expression str using the vim internal expression
evaluator (see |expression|). Returns the expression result as:
- a string if the Vim expression evaluates to a string or number
- a list if the Vim expression evaluates to a Vim list
- a tuple if the Vim expression evaluates to a Vim tuple
- a dictionary if the Vim expression evaluates to a Vim dictionary
- a list if the Vim expression evaluates to a Vim |list|
- a tuple if the Vim expression evaluates to a Vim |tuple|
- a dictionary if the Vim expression evaluates to a Vim |dict|
- a boolean if Vim exression evaluates to |v:true| or |v:false|
- `None` if Vim expression evaluates to |v:null| or |v:none|
Dictionaries, lists and tuples are recursively expanded.
Examples: >
:" value of the 'textwidth' option

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 9.1. Last change: 2025 Nov 09
*insert.txt* For Vim version 9.1. Last change: 2026 Jan 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1720,7 +1720,7 @@ Complete:
Notes
- It doesn't complete command arguments that rely on 'shellcmd' completion
type in Windows and WSL due to general slowness of canditate gathering,
type in Windows and WSL due to general slowness of candidate gathering,
e.g.
>
terminal dir

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 9.1. Last change: 2025 Dec 18
*options.txt* For Vim version 9.1. Last change: 2026 Jan 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1823,7 +1823,7 @@ A jump table for the options with a short description can be found at |Q_op|.
prepend, e.g.: >
set clipboard^=unnamed
< When using the GUI see |'go-A'|.
When using the |clipboard-providers| feature, only the "unamed" and
When using the |clipboard-providers| feature, only the "unnamed" and
"unnamedplus" features will be recognized If compiled without the
|+clipboard| feature but compiled with the |+clipboard_provider|
feature, then they will be the only values allowed and the other
@@ -4274,15 +4274,17 @@ A jump table for the options with a short description can be found at |Q_op|.
*'fsync'* *'fs'* *'nofsync'* *'nofs'*
'fsync' 'fs' boolean (default on)
global
global or local to buffer |global-local|
When on, the library function fsync() will be called after writing a
file. This will flush a file to disk, ensuring that it is safely
written even on filesystems which do metadata-only journaling. This
will force the harddrive to spin up on Linux systems running in laptop
mode, so it may be undesirable in some situations. Be warned that
turning this off increases the chances of data loss after a crash. On
systems without an fsync() implementation, this variable is always
off.
will force the hard drive to spin up on Linux systems running in
laptop mode, so it may be undesirable in some situations. Be warned
that turning this off increases the chances of data loss after a
crash. On systems without an fsync() implementation, this variable is
always off.
This is a |global-local| option, so it can be set per buffer, for
example when writing to a slow filesystem.
Also see 'swapsync' for controlling fsync() on swap files.
'fsync' also applies to |writefile()| (unless a flag is used to
overrule it) and when writing undo files (see |undo-persistence|).
@@ -4572,6 +4574,12 @@ A jump table for the options with a short description can be found at |Q_op|.
*'go-T'*
'T' Include Toolbar. Currently only in Win32, GTK+, Motif and
Photon GUIs.
*'go-s'*
's' Enable fullscreen mode. Currently only supported in the
MS-Windows GUI version. When set, the window will occupy the
entire screen and remove window decorations. Define custom
mappings to toggle this mode conveniently. For detailed usage
instructions, see |gui-w32-fullscreen|.
*'go-r'*
'r' Right-hand scrollbar is always present.
*'go-R'*
@@ -6033,7 +6041,8 @@ A jump table for the options with a short description can be found at |Q_op|.
When the number of matches exceeds this value, Vim shows ">" instead
of the exact count to keep searching fast.
Note: larger values may impact performance.
The value must be between 1 and 9999.
The value must be between 1 and 9999. See also the |searchcount()|
function.
*'menuitems'* *'mis'*
'menuitems' 'mis' number (default 25)
@@ -6964,6 +6973,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|lambda| or a |Funcref|. See |option-value-function| for more
information.
It is not allowed to change text or jump to another window while
evaluating 'qftf' |textlock|.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -7854,7 +7866,8 @@ A jump table for the options with a short description can be found at |Q_op|.
"search hit TOP, continuing at BOTTOM" messages are only
indicated by a "W" (Mnemonic: Wrapped) letter before the
search count statistics. The maximum limit can be set with
the 'maxsearchcount' option.
the 'maxsearchcount' option, see also |searchcount()|
function.
This gives you the opportunity to avoid that a change between buffers
requires you to hit <Enter>, but still gives as useful a message as
@@ -8131,7 +8144,7 @@ A jump table for the options with a short description can be found at |Q_op|.
when it is turned off. It is also reset when 'compatible' is set.
The 'L' flag in 'cpoptions' alters tab behavior when 'list' is
enabled. See also |ins-expandtab| ans user manual section |30.5| for
enabled. See also |ins-expandtab| and user manual section |30.5| for
in-depth explanations.
If Vim is compiled with the |+vartabs| feature then the value of

View File

@@ -1,10 +1,10 @@
*popup.txt* For Vim version 9.1. Last change: 2025 Nov 09
*popup.txt* For Vim version 9.1. Last change: 2026 Jan 08
VIM REFERENCE MANUAL by Bram Moolenaar
Displaying text in a floating window. *popup* *popup-window* *popupwin*
Displaying text in a popup window. *popup* *popup-window* *popupwin*
1. Introduction |popup-intro|

View File

@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 9.1. Last change: 2025 Nov 09
*quickfix.txt* For Vim version 9.1. Last change: 2025 Dec 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1654,6 +1654,22 @@ b/g:mypy_makeprg_params variable. For example: >
The global default is "--strict --ignore-missing-imports".
PYRIGHT TYPE CHECKER *compiler-pyright*
Commonly used compiler options can be added to 'makeprg' by setting the
b/g:pyright_makeprg_params variable.
The global default is "pyright".
TY TYPE CHECKER *compiler-ty*
Commonly used compiler options and executable can be set by the
b/g:ty_makeprg variable. For example: >
let b:ty_makeprg = "uv run ty"
The global default is "ty --no-progress --color=never".
RUFF LINTER *compiler-ruff*
Commonly used compiler options can be added to 'makeprg' by setting the

View File

@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 9.1. Last change: 2025 Oct 14
*syntax.txt* For Vim version 9.1. Last change: 2026 Jan 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1125,6 +1125,7 @@ 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_builtin_color = 0
:let g:cangjie_comment_color = 0
:let g:cangjie_identifier_color = 0
:let g:cangjie_keyword_color = 0
@@ -2701,50 +2702,50 @@ If you don't want to highlight these errors, leave it unset.
NROFF *nroff.vim* *ft-nroff-syntax*
The nroff syntax file works with AT&T n/troff out of the box. You need to
activate the GNU groff extra features included in the syntax file before you
can use them.
For example, Linux and BSD distributions use groff as their default text
processing package. In order to activate the extra syntax highlighting
features for groff, arrange for files to be recognized as groff (see
The nroff syntax file works with AT&T n/troff as-is. To support GNU troff
(groff), which Linux and BSD distributions use as their default typesetting
package, arrange for files to be recognized as groff input (see
|ft-groff-syntax|) or add the following option to your start-up files: >
:let nroff_is_groff = 1
Groff is different from the old AT&T n/troff that you may still find in
Solaris. Groff macro and request names can be longer than 2 characters and
there are extensions to the language primitives. For example, in AT&T troff
you access the year as a 2-digit number with the request \(yr. In groff you
can use the same request, recognized for compatibility, or you can use groff's
native syntax, \[yr]. Furthermore, you can use a 4-digit year directly:
\[year]. Macro requests can be longer than 2 characters, for example, GNU mm
accepts the requests ".VERBON" and ".VERBOFF" for creating verbatim
environments.
GNU troff differs from older AT&T n/troff programs (that you may still find in
Solaris or Plan 9) by extending the *roff language syntax. For example, in
AT&T troff, you access the count of years since 1900 with the escape sequence
\(yr. In groff you can do the same, which it recognizes for compatibility, or
use groff's extended syntax, \[yr]. AT&T troff documented the yr register as
storing the "last two digits of current year", but had a Y2K problem; in
groff, you can access the Gregorian year correctly: \[year]. In groff, font,
register, macro, string, and request names can exceed two characters; for
example, with groff's mm package, the control lines ".VERBON" and ".VERBOFF"
call macros of those names to bracket displays of "verbatim" content.
In order to obtain the best formatted output g/troff can give you, you should
follow a few simple rules about spacing and punctuation.
1. Do not leave empty spaces at the end of lines.
1. Break the line (put a carriage return) at the end of every sentence. Don't
permit trailing spaces before the newline.
2. Leave one space and one space only after an end-of-sentence period,
exclamation mark, etc.
2. If a line ends with a period, question mark, or exclamation point that does
not end a sentence, follow it with the dummy character escape sequence \&.
3. For reasons stated below, it is best to follow all period marks with a
carriage return.
3. If you're using a macro package, employ its paragraphing macros to achieve
indentation of paragraphs and spacing between them.
The reason behind these unusual tips is that g/n/troff have a line breaking
algorithm that can be easily upset if you don't follow the rules given above.
4. Use the empty request, a '.' on a line by itself, freely to visually
separate material for ease of document maintenance.
Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph and,
furthermore, it does not have a concept of glue or stretch, all horizontal and
vertical space input will be output as is.
The reason for these tips is that g/n/troff attempts to detect the ends of
sentences, and can use that information to apply inter-sentence space. Using
them also minimizes the size of diffs where lines change due only to refilling
in the text editor. Macro packages typically employ inter-paragraph spacing
amounts other than one vee (which is the result of a blank input line), and
typically store that spacing amount, and that of paragraph indentation, in
user-configurable registers so that pages lay out consistently.
Therefore, you should be careful about not using more space between sentences
than you intend to have in your final document. For this reason, the common
practice is to insert a carriage return immediately after all punctuation
marks. If you want to have "even" text in your final processed output, you
need to maintain regular spacing in the input text. To mark both trailing
Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph. If you
desire consistent spacing between words and sentences in formatted output, you
must maintain consistent spacing in the input text. To mark both trailing
spaces and two or more spaces after a punctuation as an error, use: >
:let nroff_space_errors = 1
@@ -2764,11 +2765,11 @@ file: >
let b:preprocs_as_sections = 1
As well, the syntax file adds an extra paragraph marker for the extended
paragraph macro (.XP) in the ms package.
Further, the syntax file adds an extra paragraph marker for the XP
paragraphing macro in the ms package, a Berkeley and GNU extension.
Finally, there is a |groff.vim| syntax file that can be used for enabling
groff syntax highlighting either on a file basis or globally by default.
Finally, there is a |groff.vim| syntax file that can be used to enable groff
syntax highlighting either on a per-file basis or globally by default.
OCAML *ocaml.vim* *ft-ocaml-syntax*
@@ -4698,7 +4699,7 @@ the region, but not the contents of the region, are marked as concealable.
Whether or not they are actually concealed depends on the setting on the
'conceallevel' option. The ends of a region can only be concealed separately
in this way when they have their own highlighting via "matchgroup". The
|synconcealed()| function can be used to retrieve information about conealed
|synconcealed()| function can be used to retrieve information about concealed
items.
cchar *:syn-cchar*

View File

@@ -377,6 +377,7 @@ $quote eval.txt /*$quote*
'go-m' options.txt /*'go-m'*
'go-p' options.txt /*'go-p'*
'go-r' options.txt /*'go-r'*
'go-s' options.txt /*'go-s'*
'go-t' options.txt /*'go-t'*
'go-v' options.txt /*'go-v'*
'gp' options.txt /*'gp'*
@@ -6771,6 +6772,7 @@ compiler-mypy quickfix.txt /*compiler-mypy*
compiler-pandoc quickfix.txt /*compiler-pandoc*
compiler-perl quickfix.txt /*compiler-perl*
compiler-pylint quickfix.txt /*compiler-pylint*
compiler-pyright quickfix.txt /*compiler-pyright*
compiler-pytest quickfix.txt /*compiler-pytest*
compiler-pyunit quickfix.txt /*compiler-pyunit*
compiler-ruff quickfix.txt /*compiler-ruff*
@@ -6779,6 +6781,7 @@ compiler-spotbugs quickfix.txt /*compiler-spotbugs*
compiler-tex quickfix.txt /*compiler-tex*
compiler-tombi quickfix.txt /*compiler-tombi*
compiler-tsc quickfix.txt /*compiler-tsc*
compiler-ty quickfix.txt /*compiler-ty*
compiler-typst quickfix.txt /*compiler-typst*
compiler-vaxada ft_ada.txt /*compiler-vaxada*
compl-current insert.txt /*compl-current*
@@ -8248,6 +8251,7 @@ gui-vert-scroll gui.txt /*gui-vert-scroll*
gui-w32 gui_w32.txt /*gui-w32*
gui-w32-cmdargs gui_w32.txt /*gui-w32-cmdargs*
gui-w32-dialogs gui_w32.txt /*gui-w32-dialogs*
gui-w32-fullscreen gui_w32.txt /*gui-w32-fullscreen*
gui-w32-printing gui_w32.txt /*gui-w32-printing*
gui-w32-start gui_w32.txt /*gui-w32-start*
gui-w32-title-bar gui_w32.txt /*gui-w32-title-bar*
@@ -10972,6 +10976,7 @@ termcap-cursor-shape term.txt /*termcap-cursor-shape*
termcap-options term.txt /*termcap-options*
termcap-title term.txt /*termcap-title*
termda1-variable eval.txt /*termda1-variable*
termdebug terminal.txt /*termdebug*
termdebug-commands terminal.txt /*termdebug-commands*
termdebug-communication terminal.txt /*termdebug-communication*
termdebug-customizing terminal.txt /*termdebug-customizing*

View File

@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 9.1. Last change: 2025 Nov 28
*terminal.txt* For Vim version 9.1. Last change: 2026 Jan 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1263,7 +1263,8 @@ Alternatively, press "s" to swap the first and second dump. Do this several
times so that you can spot the difference in the context of the text.
==============================================================================
6. Debugging *terminal-debug* *terminal-debugger* *package-termdebug*
6. Debugging *terminal-debug* *terminal-debugger*
*package-termdebug* *termdebug*
The Terminal debugging plugin can be used to debug a program with gdb and view
the source code in a Vim window. Since this is completely contained inside

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 9.1. Last change: 2025 Dec 09
*todo.txt* For Vim version 9.1. Last change: 2025 Dec 26
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -205,11 +205,8 @@ Popup windows:
positioned? PopupNew? Could be used to set some options or move it out of
the way. (#5737)
However, it may also cause trouble, changing the popup of another plugin.
- Should popup_getoptions() also return the mask? #7774
- Add a way to use popup_menu() synchronously: instead of invoking the
callback, return the choice. (Ben Jackson, #6534)
- When using a popup for the info of a completion menu, and there is not
enough space, let the popup overlap with the menu. (#4544)
- Implement flip option.
- Make redrawing more efficient and avoid flicker:
- put popup menu also in popup_mask?
@@ -368,9 +365,6 @@ Can we not request XT key sequences, or reduce them drastically?
Issue #10512: Dynamic loading broken with Perl 5.36
Damien has a patch (2022 Dec 4)
Request #11965: Allow several "%=" items in 'statusline', makes it possible
to have text in the center.
Add some kind of ":whathappend" command and functions to make visible what the
last few typed keys and executed commands are. To be used when the user
wonders what went wrong. Could also be used for statistics #12046.
@@ -380,10 +374,6 @@ wonders what went wrong. Could also be used for statistics #12046.
- executed command lines
- with more verbosity: what scripts/functions/autocommands were executed
NFA regexp does not handle composing characters well: #10286
[ɔ̃] matches both ɔ and ɔ̃
\(ɔ\|ɔ̃\) matches ɔ and not ɔ̃
Is there a way to make 'autowriteall' make a clean exit when the xterm is
closed? (Dennis Nazic says files are preserved, okt 28). Perhaps handle TERM
like HUP?
@@ -417,8 +407,6 @@ In a timer callback, when using ":echo" and then input() the message is
overwritten. Could use ":echowin" and call redraw_cmd() in get_user_input().
#11299
Syntax include problem: #11277. Related to Patch 8.2.2761
To avoid flicker: add an option that when a screen clear is requested, instead
of clearing it draws everything and uses "clear to end of line" for every line.
Resetting 't_ut' already causes this?
@@ -517,8 +505,6 @@ there is a match do not scan the directory (possibly speeds up :find a lot).
globpath() does not use 'wildignorecase' at all? (related to #8350)
mksession uses :buffer instead of :edit in one place but not another. #10629
Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work
with 'termguicolors'. #1740
@@ -5781,7 +5767,6 @@ Argument list:
Registers:
8 Don't display empty registers with ":display". (Etienne)
8 Add put command that overwrites existing text. Should also work for
blocks. Useful to move text around in a table. Works like using "R ^R r"
for every line.

View File

@@ -1,4 +1,4 @@
*uganda.txt* For Vim version 9.1. Last change: 2025 Nov 13
*uganda.txt* For Vim version 9.1. Last change: 2026 Jan 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -21,7 +21,7 @@ ICCF Holland and Kuwasha~
|Bram| Moolenaar's charity, ICCF Holland, has long supported the education of
children in Uganda through the Kibaale Children's Centre. Following Bram's
passing in 2023, ICCF Holland transfered all activities to its sister charity
passing in 2023, ICCF Holland transferred all activities to its sister charity
Kuwasha in Canada and dissolved at the end of 2025.
Donations from Vim users are still welcome and will continue to go directly to

View File

@@ -1,4 +1,4 @@
*version9.txt* For Vim version 9.1. Last change: 2025 Dec 15
*version9.txt* For Vim version 9.1. Last change: 2026 Jan 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -41724,7 +41724,10 @@ Options: ~
(see also the below platform specific change).
- 'guioptions': Support darkmode on MS-Windows for menu and title bar using
|'go-d'| (see also the below platform specific change).
- 'guioptions': New value |'go-s'| to support fullscreen on MS-Windows GUI
(see also the below platform specific change).
- 'completepopup': Add more values to style popup windows.
- 'fsync' is now a |global-local| option.
Ex commands: ~
- allow to specify a priority when defining a new sign |:sign-define|
@@ -41768,6 +41771,7 @@ Platform specific ~
- MS-Windows: Vim no longer searches the current directory for
executables when running external commands; prefix a relative or absolute
path if you want the old behavior |$NoDefaultCurrentDirectoryInExePath|.
- MS-Windows: New value |'go-s'| to support fullscreen on MS-Windows GUI
- macOS: increase default scheduler priority to TASK_DEFAULT_APPLICATION.
@@ -41827,6 +41831,7 @@ Functions: ~
|id()| get unique identifier for a Dict, List, Object,
Channel or Blob variable
|list2tuple()| turn a List of items into a Tuple
|listener_add()| add a callback to listen to changes
|matchbufline()| all the matches of a pattern in a buffer
|matchstrlist()| all the matches of a pattern in a List of strings
|ngettext()| lookup single/plural message translation
@@ -41878,11 +41883,13 @@ Commands: ~
Ex-Commands: ~
|:clipreset| choose a new method for accessing the clipboard
|:iput| like |:put| but adjust indent
|:pbuffer| Edit buffer [N] from the buffer list in the preview
window
|:redrawtabpanel| Force updating the 'tabpanel'.
|:uniq| Deduplicate text in the current buffer.
|:wlrestore| reinitialize the wayland compositor connection
Options: ~
@@ -41901,6 +41908,7 @@ Options: ~
'lhistory' Size of the location list stack |quickfix-stack|
'maxsearchcount' Set the maximum number for search-stat |shm-S|
'messagesopt' configure |:messages| and |hit-enter| prompt
'osctimeoutlen' OSC terminator receive timeout
'pumborder' define popup border and decorations
'pummaxwidth' maximum width for the completion popup menu
'showtabpanel' When to show the |tabpanel|
@@ -41908,12 +41916,12 @@ Options: ~
'tabpanel' Optional vertical panel for displaying tabpages
|tabpanel|
'tabpanelopt' Optional settings for the |tabpanel|
't_xo' Terminal uses XON/XOFF handshaking (e.g. vt420)
't_CF' Support for alternate font highlighting terminal code
't_xo' Terminal uses XON/XOFF handshaking (e.g. vt420)
'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|
'wltimeoutlen' Specify the connection timeout for the |wayland|
compositor
Vim Variables: ~
@@ -41921,8 +41929,8 @@ Vim Variables: ~
|v:clipproviders| A dictionary containing clipboard providers
configuration |clipboard-providers|.
|v:stacktrace| The most recent caught exception.
|v:t_enumvalue| Value of |enumvalue|.
|v:t_enum| Value of |enum| type.
|v:t_enumvalue| Value of |enumvalue|.
|v:t_tuple| Value of |Tuple| type.
|v:termda1| The escape sequence returned for the primary device
attribute query (DA1).

View File

@@ -1,4 +1,4 @@
.TH VIM 1 "2024 Aug 03"
.TH VIM 1 "2025 Jun 27"
.SH 名前
vim \- Vi IMproved, プログラマのテキストエディタ
.SH 書式
@@ -138,17 +138,6 @@ rvim rview rgvim rgview
.br
Note: "+" と "\-c" は合わせて 10 個まで指定できます。
.TP
\-S {file}
一番目のファイルが読み込まれた後に {file} が実行されます。
これは \-c "source {file}" と同じ動作です。
{file} の先頭が '\-' の場合は使えません。
{file} が省略された場合は、"Session.vim" が使われます
(ただし \-S が最後の引数だった場合のみ)。
.TP
\-\-cmd {command}
"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。
これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。
.TP
\-A
アラビア語がサポートされていて、アラビア語キーマップがある場合は、アラビア語モードで起動します ('arabic' がオンになります)。
右横書きのファイルを編集できます。
@@ -196,27 +185,17 @@ Amiga の場合は、新しいウィンドウで再起動しなくなります
を起動して、編集が終わるまで待機したいような場合に使ってください。
Amiga では、":sh" と "!" コマンドは機能しなくなります。
.TP
\-\-nofork
フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。
.TP
\-F
ペルシア語がサポートされていて、ペルシア語キーマップがある場合は、ペルシア語モードで起動します ('fkmap' と 'rightleft' がオンになります)。
右横書きのファイルを編集できます。
サポートされていない場合はエラーメッセージを表示して終了します。
.br
注意: ペルシア語サポートはパッチ 8.1.0932 で削除されました。
.TP
\-g
GUI がサポートされている場合は、GUI で起動します。
サポートされていない場合はエラーメッセージを表示して終了します。
.TP
\-\-gui-dialog-file {name}
GUI の使用時、ダイアログを表示する代わりとして、ファイル {name} へダイアログのタイトルとメッセージを書き込みます。
ファイルは作成されるか追記されます。
テストにみ有用で、見ることができないダイアログによってテストが中断されるのを防ぎます。
GUI 以外ではこの引数は無視されます。
.TP
\-\-help, \-h, \-?
コマンドライン引数やオプションのヘルプを表示して終了します。
.TP
\-H
ヘブライ語がサポートされていて、ヘブライ語キーマップがある場合は、ヘブライ語モードで起動します ('hkmap' と 'rightleft' がオンになります)。
右横書きのファイルを編集できます。
@@ -226,13 +205,13 @@ GUI 以外ではこの引数は無視されます。
初期設定の "~/.viminfo" の代わりに、viminfo ファイルを読み書きする際に使うファイル名を指定します。
"NONE" を指定すると、.viminfo ファイルを使わないように設定できます。
.TP
\-L
\-r と同じです。
.TP
\-l
lisp モード。
オプションの 'lisp' と 'showmatch' がオンになります。
.TP
\-L
\-r と同じです。
.TP
\-m
ファイルの変更を不可能にします。
オプション 'write' がオフになります。
@@ -243,12 +222,6 @@ lisp モード。
オプションの 'modifiable' と 'write' がオフになり、ファイルの変更と保存ができなくなります。
Note: それらのオプションを設定すれば変更できるようになります。
.TP
\-N
非互換モード。'compatible' オプションがオフになります。
.vimrc ファイルの有無に関わらず、
.B Vim
の改良された機能が有効になります。Vi との互換性が少し失われます。
.TP
\-n
スワップファイルを使用しません。
クラッシュしてもリカバリできなくなります。
@@ -256,6 +229,12 @@ Note: それらのオプションを設定すれば変更できるようにな
":set uc=0" と設定しても同じです。
戻すには ":set uc=200" と設定してください。
.TP
\-N
非互換モード。'compatible' オプションがオフになります。
.vimrc ファイルの有無に関わらず、
.B Vim
の改良された機能が有効になります。Vi との互換性が少し失われます。
.TP
\-nb
NetBeans と接続し、エディタサーバーになります。
詳しくはヘルプを参照してください。
@@ -278,15 +257,6 @@ Win32 のみ。親になるアプリケーションのタイトルを指定し
{parent-title} が親アプリケーションのウィンドウのタイトルに使われていて、明確に区別できる必要があります。
Note: まだ簡単に実装されているだけです。全てのアプリケーションで動くわけではありません。メニューは機能しません。
.TP
\-R
読み込み専用モード。
オプション 'readonly' がオンになります。
バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防ぐことができます。
ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてください。
\-R オプションは \-n オプションの効果も含んでいます (上記参照)。
オプション 'readonly' は ":set noro" でオフにできます。
詳しくは ":help 'readonly'" を参照してください。
.TP
\-r
スワップファイルの一覧を表示します。リカバリに関する情報も表示されます。
.TP
@@ -296,6 +266,15 @@ Note: まだ簡単に実装されているだけです。全てのアプリケ
スワップファイルは、ファイル名に ".swp" を加えた名前のファイルです。
詳しくは ":help recovery" を参照してください。
.TP
\-R
読み込み専用モード。
オプション 'readonly' がオンになります。
バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防ぐことができます。
ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてください。
\-R オプションは \-n オプションの効果も含んでいます (上記参照)。
オプション 'readonly' は ":set noro" でオフにできます。
詳しくは ":help 'readonly'" を参照してください。
.TP
\-s
サイレントモード。"ex" という名前で起動するか、"\-e" オプションの後で
"\-s" オプションが指定された場合のみ。
@@ -306,6 +285,13 @@ Note: まだ簡単に実装されているだけです。全てのアプリケ
これは ":source! {scriptin}" と同じ動作です。
エディタが終了する前にファイルの終わりまで読み込んだ場合、それ以降はキーボードから入力を読み込みます。
.TP
\-S {file}
一番目のファイルが読み込まれた後に {file} が実行されます。
これは \-c "source {file}" と同じ動作です。
{file} の先頭が '\-' の場合は使えません。
{file} が省略された場合は、"Session.vim" が使われます
(ただし \-S が最後の引数だった場合のみ)。
.TP
\-T {terminal}
端末の名前を指定します。
端末が自動的に認識されない場合に使ってください。
@@ -313,15 +299,6 @@ Note: まだ簡単に実装されているだけです。全てのアプリケ
が組み込みでサポートしている名前か、
termcap または terminfo ファイルで定義されている名前を指定してください。
.TP
\-\-not-a-term
入力と出力(もしくはどちらか一方)が端末に接続されていないことを、ユーザーが把握しているということを
.B Vim
に伝えます。
これにより警告が表示され 2 秒間の遅延が発生するのを避けられます。
.TP
\-\-ttyfail
標準入力か標準出力が端末 (tty) でない場合、すぐに終了します。
.TP
\-u {vimrc}
{vimrc} ファイルを使って初期化します。
他の初期化処理はスキップされます。
@@ -335,6 +312,11 @@ termcap または terminfo ファイルで定義されている名前を指定
すべての GUI の初期化をスキップするには "NONE" を指定してください。
詳しくは ":help gui\-init" を参照してください。
.TP
\-v
Vi モードで起動します。
実行ファイルの名前が "vi" の場合と同じです。
実行ファイルの名前が "ex" の場合だけ効果があります。
.TP
\-V[N]
冗長モード。
スクリプトファイルを実行したり viminfo ファイルを読み書きするたびにメッセージを表示します。
@@ -346,19 +328,6 @@ N に指定した数値が 'verbose' に設定されます。
その結果、メッセージは表示されずにファイル {filename} に書き出されます。
{filename} は数字で始まってはいけません。
.TP
\-\-log {filename}
もし
.B Vim
がチャネル機能付きでコンパイルされている場合、ログの出力を開始し、ファイル {filename} に書き込みます。
これは、起動時の非常に早い段階で
.I ch_logfile({filename}, 'ao')
を呼び出すのと同様な動作です。
.TP
\-v
Vi モードで起動します。
実行ファイルの名前が "vi" の場合と同じです。
実行ファイルの名前が "ex" の場合だけ効果があります。
.TP
\-w{number}
オプション 'window' を {number} に設定します。
.TP
@@ -379,6 +348,9 @@ Vi モードで起動します。
X サーバーと通信しません。端末での起動時間を短くできます。
しかし、ウィンドウタイトルの変更やクリップボードは使えなくなります。
.TP
\-Y
waylandコンポジタに接続しません。
.TP
\-y
簡易モードで起動します。
実行ファイルの名前が "evim" や "eview" の場合と同じです。
@@ -398,16 +370,48 @@ X サーバーと通信しません。端末での起動時間を短くできま
一切の個人設定 (vimrc、プラグイン、その他) を使用しません。
ある問題がクリーンな Vim セットアップで再現するかを確認するのに有用です。
.TP
\-\-cmd {command}
"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。
これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。
.TP
\-\-echo\-wid
GTK GUI のみ: Window ID を標準出力に出力します。
.TP
\-\-gui-\dialog\-file {name}
GUI の使用時、ダイアログを表示する代わりとして、ファイル {name} へダイアログのタイトルとメッセージを書き込みます。
ファイルは作成されるか追記されます。
テストにみ有用で、見ることができないダイアログによってテストが中断されるのを防ぎます。
GUI 以外ではこの引数は無視されます。
.TP
\-\-help, \-h, \-?
コマンドライン引数やオプションのヘルプを表示して終了します。
.TP
\-\-literal
引数のファイル名をリテラル文字列として扱います。ワイルドカードを展開しません。
Unix のように、シェルがワイルドカードを展開する場合は機能しません。
.TP
\-\-log {filename}
もし
.B Vim
がチャネル機能付きでコンパイルされている場合、ログの出力を開始し、ファイル {filename} に書き込みます。
これは、起動時の非常に早い段階で
.I ch_logfile({filename}, 'ao')
を呼び出すのと同様な動作です。
.TP
\-\-nofork
フォアグラウンド。GUI バージョンで、
.B Vim
はプロセスをフォークしなくなり、開始したシェルからデタッチされます。
.TP
\-\-noplugin
プラグインをロードしません。\-u NONE はこの動作を含んでいます。
.TP
\-\-not\-a\-term
入力と出力(もしくはどちらか一方)が端末に接続されていないことを、ユーザーが把握しているということを
.B Vim
に伝えます。
これにより警告が表示され 2 秒間の遅延が発生するのを避けられます。
.TP
\-\-remote
Vim サーバーと通信し、引数に指定されたファイルを Vim サーバーで開きます。
サーバーが存在しない場合は、エラーメッセージを表示され、起動中の Vim でファイルが開かれます。
@@ -433,18 +437,26 @@ Vim サーバーの一覧を表示します。
\-\-servername {name}
サーバーの名前を {name} に設定します。
\-\-remote 引数を指定しなかった場合は、起動中の Vim の名前として使われるので、後からその名前を使ってサーバー通信できます。
バックエンドとしてソケットサーバーを使っている場合、"/", "./" または "../" で始まる名前はソケットへのパスとして扱われます。
.TP
\-\-clientserver {backend}
クライアントサーバー機能のバックエンドとして {backend} "socket" か "x11" のどちらかを利用します。
socketserver と X11 の両方の機能を使ってコンパイルした時にだけ利用可能です。
.TP
\-\-socketid {id}
GTK GUI のみ: GtkPlug メカニズムを使って gvim を別のウィンドウの中で実行します。
GTK GUI のみ: GtkPlug メカニズムを使って gVim を別のウィンドウの中で実行します。
.TP
\-\-startuptime {file}
起動処理の間、経過時間のメッセージをファイル {fname} に書き出します。
.TP
\-\-ttyfail
標準入力か標準出力が端末 (tty) でない場合、すぐに終了します。
.TP
\-\-version
バージョン情報を表示して終了します。
.TP
\-\-windowid {id}
Win32 GUI の Vim のみ。ウィンドウ {id} を親ウィンドウにしようと試みます。
Win32 GUI の Vim のみ。ウィンドウ {id} を gVim の親ウィンドウにしようと試みます。
成功するとそのウィンドウの内側で起動します。
.SH オンラインヘルプ
ヘルプを開くには、
@@ -493,14 +505,18 @@ Win32 GUI の Vim のみ。ウィンドウ {id} を親ウィンドウにしよ
システムの gvim 初期化ファイル。
.TP
~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
ユーザーの gvim 初期化ファイル。(最初のものが使われます。)
ユーザーの
.B gVim
初期化ファイル。(最初のものが使われます。)
.TP
/usr/local/share/vim/vim??/optwin.vim
":options" コマンドで使われるファイル。
オプションを表示したり設定したりできます。
.TP
/usr/local/share/vim/vim??/menu.vim
システムのメニュー初期化ファイル。gvim で使います。
システムのメニュー初期化ファイル。
.B gVim
で使います。
.TP
/usr/local/share/vim/vim??/bugreport.vim
バグレポートを生成するスクリプト。":help bugs" 参照。

View File

@@ -1,4 +1,4 @@
*vim9.txt* For Vim version 9.1. Last change: 2025 Dec 03
*vim9.txt* For Vim version 9.1. Last change: 2026 Jan 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1084,8 +1084,11 @@ empty list and dict is falsy:
special true or v:true
job when not NULL
channel when not NULL
class when not NULL
object when not NULL (TODO: when isTrue() returns true)
class not applicable
object when not NULL
enum not applicable
enum value always
typealias not applicable
The boolean operators "||" and "&&" expect the values to be boolean, zero or
one: >

View File

@@ -1,4 +1,4 @@
.TH VIMDIFF 1 "2001 March 30"
.TH VIMDIFF 1 "2021 June 13"
.SH 名前
vimdiff \- 2 個から 8 個のファイルを Vim で開いて、その差分を表示する
.SH 書式

View File

@@ -1,44 +1,99 @@
.TH VIMTUTOR 1 "2001 April 2"
.TH VIMTUTOR 1 "2024 December 03"
.SH 名前
vimtutor \- Vim チュートリアル
.SH 書式
.br
.B vimtutor [\-g] [language]
.B vimtutor [\-l | \-\-language ISO639] [\-c | \-\-chapter NUMBER] [\-g | \-\-gui] [ISO639]
.br
.B vimtutor [\-h | \-\-help]
.br
.B vimtutor [\-\-list]
.SH 説明
.B Vim
のチュートリアルを起動します。
演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してしまう心配はありません。
.PP
.B Vim
を初めて学ぶ人向けのチュートリアルです。
省略可能な [ISO639] 引数は "ja" や "es" のような 2 または 3 文字の言語名です。
.PP
引数に \-g を指定すると GUI 版の vim が利用可能であれば vim ではなく gvim
を使って vimtutor が開始します。gvim が見つからないときは Vim が使用されます
.PP
[language] 引数は "ja" や "es" などの二文字の言語名です。
[language] 引数を省略した場合はロケールの言語が使われます。
翻訳された演習ファイルがある場合は、そのファイルが使われます。
ない場合は英語のファイルが使われます。
.B vimtutor
は演習ファイルの一時的なコピーを開くので、オリジナルの演習ファイルを上書きしてしまう心配はありません
.PP
.B Vim
Vi 互換モードで起動されます。
常に
.B Vi
非互換モードで起動されます。
.SH オプション
.TP
.BR \-l ", " \-\-language\ \fIISO639\fR
2 または 3 文字の言語コードを設定します。
例: 'ja', 'es', 'bar'
ロケールの言語が使用可能であればそれが使われ、なければ英語がデフォルトとして使われます。
.TP
.BR \-c ", " \-\-chapter\ \fINUMBER\fR
章番号を設定します。
デフォルトは第 1 章です。
.TP
.BR \-g ", " \-\-gui
使用可能であれば
.B vimtutor
を GUI 版の vim を使って開始します。そうでなければコンソール版の vim を使用します。
.TP
.BR \-h ", " \-\-help
使い方を表示します。
.TP
.BR \-\-list
章と言語の一覧を表示します。
.SH
.B vimtutor
をドイツ語の第 1 章で開始するには:
.PP
.nf
.RS
vimtutor de
.RE
.fi
.PP
英語の第 2 章の場合は:
.PP
.nf
.RS
vimtutor -c2
.RE
.fi
.PP
GUI でバイエルン語の第 1 章を開始する際の長い形式のコマンドは:
.PP
.nf
.RS
vimtutor --language bar --chapter 1 --gui
.RE
.fi
.SH ファイル
.TP 15
/usr/local/lib/vim/tutor/tutor[.language]
/usr/local/share/vim/vim??/tutor/tutor1[.language]
.B Vimtutor
の演習ファイル。
の第 1 章の演習ファイル。
.TP 15
/usr/local/lib/vim/tutor/tutor.vim
演習ファイルをコピーするための Vim スクリプト。
.SH 著者
/usr/local/share/vim/vim??/tutor/tutor2[.language]
.B Vimtutor
は、Colorado State University の Charles Smith のアイデアを基に、
の第 2 章の演習ファイル。
.TP 15
/usr/local/share/vim/vim??/tutor/tutor.vim
.B Vimtutor
の演習ファイルをコピーするための
.B Vim
スクリプト。
.SH 著者
.B The Vi Tutorial
は、元々 Colorado State University の Charles Smith のアイデアを基に、
Colorado School of Mines の Michael C. Pierce と Robert K. Ware
の両名によって Vi 向けに作成されたものを基にしています
E-mail: bware@mines.colorado.edu (現在は無効).
.br
の両名によって Vi 向けに作成されました。
.B E-mail: bware@mines.colorado.edu (現在は無効).
.PP
.B Vim
に合わせて Bram Moolenaar が変更を加えました。
.PP
翻訳者の名前は演習ファイルを参照してください。
.SH 関連項目
vim(1)

View File

@@ -1,4 +1,4 @@
.TH XXD 1 "August 1996" "Manual page for xxd"
.TH XXD 1 "May 2024" "Manual page for xxd"
.\"
.\" 21st May 1996
.\" Man page author:
@@ -58,7 +58,8 @@
1 オクテットが "1" と "0" の 8 文字で出力されます。
各行の行頭には 16 進数の行番号が表示されます。
行末には ASCII (または EBCDIC) で表した場合の文字が表示されます。
このモードでは \-p\-i は機能しません。
このモードでは \-p は機能しません。
\-i と組み合わせることができます。
.TP
.IR \-e
リトルエンディアンの 16 進ダンプに切り替える。
@@ -106,6 +107,7 @@
C インクルードファイル形式で出力する。
入力ファイルの名前が付けられた静的配列の定義が出力されます。
標準入力の場合は定義の中身だけ出力されます。
\-b と組み合わせることができます。
.TP
.IR "\-l len " | " \-len len"
.RI < len >
@@ -228,22 +230,24 @@ xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダ
.br
\fI% xxd \-s \-0x30 file\fR
.PP
注意: 以下の例の結果は 2024 年 5 月時点の xxd.1 マニュアルページに基づいています。
.PP
.br
120 バイトを、平文 16 進ダンプ形式で一行に 20 オクテットずつ出力する。
.br
\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
.br
2e54482058584420312022417567757374203139
2e544820585844203120224d6179203230323422
.br
39362220224d616e75616c207061676520666f72
20224d616e75616c207061676520666f72207878
.br
20787864220a2e5c220a2e5c222032317374204d
64220a2e5c220a2e5c222032317374204d617920
.br
617920313939360a2e5c22204d616e2070616765
313939360a2e5c22204d616e2070616765206175
.br
20617574686f723a0a2e5c2220202020546f6e79
74686f723a0a2e5c2220202020546f6e79204e75
.br
204e7567656e74203c746f6e79407363746e7567
67656e74203c746f6e79407363746e7567656e2e
.br
.br
@@ -251,32 +255,32 @@ xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダ
.br
\fI% xxd \-l 120 \-c 12 xxd.1\fR
.br
0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A
00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M
.br
000000c: 7567 7573 7420 3139 3936 2220 ugust 1996"
0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma
.br
0000018: 224d 616e 7561 6c20 7061 6765 "Manual page
00000018: 6e75 616c 2070 6167 6520 666f nual page fo
.br
0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\
00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\\"..
.br
0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M
00000030: 5c22 2032 3173 7420 4d61 7920 \\" 21st May
.br
000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\"
0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\\" Man
.br
0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut
00000048: 2070 6167 6520 6175 7468 6f72 page author
.br
0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\"
00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\\" Ton
.br
0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent
00000060: 7920 4e75 6765 6e74 203c 746f y Nugent <to
.br
000006c: 3c74 6f6e 7940 7363 746e 7567 <tony@sctnug
0000006c: 6e79 4073 6374 6e75 6765 6e2e ny@sctnugen.
.PP
.br
xxd.1 の日付部分だけを出力する。
.br
\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
0000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996
00000033: 3231 7374 204d 6179 2031 3939 36 21st May 1996
.PP
.br
.B input_file
@@ -290,11 +294,11 @@ xxd.1 の日付部分だけを出力する。
.br
xxd.1 の日付を修正する。
.br
\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR
\fI% echo "0000034: 3574 68" | xxd \-r \- xxd.1\fR
.br
\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fR
.br
0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996
00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996
.PP
.br
中身がすべて 0x00 の 65537 バイトのファイルを作成する。
@@ -307,11 +311,11 @@ xxd.1 の日付を修正する。
.br
\fI% xxd \-a \-c 12 file\fR
.br
0000000: 0000 0000 0000 0000 0000 0000 ............
00000000: 0000 0000 0000 0000 0000 0000 ............
.br
*
.br
000fffc: 0000 0000 40 ....A
0000fffc: 0000 0000 41 ....A
.PP
一文字の 'A' からなる 1 バイトのファイルを作成する。
'\-r \-s' の後に指定した数値がファイル中の行番号に加算され、結果、余計なバイトが飛ばされる。
@@ -375,7 +379,7 @@ uuencode(1), uudecode(1), patch(1)
自己責任で使ってください。ファイルをコピーし、それを調べ、ウィザードたれ。
.br
.SH バージョン
このマニュアルは xxd バージョン 1.7 について説明しています。
このマニュアルは xxd バージョン 1.7 (2024-05) について説明しています。
.SH 著者
.br
(c) 1990-1997 by Juergen Weigert

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 Nov 11
" Last Change: 2026 Jan 20
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" If the filetype can be detected from extension or file name(the final path component),
@@ -435,7 +435,7 @@ au BufNewFile,BufRead *.app call dist#ft#FTapp()
au BufNewFile,BufRead *esmtprc setf esmtprc
" Fennel
au BufNewFile,BufRead *.fnl,{,.}fennelrc setf fennel
au BufNewFile,BufRead {,.}fennelrc setf fennel
" Flatpak config
au BufNewFile,BufRead */flatpak/repo/config setf dosini
@@ -1127,6 +1127,15 @@ au BufNewFile,BufRead */etc/systemd/system/*.d/.#* setf systemd
au BufNewFile,BufRead */etc/systemd/system/.#* setf systemd
au BufNewFile,BufRead */.config/systemd/user/*.d/.#* setf systemd
au BufNewFile,BufRead */.config/systemd/user/.#* setf systemd
" Podman Quadlet files
au BufNewFile,BufRead */containers/systemd/*.{artifact,build,container,image,kube,network,pod,volume} setf systemd
" Podman Quadlet rootless files not already captured by previous line
au BufNewFile,BufRead */etc/containers/systemd/users/*/*.{artifact,build,container,image,kube,network,pod,volume} setf systemd
au BufNewFile,BufRead */etc/containers/systemd/users/*.{artifact,build,container,image,kube,network,pod,volume} setf systemd
" Podman Quadlet overrides
au BufNewFile,BufRead */containers/systemd/*.d/*.conf setf systemd
au BufNewFile,BufRead */etc/containers/systemd/users/*/*.d/*.conf setf systemd
au BufNewFile,BufRead */etc/containers/systemd/users/*.d/*.conf setf systemd
" Sudoers
au BufNewFile,BufRead */etc/sudoers,sudoers.tmp setf sudoers
@@ -1308,7 +1317,7 @@ au BufNewFile,BufRead *.dtml,*.pt,*.cpt call dist#ft#FThtml()
" zsql (zope sql method)
au BufNewFile,BufRead *.zsql call dist#ft#SQL()
" Detect by extention
" Detect by extension
au BufNewFile,BufRead * call dist#ft#DetectFromExt()
augroup END
@@ -1539,6 +1548,9 @@ au BufNewFile,BufRead .tcshrc* call dist#ft#SetFileTypeShell("tcsh")
" csh scripts ending in a star
au BufNewFile,BufRead .login*,.cshrc* call dist#ft#CSH()
" Tiltfile
au BufNewFile,BufRead Tiltfile.* call s:StarSetf('tiltfile')
" tmux configuration with arbitrary extension
au BufNewFile,BufRead {.,}tmux*.conf* call s:StarSetf('tmux')

View File

@@ -5,12 +5,13 @@
" 2023 Aug 28 by Vim Project (undo_ftplugin)
" 2024 Apr 09 by Vim Project (add Matchit support)
" 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
" 2026 Jan 19 by Vim Project (add # as comment symbol)
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
setl include=^\\s*%\\s*include
setl comments=:;,s1:/*,mb:*,ex:*/,://
setl comments=:;,s1:/*,mb:*,ex:*/,://,:#
setl commentstring=;\ %s
let b:undo_ftplugin = "setl commentstring< comments< include<"

View File

@@ -0,0 +1,3 @@
" Placeholder for maximum compatibility. While bicepparam files are treated as distinct filetypes,
" they are should share the same ftplugin settings as bicep files.
runtime! ftplugin/bicep.vim

View File

@@ -0,0 +1,14 @@
" Vim filetype plugin
" Language: Bicep
" Maintainer: Scott McKendry <me@scottmckendry.tech>
" Last Change: 2025 Dec 27
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setlocal comments=s1:/*,mb:*,ex:*/,://
setlocal commentstring=//\ %s
let b:undo_ftplugin = "setlocal comments< commentstring<"

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: bpftrace
" Maintainer: Stanislaw Gruszka <stf_xl@wp.pl>
" Last Change: 2025 Dec 05
" Last Change: 2025 Dec 23
if exists('b:did_ftplugin')
finish
@@ -11,4 +11,6 @@ let b:did_ftplugin = 1
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
setlocal commentstring=//\ %s
let b:undo_ftplugin = "setlocal comments< commentstring<"
setlocal formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = "setlocal comments< commentstring< formatoptions<"

View File

@@ -2,12 +2,17 @@
" Language: Haskell Cabal Build file
" Maintainer: Riley Bruins <ribru17@gmail.com>
" Last Change: 2024 Jul 06
" 2026 Jan 13 by Vim project: set compiler #19152
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
compiler cabal
let b:undo_ftplugin = 'compiler make'
setl comments=:-- commentstring=--\ %s
let b:undo_ftplugin = 'setl com< cms<'
let b:undo_ftplugin .= '| setl com< cms<'

View File

@@ -4,7 +4,7 @@ vim9script
# Language: ConTeXt typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2024 Oct 04
# Latest Revision: 2026 Jan 10
if exists("b:did_ftplugin")
finish
@@ -110,7 +110,7 @@ endif
b:undo_ftplugin ..= "| sil! delc -buffer ConTeXt | sil! delc -buffer ConTeXtLog | sil! delc -buffer ConTeXtJobStatus | sil! delc -buffer ConTeXtStopJobs"
# Commands for asynchronous typesetting
command! -buffer -nargs=? -complete=buffer ConTeXt context.Typeset(<q-args>)
command! -buffer -nargs=0 ConTeXtLog context.Log('%')
command! -buffer -nargs=0 ConTeXtLog context.Log(bufname('%'))
command! -nargs=0 ConTeXtJobStatus context.JobStatus()
command! -nargs=0 ConTeXtStopJobs context.StopJobs()

View File

@@ -3,8 +3,8 @@
" Maintainer: Doug Kearns <dougkearns@gmail.com>
" Previous Maintainer: Dan Sharp
" Contributor: Johannes Zellner <johannes@zellner.org>
" Last Change: 2024 Jan 14
" 2024 May 23 by Riley Bruins ('commentstring')
" Riley Bruins <ribru17@gmail.com>
" Last Change: 2026 Jan 16
if exists("b:did_ftplugin")
finish
@@ -21,29 +21,52 @@ setlocal formatoptions+=crql
let b:undo_ftplugin = "setlocal com< cms< fo<"
" Csh: thanks to Johannes Zellner
" - Both foreach and end must appear alone on separate lines.
" - The words else and endif must appear at the beginning of input lines;
" the if must appear alone on its input line or after an else.
" - Each case label and the default label must appear at the start of a
" line.
" - while and end must appear alone on their input lines.
if exists("loaded_matchit") && !exists("b:match_words")
let s:line_start = '\%(^\s*\)\@<='
let b:match_words =
\ s:line_start .. 'if\s*(.*)\s*then\>:' ..
\ s:line_start .. 'else\s\+if\s*(.*)\s*then\>:' .. s:line_start .. 'else\>:' ..
\ s:line_start .. 'endif\>,' ..
\ s:line_start .. '\%(\<foreach\s\+\h\w*\|while\)\s*(:' ..
\ '\<break\>:\<continue\>:' ..
\ s:line_start .. 'end\>,' ..
\ s:line_start .. 'switch\s*(:' ..
\ s:line_start .. 'case\s\+:' .. s:line_start .. 'default\>:\<breaksw\>:' ..
\ s:line_start .. 'endsw\>'
unlet s:line_start
let b:undo_ftplugin ..= " | unlet! b:match_words"
let b:match_ignorecase = 0
let b:match_words = "CshMatchWords()"
let b:match_skip = "CshMatchSkip()"
let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_skip b:match_words"
endif
" skip single line 'if' commands
function CshMatchSkip()
return getline(".") =~# '^\s*if\>' && !s:CshIsIfThenCommand()
endfunction
function CshMatchWords()
let line_start = '\%(^\s*\)\@<='
let match_words =
\ line_start .. '\%(foreach\s\+\h\w*\s*(\|while\>\):' ..
\ '\<break\>:\<continue\>:' ..
\ line_start .. 'end\>,' ..
\ line_start .. 'switch\s*(:' ..
\ line_start .. 'case\s\+:' .. line_start .. 'default\>:\<breaksw\>:' ..
\ line_start .. 'endsw\>'
if expand("<cword>") =~# '\<if\>' && !s:CshIsIfThenCommand()
return match_words
else
return match_words .. "," ..
\ line_start .. 'if\>:' ..
\ line_start .. 'else\s\+if\>:' .. line_start .. 'else\>:' ..
\ line_start .. 'endif\>'
endif
endfunction
function s:CshIsIfThenCommand()
let lnum = line(".")
let line = getline(lnum)
" join continued lines
while lnum < line("$") && line =~ '^\%([^\\]\|\\\\\)*\\$'
let lnum += 1
let line = substitute(line, '\\$', '', '') .. getline(lnum)
endwhile
" TODO: confirm with syntax checks when the highlighting is more accurate
return line =~# '^\s*if\>.*\<then\s*\%(#.*\)\=$'
endfunction
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter = "csh Scripts (*.csh)\t*.csh\n"
if has("win32")

View File

@@ -4,6 +4,7 @@
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2018-08-27
" 2025 Jul 09 by Vim Project revert setting iskeyword #8191
" 2026 Jan 18 by Vim Project add include-search and define support #19143
if exists("b:did_ftplugin")
finish
@@ -13,11 +14,19 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = "setl com< cms< fo<"
let b:undo_ftplugin = "setl com< cms< fo< su< sua< inex< inc< def<"
setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s
setlocal formatoptions-=t formatoptions+=croql
setlocal omnifunc=haskellcomplete#Complete
setlocal suffixes+=.hi
setlocal suffixesadd=.hs,.lhs,.hsc
setlocal includeexpr=findfile(tr(v:fname,'.','/'),'.;')
setlocal include=^import\\>\\%(\\s\\+safe\\>\\)\\?\\%(\\s\\+qualified\\>\\)\\?
setlocal define=^\\%(data\\>\\\|class\\>\\%(.*=>\\)\\?\\\|\\%(new\\)\\?type\\>\\\|\\ze\\k\\+\\s*\\%(::\\\|=\\)\\)
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -0,0 +1,13 @@
" Vim filetype plugin
" Language: kitty
" Maintainer: Arvin Verain <arvinverain@proton.me>
" Last Change: 2026 Jan 22
if exists('b:did_ftplugin')
finish
endif
let b:did_ftplugin = 1
setl comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=rol
let b:undo_ftplugin = 'setl com< cms< fo<'

View File

@@ -72,6 +72,7 @@ deprecated
discontiguous
div
domain_error
consistency_error
duplicated_directives
dynamic
dynamic_declarations
@@ -144,6 +145,7 @@ min
missing_directives
mod
mode
mode_non_terminal
modules
multifile
nl

View File

@@ -4,8 +4,7 @@ vim9script
# Language: METAFONT
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2022 Aug 12
# 2024 Jan 14 by Vim Project (browsefilter)
# Latest Revision: 2026 Jan 10
if exists("b:did_ftplugin")
finish

View File

@@ -4,8 +4,7 @@ vim9script
# Language: MetaPost
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2022 Aug 12
# 2024 Jan 14 by Vim Project (browsefilter)
# Latest Revision: 2026 Jan 10
if exists("b:did_ftplugin")
finish

View File

@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: Perl
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
" License: Vim License (see :help license)

View File

@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: Perl POD format
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Author: Doug Kearns <dougkearns@gmail.com>
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues

View File

@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: Raku
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Homepage: https://github.com/Raku/vim-raku
" Bugs/requests: https://github.com/Raku/vim-raku/issues
" Last Change: 2021 Apr 16

View File

@@ -5,6 +5,7 @@
" Website: https://github.com/marshallward/vim-restructuredtext
" Latest Revision: 2020-03-31
" 2025 Oct 13 by Vim project: update b:undo_ftplugin #18566
" 2026 Jan 11 by Vim project: set suffixesadd #19149
if exists("b:did_ftplugin")
finish
@@ -19,10 +20,11 @@ if !exists('g:rst_fold_enabled')
let g:rst_fold_enabled = 0
endif
let b:undo_ftplugin = "setlocal comments< commentstring< expandtab< formatoptions<"
let b:undo_ftplugin = "setlocal comments< commentstring< expandtab< formatoptions< suffixesadd<"
setlocal comments=fb:.. commentstring=..\ %s expandtab
setlocal formatoptions+=tcroql
setlocal suffixesadd=.rst
" reStructuredText standard recommends that tabs be expanded to 8 spaces
" The choice of 3-space indentation is to provide slightly better support for

View File

@@ -3,6 +3,7 @@
" Maintainer: This runtime file is looking for a new maintainer.
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2025 Feb 20
" 2026 Jan 09 by Vim Project: preserve line endings for existing files #19144
if exists("b:did_ftplugin")
finish
@@ -16,4 +17,7 @@ setlocal formatoptions-=t formatoptions+=croql
" https://datatracker.ietf.org/doc/html/rfc5228#section-2.2 says
" "newlines (CRLF, never just CR or LF)"
setlocal fileformat=dos
" Use CRLF for new files only; preserve existing line endings
if expand('%:p') !=# '' && !filereadable(expand('%:p'))
setlocal fileformat=dos
endif

View File

@@ -3,6 +3,7 @@
" Filenames: *.sml *.sig
" Maintainer: tocariimaa <tocariimaa@firemail.cc>
" Last Change: 2025 Nov 04
" 2026 Jan 19 by Vim Project: add 'include' setting
if exists('b:did_ftplugin')
finish
@@ -12,11 +13,12 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo
set cpo&vim
let b:undo_ftplugin = 'setl com< cms< fo<'
let b:undo_ftplugin = 'setl com< cms< fo< inc<'
setlocal formatoptions+=croql formatoptions-=t
setlocal commentstring=(*\ %s\ *)
setlocal comments=sr:(*,mb:*,ex:*)
setlocal include=^\\s*use\\>
if exists('loaded_matchit')
let b:match_ignorecase = 0

View File

@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: Verbose TAP Output
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
" License: Vim License (see :help license)

View File

@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: TT2 embedded with HTML
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
" License: Vim License (see :help license)

View File

@@ -1,12 +1,11 @@
" Vim filetype plugin file
" Language: xml
" Maintainer: Christian Brabandt <cb@256bit.org>
" Last Changed: Dec 07th, 2018
" 2024 Jan 14 by Vim Project (browsefilter)
" 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
" Previous Maintainer: Dan Sharp
" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
" Last Changed: 2024 May 24
" Repository: https://github.com/chrisbra/vim-xml-ftplugin
" Previously
" Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net>
" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
@@ -54,12 +53,8 @@ command! -nargs=? XMLent call xmlcomplete#CreateEntConnection(<f-args>)
if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
let b:browsefilter="XML Files (*.xml)\t*.xml\n" .
\ "DTD Files (*.dtd)\t*.dtd\n" .
\ "XSD Files (*.xsd)\t*.xsd\n"
if has("win32")
let b:browsefilter .= "All Files (*.*)\t*\n"
else
let b:browsefilter .= "All Files (*)\t*\n"
endif
\ "XSD Files (*.xsd)\t*.xsd\n" .
\ "All Files (*.*)\t*.*\n"
endif
" Undo the stuff we changed.

View File

@@ -1,6 +1,6 @@
" Vim filetype plugin file
" Language: XS (Perl extension interface language)
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
" License: Vim License (see :help license)

View File

@@ -2,11 +2,9 @@
" Language: Zsh shell script
" Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2024 Sep 19
" Latest Revision: 2025 Jul 23
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-zsh
" Last Change:
" 2025 Jul 23 by Vim Project (use :hor term #17822)
if exists("b:did_ftplugin")
finish
@@ -20,9 +18,14 @@ setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
let b:undo_ftplugin = "setl com< cms< fo< "
if get(g:, 'zsh_fold_enable', 0)
setlocal foldmethod=syntax
let b:undo_ftplugin .= "fdm< "
endif
if executable('zsh') && &shell !~# '/\%(nologin\|false\)$'
if exists(':terminal') == 2
command! -buffer -nargs=1 ZshKeywordPrg silent exe ':hor term zsh -c "autoload -Uz run-help; run-help <args>"'
command! -buffer -nargs=1 ZshKeywordPrg silent exe ':hor :term zsh -c "autoload -Uz run-help; run-help <args>"'
else
command! -buffer -nargs=1 ZshKeywordPrg echo system('MANPAGER= zsh -c "autoload -Uz run-help; run-help <args> 2>/dev/null"')
endif

View File

@@ -0,0 +1,19 @@
" Vim indent file
" Language: bpftrace
" Author: Stanislaw Gruszka <stf_xl@wp.pl>
" Last Change: 2025 Dec 27
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal noautoindent nosmartindent
setlocal cindent
setlocal cinoptions=+0,(0,[0,Ws,J1,j1,m1,>s
setlocal cinkeys=0{,0},!^F,o,O,#0
setlocal cinwords=
let b:undo_indent = "setlocal autoindent< smartindent< cindent< cinoptions< cinkeys< cinwords<"

View File

@@ -3,7 +3,7 @@ vim9script
# Language: ConTeXt typesetting engine
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision: 2023 Dec 26
# Latest Revision: 2026 Jan 10
if exists("b:did_indent")
finish
@@ -39,10 +39,10 @@ def ConTeXtIndent(): number
return g:MetaPostIndent()
endif
const prevlnum = PrevNotComment(v:lnum - 1)
const prevind = indent(prevlnum)
const prevline = getline(prevlnum)
const currline = getline(v:lnum)
var prevlnum = PrevNotComment(v:lnum - 1)
var prevind = indent(prevlnum)
var prevline = getline(prevlnum)
var currline = getline(v:lnum)
# If the current line starts with ], match indentation.
if currline =~# '^\s*\]'

View File

@@ -1,6 +1,10 @@
" METAFONT indent file
" Language: METAFONT
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Latest Revision: 2022 Aug 12
vim9script
# METAFONT indent file
# Language: METAFONT
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Latest Revision: 2026 Jan 10
runtime! indent/mp.vim
# vim: sw=2 fdm=marker

View File

@@ -4,7 +4,7 @@ vim9script
# Language: MetaPost
# Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Eugene Minkovskii <emin@mccme.ru>
# Latest Revision: 2022 Aug 12
# Latest Revision: 2026 Jan 10
if exists("b:did_indent")
finish

View File

@@ -1,6 +1,6 @@
" Vim indent file
" Language: Perl
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
" License: Vim License (see :help license)

View File

@@ -1,6 +1,6 @@
" Vim indent file
" Language: Perl 6
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Maintainer: vim-perl <vim-perl@googlegroups.com> (need to be subscribed to post)
" Homepage: https://github.com/vim-perl/vim-perl
" Bugs/requests: https://github.com/vim-perl/vim-perl/issues
" Last Change: 2020 Apr 15

View File

@@ -2,7 +2,9 @@
" Language: Rust
" Author: Chris Morgan <me@chrismorgan.info>
" Last Change: 2023-09-11
" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values (#15138)
" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values #15138
" 2025 Dec 29 by Vim Project: clean up
" 2025 Dec 31 by Vim Project: correcly indent after nested array literal #19042
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
" Note: upstream seems umaintained: https://github.com/rust-lang/rust.vim/issues/502
@@ -86,16 +88,6 @@ function! s:is_string_comment(lnum, col)
endif
endfunction
if exists('*shiftwidth')
function! s:shiftwidth()
return shiftwidth()
endfunc
else
function! s:shiftwidth()
return &shiftwidth
endfunc
endif
function GetRustIndent(lnum)
" Starting assumption: cindent (called at the end) will do it right
" normally. We just want to fix up a few cases.
@@ -204,6 +196,22 @@ function GetRustIndent(lnum)
endif
endif
" Prevent cindent from becoming confused when pairing square brackets, as
" in
"
" let arr = [[u8; 4]; 2] = [
" [0; 4],
" [1, 3, 5, 9],
" ];
" | ← indentation placed here
"
" for which it calculates too much indentation in the line following the
" close of the array.
if prevline =~# '^\s*\]' && l:last_prevline_character ==# ';'
\ && line !~# '^\s*}'
return indent(prevlinenum)
endif
if l:last_prevline_character ==# ","
\ && s:get_line_trimmed(a:lnum) !~# '^\s*[\[\]{})]'
\ && prevline !~# '^\s*fn\s'
@@ -240,43 +248,6 @@ function GetRustIndent(lnum)
return indent(prevlinenum)
endif
if !has("patch-7.4.355")
" cindent before 7.4.355 doesn't do the module scope well at all; e.g.::
"
" static FOO : &'static [bool] = [
" true,
" false,
" false,
" true,
" ];
"
" uh oh, next statement is indented further!
" Note that this does *not* apply the line continuation pattern properly;
" that's too hard to do correctly for my liking at present, so I'll just
" start with these two main cases (square brackets and not returning to
" column zero)
call cursor(a:lnum, 1)
if searchpair('{\|(', '', '}\|)', 'nbW',
\ 's:is_string_comment(line("."), col("."))') == 0
if searchpair('\[', '', '\]', 'nbW',
\ 's:is_string_comment(line("."), col("."))') == 0
" Global scope, should be zero
return 0
else
" At the module scope, inside square brackets only
"if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum
if line =~# "^\\s*]"
" It's the closing line, dedent it
return 0
else
return shiftwidth()
endif
endif
endif
endif
" Fall back on cindent, which does it mostly right
return cindent(a:lnum)
endfunction

View File

@@ -7,6 +7,7 @@
" License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-sh-indent
" Changelog:
" 20250906 - indent function closing properly on multiline commands
" 20250318 - Detect local arrays in functions
" 20241411 - Detect dash character in function keyword for
" bash mode (issue #16049)
@@ -186,6 +187,15 @@ function! GetShIndent()
endif
endif
" Special case: if the current line is a closing '}', align with matching '{'
if curline =~ '^\s*}\s*$'
let match_lnum = searchpair('{', '', '}', 'bnW',
\ 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"')
if match_lnum > 0
return indent(match_lnum)
endif
endif
return ind > 0 ? ind : 0
endfunction

View File

@@ -0,0 +1,42 @@
// vim: set ft=rust ts=8 sw=4 sts=4 et :
// START_INDENT
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
fn main() {
// Create a path to the desired file
let path = Path::new("hello.txt");
let display = path.display();
// Open the path in read-only mode, returns `io::Result<File>`
let mut file = match File::open(&path) {
Err(why) => panic!("couldn't open {}: {}", display, why),
Ok(file) => file,
};
// Start doing nothing forever
loop {
let arr1 = [[u8; 4]; 2] = [
[0; 4],
[1, 3, 5, 9],
];
}
// Plan for a future that will never come
let arr2 = [[u8; 4]; 2] = [
[1; 4],
[2, 4, 6, 8],
];
let arr2_ref = &arr2;
// Read the file contents into a string, returns `io::Result<usize>`
let mut s = String::new();
match file.read_to_string(&mut s) {
Err(why) => panic!("couldn't read {}: {}", display, why),
Ok(_) => print!("{} contains:\n{}", display, s),
}
// file goes out of scope, and the "hello.txt" file gets closed
}
// END_INDENT

View File

@@ -0,0 +1,42 @@
// vim: set ft=rust ts=8 sw=4 sts=4 et :
// START_INDENT
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
fn main() {
// Create a path to the desired file
let path = Path::new("hello.txt");
let display = path.display();
// Open the path in read-only mode, returns `io::Result<File>`
let mut file = match File::open(&path) {
Err(why) => panic!("couldn't open {}: {}", display, why),
Ok(file) => file,
};
// Start doing nothing forever
loop {
let arr1 = [[u8; 4]; 2] = [
[0; 4],
[1, 3, 5, 9],
];
}
// Plan for a future that will never come
let arr2 = [[u8; 4]; 2] = [
[1; 4],
[2, 4, 6, 8],
];
let arr2_ref = &arr2;
// Read the file contents into a string, returns `io::Result<usize>`
let mut s = String::new();
match file.read_to_string(&mut s) {
Err(why) => panic!("couldn't read {}: {}", display, why),
Ok(_) => print!("{} contains:\n{}", display, s),
}
// file goes out of scope, and the "hello.txt" file gets closed
}
// END_INDENT

View File

@@ -18,3 +18,22 @@ map: |
line1
line2
# END_INDENT
# START_INDENT
list:
- element1:
foo: bar
- element2:
foo: bar
# END_INDENT
# START_INDENT
- name: test playbook
hosts: localhost
gather_facts: false
tasks:
- name: hello world
ansible.builtin.debug:
msg: "hello world"
# END_INDENT

View File

@@ -18,3 +18,22 @@ map: |
line1
line2
# END_INDENT
# START_INDENT
list:
- element1:
foo: bar
- element2:
foo: bar
# END_INDENT
# START_INDENT
- name: test playbook
hosts: localhost
gather_facts: false
tasks:
- name: hello world
ansible.builtin.debug:
msg: "hello world"
# END_INDENT

View File

@@ -88,7 +88,9 @@ endfun
" [-- return the sum of indents of a:lnum --]
fun! <SID>XmlIndentSum(line, style, add)
if <SID>IsXMLContinuation(a:line) && a:style == 0 && !<SID>IsXMLEmptyClosingTag(a:line)
if <SID>IsXMLContinuation(a:line) &&
\ a:style == 0 &&
\ !<SID>IsXMLEmptyClosingTag(a:line)
" no complete tag, add one additional indent level
" but only for the current line
return a:add + shiftwidth()
@@ -157,6 +159,17 @@ fun! XmlIndentGet(lnum, use_syntax_check)
" no extra indent, looks like a text continuation line
return pind
endif
elseif empty(syn_name_start) && syn_name_end =~? 'xmlTag'
" Special case: such a line, shouldn't be indented, just because it
" ends with a tag
" 'foobar <i>inline tags</i>'
if (match(curline, '<\([:a-zA-Z_]\+\)[^>]*>.*</\1>') > -1)
return pind
endif
endif
if curline =~ '^\s*</[a-zA-Z_]>'
return <SID>ReturnIndentForMatchingTag(curline)
endif
" Get indent from previous tag line
@@ -181,6 +194,21 @@ func! <SID>IsXMLEmptyClosingTag(line)
return a:line =~? '<[^>]*/>\s*$'
endfunc
func! <SID>ReturnIndentForMatchingTag(line)
" For a line with just a simple closing tag
" get the indent from a matching opening tag
if a:line =~? '^\s*</[a-z_]*>'
let _c = getcursorpos()
let pat = matchstr(a:line, '^\s*</\zs[a-z_]\+\ze>')
" position cursor before the opening tag
norm! 0
" get the indent from the matching opening tag
let match_line = searchpair('<' .. pat .. '>', '', '</' .. pat .. '>', 'bn')
call setpos('.', _c)
return indent(match_line)
endif
endfunc
" return indent for a commented line,
" the middle part might be indented one additional level
func! <SID>XmlIndentComment(lnum)

View File

@@ -5,6 +5,8 @@
" Last Change: 2022 Jun 17
" 2024 Feb 29 by Vim project: disable mulitline indent by default
" 2024 Aug 14 by Vim project: fix re-indenting when commenting out lines
" 2026 Jan 08 by Vim project: fix object indentation in array
" 2026 Jan 15 by Vim project: fix double shiftwidth from previous change
" Only load this indent file when no other was loaded.
if exists('b:did_indent')
@@ -114,7 +116,13 @@ function GetYAMLIndent(lnum)
"
" - |-
" Block scalar without indentation indicator
return previndent+shiftwidth()
if prevline =~# '^\s*-\s.*:$'
" Special case: list item with mapping key (- key:)
" Need to account for the "- " prefix
return previndent + 2 + shiftwidth()
else
return previndent+shiftwidth()
endif
elseif prevline =~# '\v[:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$'
" - |+2
" block scalar with indentation indicator
@@ -136,6 +144,9 @@ function GetYAMLIndent(lnum)
let prevmapline = s:FindPrevLEIndentedLineMatchingRegex(a:lnum,
\ s:mapkeyregex)
if getline(prevmapline) =~# '^\s*- '
" Previous mapping key is in a list item (- key:)
" The key effectively starts at indent + 2 (after "- ")
" Content under it should be indented relative to the key position
return indent(prevmapline) + 2
else
return indent(prevmapline)

View File

@@ -2,9 +2,9 @@
"
" Menu Translations: Japanese (EUC-JP)
" Last Translator: MURAOKA Taro <koron.kaoriya@gmail.com>
" Last Change: 18-Dec-2023.
" Last Change: 18-Jan-2026.
"
" Copyright (C) 2001-2023 MURAOKA Taro <koron.kaoriya@gmail.com>,
" Copyright (C) 2001-2026 MURAOKA Taro <koron.kaoriya@gmail.com>,
" vim-jp <http://vim-jp.org/>
"
" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
@@ -28,7 +28,7 @@ menutrans &User\ Manual
menutrans &How-To\ links &How-toリンク
menutrans &Credits クレジット(&C)
menutrans Co&pying 著作権情報(&P)
menutrans &Sponsor/Register スポンサー/登録(&S)
menutrans &Sponsor スポンサー(&S)
menutrans O&rphans 孤児(&R)
menutrans &Version バージョン情報(&V)
menutrans &About Vimについて(&A)

View File

@@ -2,9 +2,9 @@
"
" Menu Translations: Japanese (UTF-8)
" Last Translator: MURAOKA Taro <koron.kaoriya@gmail.com>
" Last Change: 18-Dec-2023.
" Last Change: 18-Jan-2026.
"
" Copyright (C) 2001-2023 MURAOKA Taro <koron.kaoriya@gmail.com>,
" Copyright (C) 2001-2026 MURAOKA Taro <koron.kaoriya@gmail.com>,
" vim-jp <http://vim-jp.org/>
"
" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
@@ -28,7 +28,7 @@ menutrans &User\ Manual ユーザーマニュアル(&U)
menutrans &How-To\ links &How-toリンク
menutrans &Credits クレジット(&C)
menutrans Co&pying 著作権情報(&P)
menutrans &Sponsor/Register スポンサー/登録(&S)
menutrans &Sponsor スポンサー(&S)
menutrans O&rphans 孤児(&R)
menutrans &Version バージョン情報(&V)
menutrans &About Vimについて(&A)

View File

@@ -2,9 +2,9 @@
"
" Menu Translations: Japanese (CP932)
" Last Translator: MURAOKA Taro <koron.kaoriya@gmail.com>
" Last Change: 18-Dec-2023.
" Last Change: 18-Jan-2026.
"
" Copyright (C) 2001-2023 MURAOKA Taro <koron.kaoriya@gmail.com>,
" Copyright (C) 2001-2026 MURAOKA Taro <koron.kaoriya@gmail.com>,
" vim-jp <http://vim-jp.org/>
"
" THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE.
@@ -28,7 +28,7 @@ menutrans &User\ Manual
menutrans &How-To\ links &How-toリンク
menutrans &Credits クレジット(&C)
menutrans Co&pying 著作権情報(&P)
menutrans &Sponsor/Register スポンサー/登録(&S)
menutrans &Sponsor スポンサー(&S)
menutrans O&rphans 孤児(&R)
menutrans &Version バージョン情報(&V)
menutrans &About Vimについて(&A)

View File

@@ -2,15 +2,14 @@
" Maintainer: Restorer, <restorer@mail2k.ru>
" Previous Maintainer: Sergey Alyoshin, <alyoshin.s@gmail.com>
" vassily ragosin, <vrr[at]users.sourceforge.net>
" Last Change: 23 Aug 2023
" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT
" Last Change: 28 Dec 2025
" URL: https://github.com/RestorerZ/RuVim
"
"
" Adopted for RuVim project by Vassily Ragosin.
" First translation: Tim Alexeevsky, <realtim [at] mail.ru>,
" based on ukrainian translation by Bohdan Vlasyuk, <bohdan@vstu.edu.ua>
"
" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT
"
" Quit when menu translations have already been done.
"
@@ -44,7 +43,7 @@ menutrans &Find\.\.\. &
"--------------------
menutrans &Credits Ñî&àâòîðû
menutrans Co&pying &Ëèöåíçèÿ
menutrans &Sponsor/Register Ñîä&åéñòâèå\ è\ ðåãèñòðàöèÿ
menutrans &Sponsor Ñîä&åéñòâèå\ ïðîåêòó
menutrans O&rphans &Áëàãîòâîðèòåëüíîñòü
"--------------------
menutrans &Version &Òåêóùàÿ\ âåðñèÿ
@@ -264,7 +263,7 @@ menutrans Cu&t &
menutrans &Copy &Êîïèðîâàòü
menutrans &Paste Âñò&àâèòü
menutrans &Delete &Óäàëèòü
menutrans Select\ Blockwise Áëîêîâîå\ âûäåëåíèå
menutrans Select\ Blockwise Áëî÷íîå\ âûäåëåíèå
menutrans Select\ &Word Âûäåëèòü\ ñ&ëîâî
menutrans Select\ &Line Âûäåëèòü\ ñ&òðîêó
menutrans Select\ &Block Âûäåëèòü\ &áëîê
@@ -347,7 +346,7 @@ let menutrans_no_file = "[
" Menus to handle Russian encodings
" Thanks to Pavlo Bohmat for the idea
" vassily ragosin <vrr[at]users.sourceforge.net>
" vassily ragosin, <vrr[at]users.sourceforge.net>
"
an 10.355 &File.-SEP- <Nop>
an 10.360.20 &File.Îòêðûòü\ â\ êîäèðîâêå\.\.\..CP1251 :browse e ++enc=cp1251<CR>

View File

@@ -2,15 +2,14 @@
" Maintainer: Restorer, <restorer@mail2k.ru>
" Previous Maintainer: Sergey Alyoshin, <alyoshin.s@gmail.com>
" vassily ragosin, <vrr[at]users.sourceforge.net>
" Last Change: 23 Aug 2023
" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT
" Last Change: 28 Dec 2025
" URL: https://github.com/RestorerZ/RuVim
"
"
" Adopted for RuVim project by Vassily Ragosin.
" First translation: Tim Alexeevsky, <realtim [at] mail.ru>,
" based on ukrainian translation by Bohdan Vlasyuk, <bohdan@vstu.edu.ua>
"
" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT
"
" Quit when menu translations have already been done.
"
@@ -44,7 +43,7 @@ menutrans &Find\.\.\. &
"--------------------
menutrans &Credits óÏ&Á×ÔÏÒÙ
menutrans Co&pying &ìÉÃÅÎÚÉÑ
menutrans &Sponsor/Register óÏÄ&ÅÊÓÔ×ÉÅ\ É\ ÒÅÇÉÓÔÒÁÃÉÑ
menutrans &Sponsor óÏÄ&ÅÊÓÔ×ÉÅ\ ÐÒÏÅËÔÕ
menutrans O&rphans &âÌÁÇÏÔ×ÏÒÉÔÅÌØÎÏÓÔØ
"--------------------
menutrans &Version &ôÅËÕÝÁÑ\ ×ÅÒÓÉÑ
@@ -264,7 +263,7 @@ menutrans Cu&t &
menutrans &Copy &ëÏÐÉÒÏ×ÁÔØ
menutrans &Paste ÷ÓÔ&Á×ÉÔØ
menutrans &Delete &õÄÁÌÉÔØ
menutrans Select\ Blockwise âÌÏËÏ×ÏÅ\ ×ÙÄÅÌÅÎÉÅ
menutrans Select\ Blockwise âÌÏÞÎÏÅ\ ×ÙÄÅÌÅÎÉÅ
menutrans Select\ &Word ÷ÙÄÅÌÉÔØ\ Ó&ÌÏ×Ï
menutrans Select\ &Line ÷ÙÄÅÌÉÔØ\ Ó&ÔÒÏËÕ
menutrans Select\ &Block ÷ÙÄÅÌÉÔØ\ &ÂÌÏË
@@ -347,7 +346,7 @@ let menutrans_no_file = "[
" Menus to handle Russian encodings
" Thanks to Pavlo Bohmat for the idea
" vassily ragosin <vrr[at]users.sourceforge.net>
" vassily ragosin, <vrr[at]users.sourceforge.net>
"
an 10.355 &File.-SEP- <Nop>
an 10.360.20 &File.ïÔËÒÙÔØ\ ×\ ËÏÄÉÒÏ×ËÅ\.\.\..CP1251 :browse e ++enc=cp1251<CR>

View File

@@ -2,15 +2,14 @@
" Maintainer: Restorer, <restorer@mail2k.ru>
" Previous Maintainer: Sergey Alyoshin, <alyoshin.s@gmail.com>
" vassily ragosin, <vrr[at]users.sourceforge.net>
" Last Change: 23 Aug 2023
" Original translations
" Last Change: 28 Dec 2025
" URL: https://github.com/RestorerZ/RuVim
"
"
" Adopted for RuVim project by Vassily Ragosin.
" First translation: Tim Alexeevsky, <realtim [at] mail.ru>,
" based on ukrainian translation by Bohdan Vlasyuk, <bohdan@vstu.edu.ua>
"
" Original translations
"
" Quit when menu translations have already been done.
"
@@ -44,7 +43,7 @@ menutrans &Find\.\.\. &Найти\.\.\.
"--------------------
menutrans &Credits Со&авторы
menutrans Co&pying &Лицензия
menutrans &Sponsor/Register Сод&ействие\ и\ регистрация
menutrans &Sponsor Сод&ействие\ проекту
menutrans O&rphans &Благотворительность
"--------------------
menutrans &Version &Текущая\ версия
@@ -264,7 +263,7 @@ menutrans Cu&t &Вырезать
menutrans &Copy &Копировать
menutrans &Paste Вст&авить
menutrans &Delete &Удалить
menutrans Select\ Blockwise Блоковое\ выделение
menutrans Select\ Blockwise Блочное\ выделение
menutrans Select\ &Word Выделить\ с&лово
menutrans Select\ &Line Выделить\ с&троку
menutrans Select\ &Block Выделить\ &блок
@@ -347,7 +346,7 @@ let menutrans_no_file = "[Безымянный]"
" Menus to handle Russian encodings
" Thanks to Pavlo Bohmat for the idea
" vassily ragosin <vrr[at]users.sourceforge.net>
" vassily ragosin, <vrr[at]users.sourceforge.net>
"
an 10.355 &File.-SEP- <Nop>
an 10.360.20 &File.Открыть\ в\ кодировке\.\.\..CP1251 :browse e ++enc=cp1251<CR>

View File

@@ -2,7 +2,7 @@
" You can also use this as a start for your own set of menus.
"
" Maintainer: The Vim Project <https://github.com/vim/vim>
" Last Change: 2025 Dec 15
" Last Change: 2026 Jan 19
" Former Maintainer: Bram Moolenaar <Bram@vim.org>
" Note that ":an" (short for ":anoremenu") is often used to make a menu work
@@ -84,7 +84,7 @@ an <silent> 9999.40 &Help.&Find\.\.\. :call <SID>Helpfind()<CR>
an 9999.45 &Help.-sep1- <Nop>
an 9999.50 &Help.&Credits :help credits<CR>
an 9999.60 &Help.Co&pying :help copying<CR>
an 9999.70 &Help.&Sponsor :help sponsor<CR>
an 9999.70 &Help.&Sponsor :help sponsor<CR>
an 9999.70 &Help.O&rphans :help kcc<CR>
an 9999.75 &Help.-sep2- <Nop>
an 9999.80 &Help.&Version :version<CR>
@@ -98,7 +98,7 @@ if exists(':tlmenu')
tlnoremenu 9999.45 &Help.-sep1- <Nop>
tlnoremenu 9999.50 &Help.&Credits <C-W>:help credits<CR>
tlnoremenu 9999.60 &Help.Co&pying <C-W>:help copying<CR>
tlnoremenu 9999.70 &Help.&Sponsor/Register <C-W>:help sponsor<CR>
tlnoremenu 9999.70 &Help.&Sponsor <C-W>:help sponsor<CR>
tlnoremenu 9999.70 &Help.O&rphans <C-W>:help kcc<CR>
tlnoremenu 9999.75 &Help.-sep2- <Nop>
tlnoremenu 9999.80 &Help.&Version <C-W>:version<CR>
@@ -175,7 +175,7 @@ vnoremenu 20.340 &Edit.Cu&t<Tab>"+x "+x
vnoremenu 20.350 &Edit.&Copy<Tab>"+y "+y
cnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-Y>
if exists(':tlmenu')
tlnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-W>:<C-Y><CR>
tlnoremenu 20.350 &Edit.&Copy<Tab>"+y <C-W>:<C-Y><CR>
endif
nnoremenu 20.360 &Edit.&Paste<Tab>"+gP "+gP
cnoremenu &Edit.&Paste<Tab>"+gP <C-R>+
@@ -748,14 +748,14 @@ def s:BMShow()
# Remove old menu, if it exists; keep one entry to avoid a torn off menu to
# disappear. Use try/catch to avoid setting v:errmsg
try
unmenu &Buffers
catch
try
unmenu &Buffers
catch
endtry
exe 'noremenu ' .. g:bmenu_priority .. ".1 &Buffers.Dummy l"
try
unmenu! &Buffers
catch
try
unmenu! &Buffers
catch
endtry
# create new menu

View File

@@ -1,6 +1,6 @@
" matchit.vim: (global plugin) Extended "%" matching
" autload script of matchit plugin, see ../plugin/matchit.vim
" Last Change: May 20, 2024
" Last Change: Jan 09, 2026
" Neovim does not support scriptversion
if has("vimscript-4")
@@ -69,6 +69,25 @@ function matchit#Match_wrapper(word, forward, mode) range
let startpos = [line("."), col(".")]
endif
" Check for custom match function hook
if exists("b:match_function")
try
let result = call(b:match_function, [a:forward])
if !empty(result)
call cursor(result)
return s:CleanUp(restore_options, a:mode, startpos)
endif
catch /.*/
if exists("b:match_debug")
echohl WarningMsg
echom 'matchit: b:match_function error: ' .. v:exception
echohl NONE
endif
return s:CleanUp(restore_options, a:mode, startpos)
endtry
" Empty result: fall through to regular matching
endif
" First step: if not already done, set the script variables
" s:do_BR flag for whether there are backrefs
" s:pat parsed version of b:match_words
@@ -91,7 +110,7 @@ function matchit#Match_wrapper(word, forward, mode) range
let default = escape(&mps, '[$^.*~\\/?]') .. (strlen(&mps) ? "," : "") ..
\ '\/\*:\*\/,#\s*if\%(n\=def\)\=:#\s*else\>:#\s*elif\%(n\=def\)\=\>:#\s*endif\>'
" s:all = pattern with all the keywords
let match_words = match_words .. (strlen(match_words) ? "," : "") .. default
let match_words = s:Append(match_words, default)
let s:last_words = match_words
if match_words !~ s:notslash .. '\\\d'
let s:do_BR = 0
@@ -101,8 +120,8 @@ function matchit#Match_wrapper(word, forward, mode) range
let s:pat = s:ParseWords(match_words)
endif
let s:all = substitute(s:pat, s:notslash .. '\zs[,:]\+', '\\|', 'g')
" un-escape \, to ,
let s:all = substitute(s:all, '\\,', ',', 'g')
" un-escape \, and \: to , and :
let s:all = substitute(s:all, s:notslash .. '\zs\\\(:\|,\)', '\1', 'g')
" Just in case there are too many '\(...)' groups inside the pattern, make
" sure to use \%(...) groups, so that error E872 can be avoided
let s:all = substitute(s:all, '\\(', '\\%(', 'g')
@@ -341,6 +360,18 @@ fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline)
return ini .. ":" .. tailBR
endfun
" String append item2 to item and add ',' in between items
fun! s:Append(item, item2)
if a:item == ''
return a:item2
endif
" there is already a trailing comma, don't add another one
if a:item[-1:] == ','
return a:item .. a:item2
endif
return a:item .. ',' .. a:item2
endfun
" Input a comma-separated list of groups with backrefs, such as
" a:groups = '\(foo\):end\1,\(bar\):end\1'
" and return a comma-separated list of groups with backrefs replaced:
@@ -538,8 +569,8 @@ fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...)
else
let currpat = substitute(current, s:notslash .. a:branch, '\\|', 'g')
endif
" un-escape \, to ,
let currpat = substitute(currpat, '\\,', ',', 'g')
" un-escape \, and \: to , and :
let currpat = substitute(currpat, s:notslash .. '\zs\\\(:\|,\)', '\1', 'g')
while a:string !~ a:prefix .. currpat .. a:suffix
let tail = strpart(tail, i)
let i = matchend(tail, s:notslash .. a:comma)
@@ -552,6 +583,8 @@ fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...)
else
let currpat = substitute(current, s:notslash .. a:branch, '\\|', 'g')
endif
" un-escape \, and \: to , and :
let currpat = substitute(currpat, s:notslash .. '\zs\\\(:\|,\)', '\1', 'g')
if a:0
let alttail = strpart(alttail, j)
let j = matchend(alttail, s:notslash .. a:comma)
@@ -621,7 +654,7 @@ fun! matchit#MultiMatch(spflag, mode)
let default = escape(&mps, '[$^.*~\\/?]') .. (strlen(&mps) ? "," : "") ..
\ '\/\*:\*\/,#\s*if\%(n\=def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>'
let s:last_mps = &mps
let match_words = match_words .. (strlen(match_words) ? "," : "") .. default
let match_words = s:Append(match_words, default)
let s:last_words = match_words
if match_words !~ s:notslash .. '\\\d'
let s:do_BR = 0

View File

@@ -1,13 +1,7 @@
*matchit.txt* Extended "%" matching
*matchit.txt* Extended "%" matching Last change: 2026 Jan 06
For instructions on installing this file, type
`:help matchit-install`
inside Vim.
VIM REFERENCE MANUAL by Benji Fisher et al
For Vim version 9.1. Last change: 2024 May 20
VIM REFERENCE MANUAL by Benji Fisher et al
*matchit* *matchit.vim*
@@ -174,7 +168,7 @@ defined automatically.
2.1 Temporarily disable the matchit plugin *matchit-disable* *:MatchDisable*
To temporarily disable the matchit plugin, after it hat been loaded,
To temporarily disable the matchit plugin, after it has been loaded,
execute this command: >
:MatchDisable
@@ -259,6 +253,45 @@ Examples:
See the $VIMRUNTIME/ftplugin/vim.vim for an example that uses both
syntax and a regular expression.
*b:match_function*
If b:match_function is defined, matchit.vim will first call this function to
perform matching. This is useful for languages with an indentation-based block
structure (such as Python) or other complex matching requirements that cannot
be expressed with regular expression patterns.
The function should accept one argument:
forward - 1 for forward search (% command)
0 for backward search (g% command)
The function should return a list with one of these values:
[line, col] - Match found at the specified position
[] - No match found; fall through to regular matching
(|b:match_words|, matchpairs, etc.)
The cursor position is not changed by the function; matchit handles cursor
movement based on the returned position.
If the function throws an error, matchit gives up and doesn't continue.
Enable |b:match_debug| to see error messages from custom match functions.
Python example (simplified): >
let s:keywords = {'if': 'elif\|else', 'elif': 'elif\|else'}
function! s:PythonMatch(forward) abort
let keyword = matchstr(getline('.'), '^\s*\zs\w\+')
let pattern = get(s:keywords, keyword, '')
if empty(pattern) | return [] | endif
" Forward-only. Backwards left as an exercise for the reader.
let [lnum, col] = searchpos('^\s*\%(' . pattern . '\)\>', 'nW' 0, 0,
\ 'indent(".") != ' . indent('.'))
return lnum > 0 ? [lnum, col] : []
endfunction
let b:match_function = function('s:PythonMatch')
<
See |matchit-newlang| below for more details on supporting new languages.
==============================================================================
4. Supporting a New Language *matchit-newlang*
*b:match_words*
@@ -270,9 +303,9 @@ Vim's |regular-expression|s.
The format for |b:match_words| is similar to that of the 'matchpairs' option:
it is a comma (,)-separated list of groups; each group is a colon(:)-separated
list of patterns (regular expressions). Commas and backslashes that are part
of a pattern should be escaped with backslashes ('\:' and '\,'). It is OK to
have only one group; the effect is undefined if a group has only one pattern.
list of patterns (regular expressions). Commas and colons that are part of a
pattern should be escaped with backslashes ('\:' and '\,'). It is OK to have
only one group; the effect is undefined if a group has only one pattern.
A simple example is >
:let b:match_words = '\<if\>:\<endif\>,'
\ . '\<while\>:\<continue\>:\<break\>:\<endwhile\>'
@@ -315,7 +348,7 @@ expression >
if keywords are only recognized after the start of a line or after a
semicolon (;), with optional white space.
*matchit-backref* *matchit-\1*
*matchit-backref*
In any group, the expressions |\1|, |\2|, ..., |\9| refer to parts of the
INITIAL pattern enclosed in |\(|escaped parentheses|\)|. These are referred
to as back references, or backrefs. For example, >

View File

@@ -6,6 +6,7 @@ MatchError matchit.txt /*MatchError*
]% matchit.txt /*]%*
b:match_col matchit.txt /*b:match_col*
b:match_debug matchit.txt /*b:match_debug*
b:match_function matchit.txt /*b:match_function*
b:match_ignorecase matchit.txt /*b:match_ignorecase*
b:match_ini matchit.txt /*b:match_ini*
b:match_iniBR matchit.txt /*b:match_iniBR*
@@ -20,7 +21,6 @@ b:match_words matchit.txt /*b:match_words*
g% matchit.txt /*g%*
matchit matchit.txt /*matchit*
matchit-% matchit.txt /*matchit-%*
matchit-\1 matchit.txt /*matchit-\\1*
matchit-activate matchit.txt /*matchit-activate*
matchit-backref matchit.txt /*matchit-backref*
matchit-bugs matchit.txt /*matchit-bugs*

View File

@@ -1,6 +1,6 @@
" matchit.vim: (global plugin) Extended "%" matching
" Maintainer: Christian Brabandt
" Version: 1.20
" Version: 1.21
" Last Change: 2024 May 20
" Repository: https://github.com/chrisbra/matchit
" Previous URL:http://www.vim.org/script.php?script_id=39

View File

@@ -11,7 +11,7 @@ upstream for distribution with Vim.
# License
To see License informations see the LICENSE.txt file included in this
To see License information see the LICENSE.txt file included in this
repository.
# Credits

View File

@@ -16,6 +16,8 @@
" 2025 Nov 13 by Vim Project don't wipe unnamed buffers #18740
" 2025 Nov 18 by Vim Project use UNC paths when using scp and Windows paths #18764
" 2025 Nov 28 by Vim Project fix undefined variable in *NetrwMenu #18829
" 2025 Dec 26 by Vim Project fix use of g:netrw_cygwin #19015
" 2026 Jan 19 by Vim Project do not create swapfiles #18854
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@@ -213,7 +215,7 @@ call s:NetrwInit("g:netrw_dirhistmax" , 10)
call s:NetrwInit("g:netrw_fastbrowse" , 1)
call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$')
if !exists("g:netrw_ftp_list_cmd")
if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
if has("unix") || g:netrw_cygwin
let g:netrw_ftp_list_cmd = "ls -lF"
let g:netrw_ftp_timelist_cmd = "ls -tlF"
let g:netrw_ftp_sizelist_cmd = "ls -slF"
@@ -320,7 +322,7 @@ call s:NetrwInit("g:netrw_menu" , 1)
call s:NetrwInit("g:netrw_mkdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir")
call s:NetrwInit("g:netrw_mousemaps" , (exists("+mouse") && &mouse =~# '[anh]'))
call s:NetrwInit("g:netrw_retmap" , 0)
if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)
if has("unix") || g:netrw_cygwin
call s:NetrwInit("g:netrw_chgperm" , "chmod PERM FILENAME")
elseif has("win32")
call s:NetrwInit("g:netrw_chgperm" , "cacls FILENAME /e /p PERM")
@@ -442,7 +444,7 @@ function netrw#Explore(indx,dosplit,style,...)
" record current directory
let curdir = simplify(b:netrw_curdir)
if !exists("g:netrw_cygwin") && has("win32")
if !g:netrw_cygwin && has("win32")
let curdir= substitute(curdir,'\','/','g')
endif
let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
@@ -520,7 +522,7 @@ function netrw#Explore(indx,dosplit,style,...)
NetrwKeepj norm! 0
if a:0 > 0
if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin))
if a:1 =~ '^\~' && (has("unix") || g:netrw_cygwin)
let dirname= simplify(substitute(a:1,'\~',expand("$HOME"),''))
elseif a:1 == '.'
let dirname= simplify(exists("b:netrw_curdir")? b:netrw_curdir : getcwd())
@@ -3234,7 +3236,7 @@ function s:NetrwFile(fname)
let b:netrw_curdir= getcwd()
endif
if !exists("g:netrw_cygwin") && has("win32")
if !g:netrw_cygwin && has("win32")
if fname =~ '^\' || fname =~ '^\a:\'
" windows, but full path given
let ret= fname
@@ -4256,12 +4258,12 @@ endfunction
" NetrwKeepj [keepalt] <OPT> <CMD> <FILENAME>
function s:NetrwEditFile(cmd,opt,fname)
if exists("g:netrw_altfile") && g:netrw_altfile && &ft == "netrw"
exe "NetrwKeepj keepalt ".a:opt." ".a:cmd." ".fnameescape(a:fname)
exe "NetrwKeepj noswapfile keepalt ".a:opt." ".a:cmd." ".fnameescape(a:fname)
else
if a:cmd =~# 'e\%[new]!' && !&hidden && getbufvar(bufname('%'), '&modified', 0)
call setbufvar(bufname('%'), '&bufhidden', 'hide')
endif
exe "NetrwKeepj ".a:opt." ".a:cmd." ".fnameescape(a:fname)
exe "NetrwKeepj noswapfile ".a:opt." ".a:cmd." ".fnameescape(a:fname)
endif
endfunction

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