summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-03-19 15:18:53 +0000
committerBram Moolenaar <Bram@vim.org>2022-03-19 15:18:53 +0000
commit47c532e2bc55e8a48f7f47e1fae1ed30144f2fa1 (patch)
tree11fb0e3e2b944668fc416d816298badc8211d013 /runtime
parent36a5b6867bb6c0bd69c8da7d788000ab8a0b0ab0 (diff)
downloadvim-git-47c532e2bc55e8a48f7f47e1fae1ed30144f2fa1.tar.gz
Update runtime files
Diffstat (limited to 'runtime')
-rw-r--r--runtime/doc/builtin.txt2
-rw-r--r--runtime/doc/ft_ada.txt26
-rw-r--r--runtime/doc/gui_w32.txt5
-rw-r--r--runtime/doc/if_perl.txt8
-rw-r--r--runtime/doc/insert.txt22
-rw-r--r--runtime/doc/options.txt9
-rw-r--r--runtime/doc/syntax.txt5
-rw-r--r--runtime/doc/tags1
-rw-r--r--runtime/doc/tagsrch.txt3
-rw-r--r--runtime/doc/todo.txt88
-rw-r--r--runtime/doc/usr_29.txt21
-rw-r--r--runtime/doc/version9.txt59
-rw-r--r--runtime/doc/vim9.txt27
-rw-r--r--runtime/ftplugin/liquid.vim4
-rw-r--r--runtime/ftplugin/php.vim3
-rw-r--r--runtime/gvim.desktop5
-rw-r--r--runtime/indent/bst.vim6
-rw-r--r--runtime/indent/haml.vim4
-rw-r--r--runtime/indent/liquid.vim23
-rw-r--r--runtime/indent/sass.vim4
-rw-r--r--runtime/pack/dist/opt/termdebug/plugin/termdebug.vim121
-rw-r--r--runtime/syntax/c.vim17
-rw-r--r--runtime/syntax/liquid.vim24
-rw-r--r--runtime/syntax/sass.vim3
-rw-r--r--runtime/syntax/vim.vim17
-rw-r--r--runtime/tools/demoserver.py3
-rw-r--r--runtime/vim.desktop5
27 files changed, 271 insertions, 244 deletions
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 9e5b6f2f0..062ccc345 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -9034,7 +9034,7 @@ taglist({expr} [, {filename}]) *taglist()*
entry depends on the language specific
kind values. Only available when
using a tags file generated by
- Exuberant ctags or hdrtag.
+ Universal/Exuberant ctags or hdrtag.
static A file specific tag. Refer to
|static-tag| for more information.
More entries may be present, depending on the content of the
diff --git a/runtime/doc/ft_ada.txt b/runtime/doc/ft_ada.txt
index 9adfea9e3..8645ad9e9 100644
--- a/runtime/doc/ft_ada.txt
+++ b/runtime/doc/ft_ada.txt
@@ -1,4 +1,4 @@
-*ft_ada.txt* For Vim version 8.2. Last change: 2010 Jul 20
+*ft_ada.txt* For Vim version 8.2. Last change: 2022 Mar 13
ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
@@ -89,9 +89,9 @@ file is opened and adds Ada related entries to the main and pop-up menu.
*ft-ada-omni*
The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either
-by "gnat xref -v" or the "exuberant Ctags (http://ctags.sourceforge.net). The
-complete function will automatically detect which tool was used to create the
-tags file.
+by "gnat xref -v" or the "Universal Ctags" (https://ctags.io). The complete
+function will automatically detect which tool was used to create the tags
+file.
------------------------------------------------------------------------------
3.1 Omni Completion with "gnat xref" ~
@@ -125,18 +125,18 @@ NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
3.2 Omni Completion with "ctags"~
*ada-ctags*
-Exuberant Ctags uses its own multi-language code parser. The parser is quite
-fast, produces a lot of extra information (hence the name "Exuberant Ctags")
-and can run on files which currently do not compile.
+Universal/Exuberant Ctags use their own multi-language code parser. The
+parser is quite fast, produces a lot of extra information and can run on files
+which currently do not compile.
-There are also lots of other Vim-tools which use exuberant Ctags.
+There are also lots of other Vim-tools which use Universal/Exuberant Ctags.
+Universal Ctags is preferred, Exuberant Ctags is no longer being developed.
-You will need to install a version of the Exuberant Ctags which has Ada
-support patched in. Such a version is available from the GNU Ada Project
-(http://gnuada.sourceforge.net).
+You will need to install Universal Ctags which is available from
+https://ctags.io
-The Ada parser for Exuberant Ctags is fairly new - don't expect complete
-support yet.
+The Ada parser for Universal/Exuberant Ctags is fairly new - don't expect
+complete support yet.
==============================================================================
4. Compiler Support ~
diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt
index e43428668..93f68bd3d 100644
--- a/runtime/doc/gui_w32.txt
+++ b/runtime/doc/gui_w32.txt
@@ -1,4 +1,4 @@
-*gui_w32.txt* For Vim version 8.2. Last change: 2021 Oct 24
+*gui_w32.txt* For Vim version 8.2. Last change: 2022 Mar 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -236,7 +236,8 @@ The "* register reflects the contents of the clipboard. |quotestar|
When the "unnamed" string is included in the 'clipboard' option, the unnamed
register is the same. Thus you can yank to and paste from the clipboard
-without prepending "* to commands.
+without prepending "* to commands. If this doesn't work use the "unnamedplus"
+string in the 'clipboard' option.
The 'a' flag in 'guioptions' is not included by default. This means that text
is only put on the clipboard when an operation is performed on it. Just
diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt
index f1060e88d..61ad7c94b 100644
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -1,4 +1,4 @@
-*if_perl.txt* For Vim version 8.2. Last change: 2022 Jan 28
+*if_perl.txt* For Vim version 8.2. Last change: 2022 Mar 13
VIM REFERENCE MANUAL by Sven Verdoolaege
@@ -22,9 +22,9 @@ line of a file, regardless of the filename suffix, to check if a file is a
Perl script (see scripts.vim in Vim's syntax directory). Vim assumes a file
is POD text if the filename has a .POD suffix.
-To use tags with Perl, you need a recent version of Exuberant ctags. Look
-here:
- http://ctags.sourceforge.net
+To use tags with Perl, you need Universal/Exuberant Ctags. Look here:
+ Universal Ctags (preferred): https://ctags.io
+ Exuberant Ctags: http://ctags.sourceforge.net
Alternatively, you can use the Perl script pltags.pl, which is shipped with
Vim in the $VIMRUNTIME/tools directory. This script has currently more
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 3153d4641..5dc3348db 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt* For Vim version 8.2. Last change: 2022 Mar 06
+*insert.txt* For Vim version 8.2. Last change: 2022 Mar 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1409,11 +1409,16 @@ in 'runtimepath'. Thus for "java" it is autoload/javacomplete.vim.
C *ft-c-omni*
-Completion of C code requires a tags file. You should use Exuberant ctags,
-because it adds extra information that is needed for completion. You can find
-it here: http://ctags.sourceforge.net/ Version 5.6 or later is recommended.
+Completion of C code requires a tags file. You should use Universal/
+Exuberant ctags, because it adds extra information that is needed for
+completion. You can find it here:
+ Universal Ctags: https://ctags.io
+ Exuberant Ctags: http://ctags.sourceforge.net
-For version 5.5.4 you should add a patch that adds the "typename:" field:
+Universal Ctags is preferred, Exuberant Ctags is no longer being developed.
+
+For Exuberant ctags, version 5.6 or later is recommended. For version 5.5.4
+you should add a patch that adds the "typename:" field:
ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch
A compiled .exe for MS-Windows can be found at:
http://ctags.sourceforge.net/
@@ -1534,8 +1539,11 @@ will be suggested. All other elements are not placed in suggestion list.
PHP *ft-php-omni*
Completion of PHP code requires a tags file for completion of data from
-external files and for class aware completion. You should use Exuberant ctags
-version 5.5.4 or newer. You can find it here: http://ctags.sourceforge.net/
+external files and for class aware completion. You should use Universal/
+Exuberant ctags version 5.5.4 or newer. You can find it here:
+
+ Universal Ctags: https://ctags.io
+ Exuberant Ctags: http://ctags.sourceforge.net
Script completes:
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 9d353ac2d..5bafaff3d 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 8.2. Last change: 2022 Feb 18
+*options.txt* For Vim version 8.2. Last change: 2022 Mar 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -7859,9 +7859,10 @@ A jump table for the options with a short description can be found at |Q_op|.
linear search can be avoided when case is ignored. Use a value of '2'
in the "!_TAG_FILE_SORTED" line for this. A tag file can be case-fold
sorted with the -f switch to "sort" in most unices, as in the command:
- "sort -f -o tags tags". For "Exuberant ctags" version 5.x or higher
- (at least 5.5) the --sort=foldcase switch can be used for this as
- well. Note that case must be folded to uppercase for this to work.
+ "sort -f -o tags tags". For Universal ctags and Exuberant ctags
+ version 5.x or higher (at least 5.5) the --sort=foldcase switch can be
+ used for this as well. Note that case must be folded to uppercase for
+ this to work.
By default, tag searches are case-sensitive. Case is ignored when
'ignorecase' is set and 'tagcase' is "followic", or when 'tagcase' is
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index f43ab7c82..9451ff2b9 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -5553,11 +5553,12 @@ WARNING: The longer the tags file, the slower this will be, and the more
memory Vim will consume.
Only highlighting typedefs, unions and structs can be done too. For this you
-must use Exuberant ctags (found at http://ctags.sf.net).
+must use Universal Ctags (found at https://ctags.io) or Exuberant ctags (found
+at http://ctags.sf.net).
Put these lines in your Makefile:
-# Make a highlight file for types. Requires Exuberant ctags and awk
+# Make a highlight file for types. Requires Universal/Exuberant ctags and awk
types: types.vim
types.vim: *.[ch]
ctags --c-kinds=gstu -o- *.[ch] |\
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 81ba7d9b4..e64bdd576 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4254,6 +4254,7 @@ E1265 eval.txt /*E1265*
E1266 if_pyth.txt /*E1266*
E127 eval.txt /*E127*
E1270 change.txt /*E1270*
+E1271 vim9.txt /*E1271*
E128 eval.txt /*E128*
E129 eval.txt /*E129*
E13 message.txt /*E13*
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index b53131bf9..e2391190e 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -561,7 +561,8 @@ also works. The <CR> and <NL> characters can never appear inside a line.
The second format is new. It includes additional information in optional
fields at the end of each line. It is backwards compatible with Vi. It is
-only supported by new versions of ctags (such as Exuberant ctags).
+only supported by new versions of ctags (such as Universal ctags or Exuberant
+ctags).
{tagname} The identifier. Normally the name of a function, but it can
be any identifier. It cannot contain a <Tab>.
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 57a84e5cc..fd0817def 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 8.2. Last change: 2022 Mar 08
+*todo.txt* For Vim version 8.2. Last change: 2022 Mar 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,27 +38,10 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
-Allow for assigning v:null to job/channel/funcref etc.
-- Check that the declared type is not lost.
-- Check: var d: dict<func> = {a: function('tr'), b: null}
-
-Fix that with s being an empty string, this returns TRUE:
- echo s is null_string
-
-Make sure null types work to:
-- assign to a variable
-- use as an argument
-- use as default value of optional argument
-- use as return value
-- use in a list/dict constant, type is correct
-- revert comparing with null?
-
-TODO item in eval.c
-
-Really drop the Athena GUI? And NeXtaw?
+Really drop the Athena and NeXtaw GUI? Decide end of March.
Once Vim9 is stable:
-- Use Vim9 for runtime files.
+- Use Vim9 for more runtime files.
- Check code coverage, add more tests if needed.
vim9execute.c line 1900
vim9expr.c
@@ -123,7 +106,6 @@ Popup windows:
- 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)
-- Use popup (or popup menu) for command line completion
- 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.
@@ -2231,10 +2213,6 @@ Jan 7)
Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8)
-With 'wildmode' set to "longest:full,full" and pressing Tab once the first
-entry in wildmenu is highlighted, that shouldn't happen. (Yuki Watanabe, 2011
-Feb 12)
-
Display error when 'tabline' that includes a file name with double-width
characters. (2010 Aug 14, bootleq)
@@ -2437,10 +2415,6 @@ is executed.
first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this.
Similar problem with ":e". (Marc Montu, 2014 Apr 22)
-Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3
-laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1)
-Works OK with Vim in an xterm.
-
Cursor line moves in other window when using CTRL-W J that doesn't change
anything. (Dasn, 2009 Apr 7)
@@ -2473,10 +2447,6 @@ backslash? (Robert Vibrant, 2008 Jun 5)
When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a
line. It's also wrong in folds. (Dominique Pelle, 2010 Aug 21)
-After using <Tab> for command line completion after ":ta blah" and getting E33
-(no tags file), further editing the command to e.g., ":echo 'blah'", the
-command is not executed. Fix by Ian Kelling?
-
":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim
Chase) Fix by Ian Kelling, 2008 Jul 14.
@@ -2652,16 +2622,6 @@ This should avoid flicker. Other solution by A.Politz, 2007 Aug 22.
When a register contains illegal bytes, writing viminfo in utf-8 and reading
it back doesn't result in utf-8. (Devin Bayer)
-Command line completion: Scanning for tags doesn't check for typed key now and
-then? Hangs for about 5 seconds. Appears to be caused by finding include
-files with "foo/**" in 'path'. (Kalisiak, 2006 July 15)
-Additional info: When using the |wildcards| ** globing, vim hangs
-indefinitely on lots of directories. The |file-searching| globing, like in
-":set path=/**" does not hang as often as with globing with |wildcards|, like
-in ":1find /**/file". This is for files that unix "find" can find very
-quickly. Merging the 2 kinds of globing might make this an easier fix. (Ian
-Kelling, 2008 July 4)
-
When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the
parenthesis escaped but not the space. That's inconsistent. Either escape
neither or both. No escaping might be best, because it doesn't depend on
@@ -2740,8 +2700,6 @@ Cursor displayed in the wrong position when using 'numberwidth'. (James Vega,
When $VAR contains a backslash expand('$VAR') removes it. (Teemu Likonen, 2008
Jun 18)
-If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
-
In debug mode, using CTRL-R = to evaluate a function causes stepping through
the function. (Hari Krishna Dara, 2006 Jun 28)
@@ -2850,13 +2808,6 @@ reload it then?
For Aap: include a config.arg.example file with hints how to use config.arg.
-Command line completion when 'cmdheight' is maximum and 'wildmenu' is set,
-only one buffer line displayed, causes display errors.
-
-Completing with 'wildmenu' and using <Up> and <Down> to move through directory
-tree stops unexpectedly when using ":cd " and entering a directory that
-doesn't contain other directories.
-
Default for 'background' is wrong when using xterm with 256 colors.
Table with estimates from Matteo Cavalleri, 2014 Jan 10.
@@ -3538,8 +3489,6 @@ Macintosh:
8 When doing Insert mode completion a mapping cannot recursively call
edit(), because the completion information is global. Put everything in
an allocated structure?
-8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
- ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte
character. (Yasuhiro Matsumoto) It should return 1 when used on a tail
byte, like for utf-8. Store second byte of double-byte in ScreenLines2[]
@@ -4274,8 +4223,6 @@ Syntax highlighting:
7 CTRL-] checks the highlight group for finding out what the tag is.
7 Add an explanation how a list of words can be used to highlight misspelled
words.
-8 Add more command line completion for :syntax.
-8 Add more command line completion for :highlight.
7 Should find a better way to parse the :syntax and :highlight commands.
Use tables or lists that can be shared by parsing for execution and
completion?
@@ -5061,6 +5008,35 @@ Command line completion:
- Add 'wildlongest' option: Key to use to find longest common match for
command line completion (default CTRL-L), like 'wildchar'. (Cregut)
Also: when there are several matches, show them line a CTRL-D.
+- With 'wildmode' set to "longest:full,full" and pressing Tab once the first
+ entry in wildmenu is highlighted, that shouldn't happen. (Yuki Watanabe,
+ 2011 Feb 12)
+- After using <Tab> for command line completion after ":ta blah" and getting
+ E33 (no tags file), further editing the command to e.g., ":echo 'blah'",
+ the command is not executed. Fix by Ian Kelling?
+- Command line completion: Scanning for tags doesn't check for typed key now
+ and then? Hangs for about 5 seconds. Appears to be caused by finding
+ include files with "foo/**" in 'path'. (Kalisiak, 2006 July 15)
+ Additional info: When using the |wildcards| ** globing, vim hangs
+ indefinitely on lots of directories. The |file-searching| globing, like in
+ ":set path=/**" does not hang as often as with globing with |wildcards|,
+ like in ":1find /**/file". This is for files that unix "find" can find
+ very quickly. Merging the 2 kinds of globing might make this an easier
+ fix. (Ian Kelling, 2008 July 4)
+- Command line completion when 'cmdheight' is maximum and 'wildmenu' is set,
+ only one buffer line displayed, causes display errors.
+- Completing with 'wildmenu' and using <Up> and <Down> to move through
+ directory tree stops unexpectedly when using ":cd " and entering a
+ directory that doesn't contain other directories.
+8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
+ ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
+8 Add more command line completion for :syntax.
+8 Add more command line completion for :highlight.
+- Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3
+ laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1) Works
+ OK with Vim in an xterm.
+- If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't
+ work.
Command line history:
diff --git a/runtime/doc/usr_29.txt b/runtime/doc/usr_29.txt
index 594020603..de1b91151 100644
--- a/runtime/doc/usr_29.txt
+++ b/runtime/doc/usr_29.txt
@@ -1,4 +1,4 @@
-*usr_29.txt* For Vim version 8.2. Last change: 2016 Feb 27
+*usr_29.txt* For Vim version 8.2. Last change: 2022 Mar 13
VIM USER MANUAL - by Bram Moolenaar
@@ -33,10 +33,12 @@ following command: >
ctags *.c
"ctags" is a separate program. Most Unix systems already have it installed.
-If you do not have it yet, you can find Exuberant ctags here:
-
+If you do not have it yet, you can find Universal/Exuberant ctags at:
+ http://ctags.io ~
http://ctags.sf.net ~
+Universal ctags is preferred, Exuberant ctags is no longer being developed.
+
Now when you are in Vim and you want to go to a function definition, you can
jump to it by using the following command: >
@@ -142,15 +144,15 @@ ONE TAGS FILE
When Vim has to search many places for tags files, you can hear the disk
rattling. It may get a bit slow. In that case it's better to spend this
time while generating one big tags file. You might do this overnight.
- This requires the Exuberant ctags program, mentioned above. It offers an
-argument to search a whole directory tree: >
+ This requires the Universal or Exuberant ctags program, mentioned above.
+It offers an argument to search a whole directory tree: >
cd ~/proj
ctags -R .
-The nice thing about this is that Exuberant ctags recognizes various file
-types. Thus this doesn't work just for C and C++ programs, also for Eiffel
-and even Vim scripts. See the ctags documentation to tune this.
+The nice thing about this is that Universal/Exuberant ctags recognizes various
+file types. Thus this doesn't work just for C and C++ programs, also for
+Eiffel and even Vim scripts. See the ctags documentation to tune this.
Now you only need to tell Vim where your big tags file is: >
:set tags=~/proj/tags
@@ -232,7 +234,8 @@ A TAGS BROWSER
Since CTRL-] takes you to the definition of the identifier under the cursor,
you can use a list of identifier names as a table of contents. Here is an
example.
- First create a list of identifiers (this requires Exuberant ctags): >
+ First create a list of identifiers (this requires Universal or Exuberant
+ctags): >
ctags --c-types=f -f functions *.c
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 0e1ecf55d..7d5c2585e 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -837,7 +837,7 @@ Files: runtime/tools/ccfilter.c, src/libvterm/src/parser.c,
Patch 8.2.0107
Problem: Hgignore is out of sync from gitignore.
Solution: Add lines to hgignore. (Ken Takata)
-Files: .hgigmore
+Files: .hgignore
Patch 8.2.0108
Problem: When sign text is changed a manual redraw is needed. (Pontus
@@ -2474,7 +2474,7 @@ Files: src/testdir/test_hardcopy.vim
Patch 8.2.0367
Problem: Can use :pedit in a popup window.
Solution: Disallow it.
-Files: src/ex_docmd.c, src/testdir/test_popuwin.vim
+Files: src/ex_docmd.c, src/testdir/test_popupwin.vim
Patch 8.2.0368
Problem: Vim9: import that redefines local variable does not fail.
@@ -2513,7 +2513,7 @@ Patch 8.2.0372
Problem: Prop_find() may not find text property at start of the line.
Solution: Adjust the loop to find properties. (Axel Forsman, closes #5761,
closes #5663)
-Files: src/testprop.c, src/testdir/test_textprop.vim
+Files: src/textprop.c, src/testdir/test_textprop.vim
Patch 8.2.0373
Problem: Type of term_sendkeys() is unknown.
@@ -3743,7 +3743,7 @@ Patch 8.2.0570
Problem: Vim9: no error when omitting type from argument.
Solution: Enforce specifying argument types.
Files: src/userfunc.c, src/ex_eval.c, src/testdir/test_vim9_script.vim,
- src/testdir/test_vim9_func.vim, src/testdir/test_vim9_expr.vim
+ src/testdir/test_vim9_func.vim, src/testdir/test_vim9_expr.vim,
src/testdir/test_vim9_disassemble.vim
Patch 8.2.0571
@@ -3921,7 +3921,7 @@ Files: runtime/doc/netbeans.txt, src/netbeans.c, src/os_win32.c,
Patch 8.2.0600
Problem: Vim9: cannot read or write w:, t: and b: variables.
Solution: Implement load and store for w:, t: and b: variables.
- (closes #5950)
+ (closes #5950)
Files: src/testdir/test_vim9_disassemble.vim,
src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim,
src/vim9.h, src/vim9compile.c, src/vim9execute.c
@@ -4042,7 +4042,7 @@ Files: runtime/lang/menu_sv_se.latin1.vim
Patch 8.2.0618
Problem: Echoing a null list results in no output. (Yegappan Lakshmanan)
-Solution: Return "[]" instead of NULL in echo_string_core().
+Solution: Return "[]" instead of NULL in echo_string_core().
Files: src/eval.c, src/testdir/test_messages.vim
Patch 8.2.0619
@@ -4095,7 +4095,7 @@ Solution: Give error for missing space. Implement :echomsg and :echoerr.
(closes #5670)
Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, src/userfunc.c,
src/eval.c, src/globals.h, src/testdir/test_vim9_func.vim,
- src/testdir/test_vim9_disassemble.vim
+ src/testdir/test_vim9_disassemble.vim,
src/testdir/test_vim9_script.vim
Patch 8.2.0627
@@ -5205,8 +5205,9 @@ Problem: Libvterm code lags behind the upstream version.
Solution: Include revision 727, but add the index instead of switching
between RGB and indexed.
Files: src/terminal.c, src/term.c, src/libvterm/include/vterm.h,
- src/libvterm/src/pen.c src/libvterm/src/screen.c
- src/libvterm/src/vterm_internal.h src/libvterm/t/30state_pen.test
+ src/libvterm/src/pen.c, src/libvterm/src/screen.c,
+ src/libvterm/src/vterm_internal.h,
+ src/libvterm/t/30state_pen.test,
src/libvterm/t/harness.c, src/libvterm/src/state.c,
src/libvterm/t/26state_query.test,
src/libvterm/t/64screen_pen.test
@@ -5299,7 +5300,7 @@ Files: runtime/doc/vim9.txt, src/vim9script.c, src/structs.h,
src/evalvars.c, src/proto/evalvars.pro, src/vim9compile.c,
src/proto/vim9compile.pro, src/vim9execute.c, src/ex_cmds.h,
src/ex_docmd.c, src/ex_cmdidxs.h, src/vim.h, src/testdir/vim9.vim,
- src/testdir/test_vim9_disassemble.vim
+ src/testdir/test_vim9_disassemble.vim,
src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim
Patch 8.2.0819
@@ -5667,7 +5668,7 @@ Patch 8.2.0875
Problem: Getting attributes for directory entries is slow.
Solution: Add readdirex(). (Ken Takata, closes #5619)
Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c,
- src/fileio.c, src/filepath.c src/proto/fileio.pro,
+ src/fileio.c, src/filepath.c, src/proto/fileio.pro,
src/proto/filepath.pro, src/testdir/test_functions.vim
Patch 8.2.0876
@@ -6292,7 +6293,7 @@ Patch 8.2.0981
Problem: Vim9: cannot compile "[var, var] = list".
Solution: Implement list assignment.
Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/evalvars.c,
- src/proto/evalvars.pro src/eval.c, src/testdir/test_vim9_script.vim
+ src/proto/evalvars.pro, src/eval.c, src/testdir/test_vim9_script.vim
Patch 8.2.0982
Problem: Insufficient testing for reading/writing files.
@@ -6335,7 +6336,7 @@ Files: runtime/doc/eval.txt, runtime/doc/mlang.txt, src/auto/configure,
src/cmdexpand.c, src/config.h.in, src/configure.ac,
src/evalfunc.c, src/evalvars.c, src/ex_cmds2.c, src/fileio.c,
src/filepath.c, src/globals.h, src/proto/fileio.pro,
- src/testdir/test_cmdline.vim, src/testdir/test_functions.vim
+ src/testdir/test_cmdline.vim, src/testdir/test_functions.vim,
src/vim.h
Patch 8.2.0989
@@ -9545,7 +9546,7 @@ Patch 8.2.1518
Problem: Vim9: cannot assign to local option.
Solution: Skip over "&l:" and "&g:". (closes #6749)
Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/testdir/vim9.vim,
- src/vim9compile.c src/testdir/test_vim9_script.vim
+ src/vim9compile.c, src/testdir/test_vim9_script.vim
Patch 8.2.1519
Problem: Vim9: Ex command default range is not set.
@@ -11740,7 +11741,7 @@ Files: src/structs.h, src/ex_docmd.c, src/proto/ex_docmd.pro,
Patch 8.2.1898
Problem: Command modifier parsing always uses global cmdmod.
Solution: Pass in cmdmod_T to use. Rename struct fields consistently.
-Files: src/structs.h, src/arglist.c src/buffer.c, src/bufwrite.c,
+Files: src/structs.h, src/arglist.c, src/buffer.c, src/bufwrite.c,
src/diff.c, src/change.c, src/cmdhist.c, src/edit.c,
src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c,
src/fileio.c, src/filepath.c, src/gui.c, src/gui_gtk_x11.c,
@@ -13549,7 +13550,7 @@ Patch 8.2.2209
Problem: Vim9: return type of => lambda not parsed.
Solution: Parse and use the return type.
Files: src/vim9compile.c, src/userfunc.c, src/vim9type.c,
- src/proto/vim9type.pro, src/vim9script.c, src/eval.c
+ src/proto/vim9type.pro, src/vim9script.c, src/eval.c,
src/testdir/test_vim9_expr.vim
Patch 8.2.2210
@@ -13776,7 +13777,7 @@ Solution: Check the window still has lines. (Christian Brabandt,
Files: src/term.c
Patch 8.2.2249
-Problem: Termcodes test is flaky when used over ssh with X forwarding.
+Problem: Termcodes test is flaky when used over ssh with X forwarding.
Solution: Set 'mousetime' to a larger value. (Dominique Pellé, closes #7576,
closes #7563)
Files: src/testdir/test_termcodes.vim
@@ -15482,7 +15483,7 @@ Problem: Vim9: cannot use a range with :unlet.
Solution: Implement ISN_UNLETRANGE.
Files: src/errors.h, src/eval.c, src/evalvars.c, src/list.c,
src/proto/evalvars.pro, src/proto/list.pro, src/vim9.h,
- src/vim9compile.c, src/vim9execute.c
+ src/vim9compile.c, src/vim9execute.c,
src/testdir/test_vim9_assign.vim
Patch 8.2.2534
@@ -15518,7 +15519,7 @@ Problem: Vim9: return from finally block causes a hang.
Solution: Store both the finally and endtry indexes. (closes #7885)
Files: src/vim9execute.c, src/vim9compile.c, src/vim9.h,
src/testdir/test_vim9_script.vim,
-
+
Patch 8.2.2540
Problem: Vim9: no error for using script var name for argument.
Solution: Check for this error. (closes #7868)
@@ -17249,7 +17250,7 @@ Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim
Patch 8.2.2841
Problem: MS-Windows: cursor in wrong position when 'lazyredraw' and
- 'statusline' are set.
+ 'statusline' are set.
Solution: Call compute_cmdrow(). (closes #8170, closes #8184)
Files: src/os_win32.c
@@ -17936,7 +17937,7 @@ Patch 8.2.2957
Problem: Using getchar() in Vim9 script is problematic.
Solution: Add getcharstr(). (closes #8343)
Files: runtime/doc/eval.txt, src/evalfunc.c, src/getchar.c,
- src/proto/getchar.pro, src/testdir/test_getchar.vim
+ src/proto/getchar.pro, src/testdir/test_functions.vim
Patch 8.2.2958 (after 8.2.2957)
Problem: Function list test fails.
@@ -18849,7 +18850,7 @@ Solution: Use eval().
Files: src/testdir/check.vim
Patch 8.2.3110
-Problem: A pattern that matches the cursor position is bit complicated.
+Problem: A pattern that matches the cursor position is a bit complicated.
Solution: Use a dot to indicate the cursor line and column. (Christian
Brabandt, closes #8497, closes #8179)
Files: runtime/doc/pattern.txt, src/errors.h, src/regexp_bt.c,
@@ -18864,7 +18865,7 @@ Patch 8.2.3112 (after 8.2.3090)
Problem: With concealing enabled and indirectly closing a fold the cursor
may be somewhere in a folded line when it is not on the first line
of the fold.
-Solution: Check if he cursor is somewhere in the folded text.
+Solution: Check if the cursor is somewhere in the folded text.
Files: src/drawscreen.c
Patch 8.2.3113
@@ -23950,7 +23951,7 @@ Patch 8.2.3957
Problem: Error messages are spread out.
Solution: Move more errors to errors.h.
Files: src/errors.h, src/globals.h, src/arglist.c, src/bufwrite.c,
- src/evalvars.c, src/ex_cmds2.c, src/ex_docmd.c src/ex_eval.c,
+ src/evalvars.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c,
src/help.c, src/scriptfile.c, src/usercmd.c, src/userfunc.c,
src/vim9cmds.c, src/vim9compile.c
@@ -23975,7 +23976,7 @@ Files: src/errors.h, src/alloc.c, src/arglist.c, src/autocmd.c,
Patch 8.2.3961
Problem: Error messages are spread out.
Solution: Move more errors to errors.h.
-Files: src/errors.h, src/globals.h src/arglist.c, src/autocmd.c,
+Files: src/errors.h, src/globals.h, src/arglist.c, src/autocmd.c,
src/blob.c, src/bufwrite.c, src/channel.c, src/clipboard.c,
src/cmdexpand.c, src/debugger.c, src/dict.c, src/eval.c,
src/evalfunc.c, src/evalvars.c, src/evalwindow.c, src/ex_cmds.c,
@@ -24291,7 +24292,7 @@ Files: src/errors.h, src/channel.c, src/ex_docmd.c, src/ex_eval.c,
Patch 8.2.4004
Problem: Old compiler complains about struct init with variable.
-Solution: Set the struct member later. (John Marriott)
+Solution: Set the struct member later. (John Marriott)
Files: src/evalfunc.c
Patch 8.2.4005
@@ -24494,7 +24495,7 @@ Files: src/time.c
Patch 8.2.4036
Problem: Vim9: script test file is getting too long.
Solution: Split the import/export functionality to a separate file.
-Files: src/testdir/test_vim9_script.vim src/testdir/test_vim9_import.vim,
+Files: src/testdir/test_vim9_script.vim, src/testdir/test_vim9_import.vim,
src/testdir/Make_all.mak
Patch 8.2.4037
@@ -25457,7 +25458,7 @@ Patch 8.2.4202
Problem: Vim9: cannot export function that exists globally.
Solution: When checking if a function already exists only check for
script-local functions. (closes #9615)
-Files: src/userfunc.c, src/proto/userfunc.pro, src/vim.h,
+Files: src/userfunc.c, src/proto/userfunc.pro, src/vim.h,
src/vim9compile.c, src/vim9instr.c,
src/testdir/test_vim9_import.vim
@@ -25853,7 +25854,7 @@ Patch 8.2.4265 (after 8.2.4264)
Problem: Autoload tests fails.
Solution: Use export instead of name with #.
Files: src/testdir/sautest/autoload/auto9.vim,
- src/testdir/test_autoload.vim src/testdir/test_ins_complete.vim
+ src/testdir/test_autoload.vim, src/testdir/test_ins_complete.vim
Patch 8.2.4266
Problem: Compiler warning for uninitialized variable.
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 54e02aecb..f494880e2 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt* For Vim version 8.2. Last change: 2022 Mar 08
+*vim9.txt* For Vim version 8.2. Last change: 2022 Mar 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -995,6 +995,11 @@ The values can also be useful as the default value for an argument: >
if b == null_blob
# b argument was not given
+It is possible to compare `null` with any value, this will not give a type
+error. However, comparing `null` with a number, float or bool will always
+result in `false`. This is different from legacy script, where comparing
+`null` with zero or `false` would return `true`.
+
When converting a boolean to a string `false` and `true` are used, not
`v:false` and `v:true` like in legacy script. `v:none` has no `none`
replacement, it has no equivalent in other languages.
@@ -1234,6 +1239,11 @@ Closures defined in a loop will share the same context. For example: >
endfor
echo range(5)->map((i, _) => flist[i]())
# Result: [4, 4, 4, 4, 4]
+< *E1271*
+A closure must be compiled in the context that it is defined in, so that
+variables in that context can be found. This mostly happens correctly, except
+when a function is marked for debugging with `breakadd` after it was compiled.
+Make sure the define the breakpoint before compiling the outerh function.
The "inloop" variable will exist only once, all closures put in the list refer
to the same instance, which in the end will have the value 4. This is
@@ -1739,7 +1749,8 @@ actually needed. Using the autoload mechanism is recommended:
prefix is obtained from the file name, as you would to manually in a
legacy autoload script. Thus the exported function can be found with
"for#search#Stuff", but you would normally use `import autoload` and not
- use the prefix.
+ use the prefix (which has the side effect of loading the autoload script
+ when compiling a function that encounters this name).
You can split up the functionality and import other scripts from the
autoload script as you like. This way you can share code between plugins.
@@ -1751,7 +1762,17 @@ script context of where the mapping was defined.
When compiling a `:def` function and a function in an autoload script is
encountered, the script is not loaded until the `:def` function is called.
This also means you get any errors only at runtime, since the argument and
-return types are not known yet.
+return types are not known yet. If you would use the name with '#' characters
+then the autoload script IS loaded.
+
+Be careful to not refer to an item in an autoload script that does trigger
+loading it unintentionally. For example, when setting an option that takes a
+function name, make sure to use a string, not a function reference: >
+ import autoload 'qftf.vim'
+ &quickfixtextfunc = 'qftf.Func' # autoload script NOT loaded
+ &quickfixtextfunc = qftf.Func # autoload script IS loaded
+On the other hand, it can be useful to load the script early, at a time when
+any errors should be given.
For testing the |test_override()| function can be used to have the
`import autoload` load the script right away, so that the items and types can
diff --git a/runtime/ftplugin/liquid.vim b/runtime/ftplugin/liquid.vim
index b211a884c..f24ec4cbb 100644
--- a/runtime/ftplugin/liquid.vim
+++ b/runtime/ftplugin/liquid.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin
" Language: Liquid
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2010 May 21
+" Last Change: 2022 Mar 15
if exists('b:did_ftplugin')
finish
@@ -53,7 +53,7 @@ if has('gui_win32')
endif
if exists('loaded_matchit')
- let b:match_words .= '\<\%(if\w*\|unless\|case\)\>:\<\%(elsif\|else\|when\)\>:\<end\%(if\w*\|unless\|case\)\>,\<\%(for\|tablerow\)\>:\%({%\s*\)\@<=empty\>:\<end\%(for\|tablerow\)\>,<\(capture\|comment\|highlight\)\>:\<end\1\>'
+ let b:match_words .= '\<\%(if\w*\|unless\|case\)\>:\<\%(elsif\|else\|when\)\>:\<end\%(if\w*\|unless\|case\)\>,\<\%(for\|tablerow\)\>:\%({%\s*\)\@<=empty\>:\<end\%(for\|tablerow\)\>,\<\(capture\|comment\|highlight\)\>:\<end\1\>'
endif
setlocal commentstring={%\ comment\ %}%s{%\ endcomment\ %}
diff --git a/runtime/ftplugin/php.vim b/runtime/ftplugin/php.vim
index 3ff0828ff..2824a5853 100644
--- a/runtime/ftplugin/php.vim
+++ b/runtime/ftplugin/php.vim
@@ -73,10 +73,11 @@ exe 'nno <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
exe 'ono <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>'
exe 'ono <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>'
+setlocal suffixesadd=.php
setlocal commentstring=/*%s*/
" Undo the stuff we changed.
-let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" .
+let b:undo_ftplugin = "setlocal suffixesadd< commentstring< include< omnifunc<" .
\ " | unlet! b:browsefilter b:match_words | " .
\ s:undo_ftplugin
diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop
index 2fc06c2f5..3c5ff1ce4 100644
--- a/runtime/gvim.desktop
+++ b/runtime/gvim.desktop
@@ -2,6 +2,7 @@
# Edit the src/po/gvim.desktop.in file instead.
[Desktop Entry]
# Translators: This is the Application Name used in the GVim desktop file
+Name[ca]=GVim
Name[de]=GVim
Name[eo]=GVim
Name[fi]=GVim
@@ -13,6 +14,7 @@ Name[sr]=GVim
Name[tr]=GVim
Name=GVim
# Translators: This is the Generic Application Name used in the Vim desktop file
+GenericName[ca]=Editor de text
GenericName[de]=Texteditor
GenericName[eo]=Tekstoredaktilo
GenericName[fi]=Tekstinmuokkain
@@ -25,6 +27,7 @@ GenericName[sr]=Едитор текст
GenericName[tr]=Metin Düzenleyici
GenericName=Text Editor
# Translators: This is the comment used in the Vim desktop file
+Comment[ca]=Edita fitxers de text
Comment[de]=Textdateien bearbeiten
Comment[eo]=Redakti tekstajn dosierojn
Comment[fi]=Muokkaa tekstitiedostoja
@@ -49,7 +52,6 @@ Comment[be]=Рэдагаваньне тэкставых файлаў
Comment[bg]=Редактиране на текстови файлове
Comment[bn]=টেক্স্ট ফাইল এডিট করুন
Comment[bs]=Izmijeni tekstualne datoteke
-Comment[ca]=Edita fitxers de text
Comment[cs]=Úprava textových souborů
Comment[cy]=Golygu ffeiliau testun
Comment[da]=Rediger tekstfiler
@@ -105,6 +107,7 @@ Exec=gvim -f %F
Terminal=false
Type=Application
# Translators: Search terms to find this application. Do NOT change the semicolons! The list MUST also end with a semicolon!
+Keywords[ca]=Text;editor;
Keywords[de]=Text;Editor;
Keywords[eo]=Teksto;redaktilo;
Keywords[fi]=Teksti;muokkain;editori;
diff --git a/runtime/indent/bst.vim b/runtime/indent/bst.vim
index 47e305881..3dd8d711a 100644
--- a/runtime/indent/bst.vim
+++ b/runtime/indent/bst.vim
@@ -1,20 +1,18 @@
" Vim indent file
" Language: bst
" Author: Tim Pope <vimNOSPAM@tpope.info>
-" $Id: bst.vim,v 1.1 2007/05/05 18:11:12 vimboss Exp $
+" Last Change: 2022 Mar 15
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
-setlocal expandtab
setlocal indentexpr=GetBstIndent(v:lnum)
-"setlocal smartindent
setlocal cinkeys&
setlocal cinkeys-=0#
setlocal indentkeys&
-"setlocal indentkeys+=0%
+let b:undo_indent = 'setlocal indentexpr< cinkeys< indentkeys<'
" Only define the function once.
if exists("*GetBstIndent")
diff --git a/runtime/indent/haml.vim b/runtime/indent/haml.vim
index baca1d49d..acd99d9c7 100644
--- a/runtime/indent/haml.vim
+++ b/runtime/indent/haml.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2019 Dec 05
+" Last Change: 2022 Mar 15
if exists("b:did_indent")
finish
@@ -14,6 +14,8 @@ setlocal autoindent
setlocal indentexpr=GetHamlIndent()
setlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when
+let b:undo_indent = "setl ai< inde< indk<"
+
" Only define the function once.
if exists("*GetHamlIndent")
finish
diff --git a/runtime/indent/liquid.vim b/runtime/indent/liquid.vim
index 7beb0388d..6fc933797 100644
--- a/runtime/indent/liquid.vim
+++ b/runtime/indent/liquid.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Liquid
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2017 Jun 13
+" Last Change: 2022 Mar 15
if exists('b:did_indent')
finish
@@ -29,17 +29,19 @@ let b:did_indent = 1
setlocal indentexpr=GetLiquidIndent()
setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=endif,=endunless,=endifchanged,=endcase,=endfor,=endtablerow,=endcapture,=else,=elsif,=when,=empty
+let b:undo_indent = "setl inde< indk<"
+
" Only define the function once.
if exists('*GetLiquidIndent')
finish
endif
-function! s:count(string,pattern)
+function! s:count(string, pattern) abort
let string = substitute(a:string,'\C'.a:pattern,"\n",'g')
return strlen(substitute(string,"[^\n]",'','g'))
endfunction
-function! GetLiquidIndent(...)
+function! GetLiquidIndent(...) abort
if a:0 && a:1 == '.'
let v:lnum = line('.')
elseif a:0 && a:1 =~ '^\d'
@@ -51,13 +53,14 @@ function! GetLiquidIndent(...)
let lnum = prevnonblank(v:lnum-1)
let line = getline(lnum)
let cline = getline(v:lnum)
- let line = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
- let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
- let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
+ let line = substitute(line,'\C^\%(\s*{%-\=\s*end\w*\s*-\=%}\)\+','','')
+ let line = substitute(line,'\C\%(\s*{%-\=\s*if.\+-\=%}.\+{%-\=\s*endif\s*-\=%}\)\+','','g')
+ let line .= matchstr(cline,'\C^\%(\s*{%-\=\s*end\w*\s*-\=%}\)\+')
+ let cline = substitute(cline,'\C^\%(\s*{%-\=\s*end\w*\s*-\=%}\)\+','','')
let sw = shiftwidth()
- let ind += sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
- let ind -= sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
- let ind -= sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
- let ind -= sw * s:count(cline,'{%\s*end\w*$')
+ let ind += sw * s:count(line,'{%-\=\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
+ let ind -= sw * s:count(line,'{%-\=\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
+ let ind -= sw * s:count(cline,'{%-\=\s*\%(elsif\|else\|when\|empty\)\>')
+ let ind -= sw * s:count(cline,'{%-\=\s*end\w*$')
return ind
endfunction
diff --git a/runtime/indent/sass.vim b/runtime/indent/sass.vim
index d6dbf3a8b..8c0ecd074 100644
--- a/runtime/indent/sass.vim
+++ b/runtime/indent/sass.vim
@@ -1,7 +1,7 @@
" Vim indent file
" Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
-" Last Change: 2017 Jun 13
+" Last Change: 2022 Mar 15
if exists("b:did_indent")
finish
@@ -12,6 +12,8 @@ setlocal autoindent sw=2 et
setlocal indentexpr=GetSassIndent()
setlocal indentkeys=o,O,*<Return>,<:>,!^F
+let b:undo_indent = "setl ai< inde< indk<"
+
" Only define the function once.
if exists("*GetSassIndent")
finish
diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
index bde9140f9..00a9ca97b 100644
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -4,10 +4,11 @@
" Copyright: Vim license applies, see ":help license"
" Last Change: 2022 Jan 17
"
-" WORK IN PROGRESS - Only the basics work
-" Note: On MS-Windows you need a recent version of gdb. The one included with
-" MingW is too old (7.6.1).
-" I used version 7.12 from http://www.equation.com/servlet/equation.cmd?fa=gdb
+" WORK IN PROGRESS - The basics works stable, more to come
+" Note: In general you need at least GDB 7.12 because this provides the
+" frame= response in MI thread-selected events we need to sync stack to file.
+" The one included with "old" MingW is too old (7.6.1), you may upgrade it or
+" use a newer version from http://www.equation.com/servlet/equation.cmd?fa=gdb
"
" There are two ways to run gdb:
" - In a terminal window; used if possible, does not work on MS-Windows
@@ -313,7 +314,7 @@ func s:StartDebug_term(dict)
let response = line1 . line2
if response =~ 'Undefined command'
echoerr 'Sorry, your gdb is too old, gdb 7.12 is required'
- " CHECKME: possibly send a "server show version" here
+ " CHECKME: possibly send a "server show version" here
call s:CloseBuffers()
return
endif
@@ -396,7 +397,7 @@ func s:StartDebug_prompt(dict)
endif
" Mark the buffer modified so that it's not easy to close.
set modified
- let s:gdb_channel = job_getchannel(s:gdbjob)
+ let s:gdb_channel = job_getchannel(s:gdbjob)
let s:ptybuf = 0
if has('win32')
@@ -662,8 +663,8 @@ func s:EndDebugCommon()
if bufexists(bufnr)
exe bufnr .. "buf"
if exists('b:save_signcolumn')
- let &signcolumn = b:save_signcolumn
- unlet b:save_signcolumn
+ let &signcolumn = b:save_signcolumn
+ unlet b:save_signcolumn
endif
endif
endfor
@@ -739,8 +740,8 @@ func s:HandleDisasmMsg(msg)
let lnum = search('^' . s:asm_addr)
if lnum != 0
- exe 'sign unplace ' . s:asm_id
- exe 'sign place ' . s:asm_id . ' line=' . lnum . ' name=debugPC'
+ exe 'sign unplace ' . s:asm_id
+ exe 'sign place ' . s:asm_id . ' line=' . lnum . ' name=debugPC'
endif
call win_gotoid(curwinid)
@@ -789,22 +790,22 @@ func s:CommOutput(chan, msg)
call s:HandleDisasmMsg(msg)
elseif msg != ''
if msg =~ '^\(\*stopped\|\*running\|=thread-selected\)'
- call s:HandleCursor(msg)
+ call s:HandleCursor(msg)
elseif msg =~ '^\^done,bkpt=' || msg =~ '^=breakpoint-created,'
call s:HandleNewBreakpoint(msg, 0)
elseif msg =~ '^=breakpoint-modified,'
call s:HandleNewBreakpoint(msg, 1)
elseif msg =~ '^=breakpoint-deleted,'
- call s:HandleBreakpointDelete(msg)
+ call s:HandleBreakpointDelete(msg)
elseif msg =~ '^=thread-group-started'
- call s:HandleProgramRun(msg)
+ call s:HandleProgramRun(msg)
elseif msg =~ '^\^done,value='
- call s:HandleEvaluate(msg)
+ call s:HandleEvaluate(msg)
elseif msg =~ '^\^error,msg='
- call s:HandleError(msg)
+ call s:HandleError(msg)
elseif msg =~ '^disassemble'
- let s:parsing_disasm_msg = 1
- let s:asm_lines = []
+ let s:parsing_disasm_msg = 1
+ let s:asm_lines = []
endif
endif
endfor
@@ -986,22 +987,22 @@ func s:ClearBreakpoint()
let nr = 0
for id in s:breakpoint_locations[bploc]
if has_key(s:breakpoints, id)
- " Assume this always works, the reply is simply "^done".
- call s:SendCommand('-break-delete ' . id)
- for subid in keys(s:breakpoints[id])
- exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
- endfor
- unlet s:breakpoints[id]
- unlet s:breakpoint_locations[bploc][idx]
- let nr = id
- break
+ " Assume this always works, the reply is simply "^done".
+ call s:SendCommand('-break-delete ' . id)
+ for subid in keys(s:breakpoints[id])
+ exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
+ endfor
+ unlet s:breakpoints[id]
+ unlet s:breakpoint_locations[bploc][idx]
+ let nr = id
+ break
else
- let idx += 1
+ let idx += 1
endif
endfor
if nr != 0
if empty(s:breakpoint_locations[bploc])
- unlet s:breakpoint_locations[bploc]
+ unlet s:breakpoint_locations[bploc]
endif
echomsg 'Breakpoint ' . id . ' cleared from line ' . lnum . '.'
else
@@ -1027,7 +1028,7 @@ func s:SendEval(expr)
" remove text that is likely an assignment
let exprLHS = substitute(a:expr, ' *=.*', '', '')
endif
-
+
" encoding expression to prevent bad errors
let expr = a:expr
let expr = substitute(expr, '\\', '\\\\', 'g')
@@ -1036,14 +1037,14 @@ func s:SendEval(expr)
let s:evalexpr = exprLHS
endfunc
-" :Evaluate - evaluate what is specified / under the cursor
+" :Evaluate - evaluate what is specified / under the cursor
func s:Evaluate(range, arg)
let expr = s:GetEvaluationExpression(a:range, a:arg)
let s:ignoreEvalError = 0
call s:SendEval(expr)
endfunc
-" get what is specified / under the cursor
+" get what is specified / under the cursor
func s:GetEvaluationExpression(range, arg)
if a:arg != ''
" user supplied evaluation
@@ -1192,7 +1193,7 @@ func s:GotoAsmwinOrCreateIt()
if exists('g:termdebug_disasm_window')
if g:termdebug_disasm_window > 1
- exe 'resize ' . g:termdebug_disasm_window
+ exe 'resize ' . g:termdebug_disasm_window
endif
endif
endif
@@ -1201,7 +1202,7 @@ func s:GotoAsmwinOrCreateIt()
let lnum = search('^' . s:asm_addr)
if lnum == 0
if s:stopped
- call s:SendCommand('disassemble $pc')
+ call s:SendCommand('disassemble $pc')
endif
else
exe 'sign unplace ' . s:asm_id
@@ -1236,15 +1237,15 @@ func s:HandleCursor(msg)
let curwinid = win_getid(winnr())
if win_gotoid(s:asmwin)
- let lnum = search('^' . s:asm_addr)
- if lnum == 0
- call s:SendCommand('disassemble $pc')
- else
- exe 'sign unplace ' . s:asm_id
- exe 'sign place ' . s:asm_id . ' line=' . lnum . ' name=debugPC'
- endif
-
- call win_gotoid(curwinid)
+ let lnum = search('^' . s:asm_addr)
+ if lnum == 0
+ call s:SendCommand('disassemble $pc')
+ else
+ exe 'sign unplace ' . s:asm_id
+ exe 'sign place ' . s:asm_id . ' line=' . lnum . ' name=debugPC'
+ endif
+
+ call win_gotoid(curwinid)
endif
endif
endif
@@ -1263,26 +1264,26 @@ echomsg 'different fname: "' .. expand('%:p') .. '" vs "' .. fnamemodify(fname,
\ | echo 'Warning: file is being edited elsewhere'
\ | echohl None
\ | let v:swapchoice = '0'
- augroup END
- if &modified
- " TODO: find existing window
- exe 'split ' . fnameescape(fname)
- let s:sourcewin = win_getid(winnr())
- call s:InstallWinbar()
- else
- exe 'edit ' . fnameescape(fname)
- endif
- augroup Termdebug
- au! SwapExists
- augroup END
+ augroup END
+ if &modified
+ " TODO: find existing window
+ exe 'split ' . fnameescape(fname)
+ let s:sourcewin = win_getid(winnr())
+ call s:InstallWinbar()
+ else
+ exe 'edit ' . fnameescape(fname)
+ endif
+ augroup Termdebug
+ au! SwapExists
+ augroup END
endif
exe lnum
normal! zv
exe 'sign unplace ' . s:pc_id
exe 'sign place ' . s:pc_id . ' line=' . lnum . ' name=debugPC priority=110 file=' . fname
if !exists('b:save_signcolumn')
- let b:save_signcolumn = &signcolumn
- call add(s:signcolumn_buflist, bufnr())
+ let b:save_signcolumn = &signcolumn
+ call add(s:signcolumn_buflist, bufnr())
endif
setlocal signcolumn=yes
endif
@@ -1396,8 +1397,8 @@ func s:HandleBreakpointDelete(msg)
if has_key(s:breakpoints, id)
for [subid, entry] in items(s:breakpoints[id])
if has_key(entry, 'placed')
- exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
- unlet entry['placed']
+ exe 'sign unplace ' . s:Breakpoint2SignNumber(id, subid)
+ unlet entry['placed']
endif
endfor
unlet s:breakpoints[id]
@@ -1422,7 +1423,7 @@ func s:BufRead()
for [id, entries] in items(s:breakpoints)
for [subid, entry] in items(entries)
if entry['fname'] == fname
- call s:PlaceSign(id, subid, entry)
+ call s:PlaceSign(id, subid, entry)
endif
endfor
endfor
@@ -1434,7 +1435,7 @@ func s:BufUnloaded()
for [id, entries] in items(s:breakpoints)
for [subid, entry] in items(entries)
if entry['fname'] == fname
- let entry['placed'] = 0
+ let entry['placed'] = 0
endif
endfor
endfor
diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim
index e86e1b866..2dc21f0b6 100644
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2021 Dec 07
+" Last Change: 2022 Mar 17
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -245,8 +245,14 @@ syn match cWrongComTail display "\*/"
syn keyword cOperator sizeof
if exists("c_gnu")
+ syn keyword cType __label__ __complex__
syn keyword cStatement __asm__
- syn keyword cOperator typeof __real__ __imag__
+ syn keyword cOperator __alignof__
+ syn keyword cOperator typeof __typeof__
+ syn keyword cOperator __real__ __imag__
+ syn keyword cStorageClass __attribute__ __const__ __extension__
+ syn keyword cStorageClass inline __inline__
+ syn keyword cStorageClass __restrict__ __volatile__ __noreturn__
endif
syn keyword cType int long short char void
syn keyword cType signed unsigned float double
@@ -270,16 +276,10 @@ if !exists("c_no_c99") " ISO C99
syn keyword cType intptr_t uintptr_t
syn keyword cType intmax_t uintmax_t
endif
-if exists("c_gnu")
- syn keyword cType __label__ __complex__ __volatile__
-endif
syn keyword cTypedef typedef
syn keyword cStructure struct union enum
syn keyword cStorageClass static register auto volatile extern const
-if exists("c_gnu")
- syn keyword cStorageClass inline __attribute__
-endif
if !exists("c_no_c99") && !s:in_cpp_family
syn keyword cStorageClass inline restrict
endif
@@ -292,6 +292,7 @@ if !exists("c_no_c11")
syn keyword cOperator _Static_assert static_assert
syn keyword cStorageClass _Thread_local thread_local
syn keyword cType char16_t char32_t
+ syn keyword cType max_align_t
" C11 atomics (take down the shield wall!)
syn keyword cType atomic_bool atomic_char atomic_schar atomic_uchar
syn keyword Ctype atomic_short atomic_ushort atomic_int atomic_uint
diff --git a/runtime/syntax/liquid.vim b/runtime/syntax/liquid.vim
index 295a91775..966b60f6f 100644
--- a/runtime/syntax/liquid.vim
+++ b/runtime/syntax/liquid.vim
@@ -2,7 +2,7 @@
" Language: Liquid
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.liquid
-" Last Change: 2013 May 30
+" Last Change: 2022 Mar 15
if exists('b:current_syntax')
finish
@@ -68,10 +68,10 @@ if !exists('s:subtype')
unlet s:subtype
endif
-syn region liquidStatement matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend
-syn region liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend
-syn region liquidComment matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend
-syn region liquidRaw matchgroup=liquidDelimiter start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend
+syn region liquidStatement matchgroup=liquidDelimiter start="{%-\=" end="-\=%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend
+syn region liquidExpression matchgroup=liquidDelimiter start="{{-\=" end="-\=}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend
+syn region liquidComment matchgroup=liquidDelimiter start="{%-\=\s*comment\s*-\=%}" end="{%-\=\s*endcomment\s*-\=%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend
+syn region liquidRaw matchgroup=liquidDelimiter start="{%-\=\s*raw\s*-\=%}" end="{%-\=\s*endraw\s*-\=%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend
syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead
syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression
@@ -79,11 +79,11 @@ syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,l
syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained
syn keyword liquidKeyword endhighlight contained
-syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend
+syn region liquidHighlight start="{%-\=\s*highlight\s\+\w\+\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend
for s:type in g:liquid_highlight_types
exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained'
- exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
+ exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%-\=\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
endfor
unlet! s:type
@@ -92,18 +92,18 @@ syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained
syn match liquidNumber "-\=\<\d\+\>" contained
syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained
syn keyword liquidBoolean true false contained
-syn keyword liquidNull null nil contained
+syn keyword liquidNull null nil blank contained
syn match liquidEmpty "\<empty\>" contained
syn keyword liquidOperator and or not contained
syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter
-syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained
+syn keyword liquidFilter date capitalize downcase upcase escape escape_once first last join sort size where uniq strip_html strip_newlines newline_to_br replace replace_first remove remove_first slice split strip truncate truncatewords prepend append url_encode url_decode abs at_most at_least ceil divided_by floor minus plus round times modulo contained
syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained
-syn keyword liquidRepeat for endfor tablerow endtablerow in contained
-syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained
-syn keyword liquidKeyword assign cycle include with contained
+syn keyword liquidRepeat for endfor tablerow endtablerow in break continue limit offset reversed contained
+syn match liquidRepeat "\%({%-\=\s*\)\@<=empty\>" contained
+syn keyword liquidKeyword assign capture endcapture increasement decreasement cycle include with render contained
syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained
syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained
diff --git a/runtime/syntax/sass.vim b/runtime/syntax/sass.vim
index b51a0ae26..8f41aba4f 100644
--- a/runtime/syntax/sass.vim
+++ b/runtime/syntax/sass.vim
@@ -2,7 +2,7 @@
" Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.sass
-" Last Change: 2019 Dec 05
+" Last Change: 2022 Mar 15
if exists("b:current_syntax")
finish
@@ -58,6 +58,7 @@ syn match sassAmpersand "&"
" TODO: Arithmetic (including strings and concatenation)
syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators
+syn region sassKeyframe matchgroup=cssAtKeyword start=/@\(-[a-z]\+-\)\=keyframes\>/ end=";\|$" contains=cssVendor,cssComment nextgroup=cssDefinition
syn keyword sassMediaOperators and not only contained
syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index e42c270e9..dfa5e43ab 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 8.2 script
" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
-" Last Change: February 09, 2022
-" Version: 8.2-28
+" Last Change: March 14, 2022
+" Version: 8.2-29
" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
" Automatically generated keyword lists: {{{1
@@ -19,12 +19,13 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
-syn keyword vimCommand contained a ar[gs] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec elsei[f] endt[ry] exp filetype fix[del] for gui helpg[rep] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wn[ext] wv[iminfo] xmenu xunme
-syn keyword vimCommand contained ab arga[dd] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] em[enu] endw[hile] export filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wp[revious] x[it] xnoreme xunmenu
-syn keyword vimCommand contained abc[lear] argd[elete] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] en[dif] ene[w] exu[sage] fin[d] foldc[lose] g h[elp] hi if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wq xa[ll] xnoremenu xwininfo
-syn keyword vimCommand contained abo[veleft] argded[upe] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] enddef eval f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wqa[ll] xmapc[lear] xprop y[ank]
-syn keyword vimCommand contained addd argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon endf[unction] ex files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wundo xme xr[estore] z[^.=]
-syn keyword vimCommand contained al[l] arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier el[se] endfo[r] exi[t] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll]
+syn keyword vimCommand contained a ar[gs] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec elsei[f] endf[unction] enum exu[sage] fin[d] foldc[lose] g h[elp] hi if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vne[w] win[size] wq xmapc[lear] xr[estore]
+syn keyword vimCommand contained ab arga[dd] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] em[enu] endfo[r] eval f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vs[plit] winc[md] wqa[ll] xme xunme
+syn keyword vimCommand contained abc[lear] argd[elete] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] en[dif] endinterface ex files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] wN[ext] windo wundo xmenu xunmenu
+syn keyword vimCommand contained abo[veleft] argded[upe] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] endclass endt[ry] exi[t] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp static sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] w[rite] winp[os] wv[iminfo] xnoreme xwininfo
+syn keyword vimCommand contained abstract argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon enddef endw[hile] exp filetype fix[del] for gui helpg[rep] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] wa[ll] wn[ext] x[it] xnoremenu y[ank]
+syn keyword vimCommand contained addd arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier el[se] endenum ene[w] export filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] wh[ile] wp[revious] xa[ll] xprop z[^.=]
+syn keyword vimCommand contained al[l]
syn match vimCommand contained "\<z[-+^.=]\=\>"
syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Winbar XMLent XMLns
diff --git a/runtime/tools/demoserver.py b/runtime/tools/demoserver.py
index 150ddbee7..2667aed39 100644
--- a/runtime/tools/demoserver.py
+++ b/runtime/tools/demoserver.py
@@ -44,9 +44,6 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
except socket.error:
print("=== socket error ===")
break
- except IOError:
- print("=== socket closed ===")
- break
if data == '':
print("=== socket closed ===")
break
diff --git a/runtime/vim.desktop b/runtime/vim.desktop
index 2d6e7c110..cd3bdef9b 100644
--- a/runtime/vim.desktop
+++ b/runtime/vim.desktop
@@ -2,6 +2,7 @@
# Edit the src/po/vim.desktop.in file instead.
[Desktop Entry]
# Translators: This is the Application Name used in the Vim desktop file
+Name[ca]=Vim
Name[de]=Vim
Name[eo]=Vim
Name[fi]=Vim
@@ -13,6 +14,7 @@ Name[sr]=Vim
Name[tr]=Vim
Name=Vim
# Translators: This is the Generic Application Name used in the Vim desktop file
+GenericName[ca]=Editor de text
GenericName[de]=Texteditor
GenericName[eo]=Tekstoredaktilo
GenericName[fi]=Tekstinmuokkain
@@ -25,6 +27,7 @@ GenericName[sr]=Едитор текст
GenericName[tr]=Metin Düzenleyici
GenericName=Text Editor
# Translators: This is the comment used in the Vim desktop file
+Comment[ca]=Edita fitxers de text
Comment[de]=Textdateien bearbeiten
Comment[eo]=Redakti tekstajn dosierojn
Comment[fi]=Muokkaa tekstitiedostoja
@@ -49,7 +52,6 @@ Comment[be]=Рэдагаваньне тэкставых файлаў
Comment[bg]=Редактиране на текстови файлове
Comment[bn]=টেক্স্ট ফাইল এডিট করুন
Comment[bs]=Izmijeni tekstualne datoteke
-Comment[ca]=Edita fitxers de text
Comment[cs]=Úprava textových souborů
Comment[cy]=Golygu ffeiliau testun
Comment[da]=Rediger tekstfiler
@@ -105,6 +107,7 @@ Exec=vim %F
Terminal=true
Type=Application
# Translators: Search terms to find this application. Do NOT change the semicolons! The list MUST also end with a semicolon!
+Keywords[ca]=Text;editor;
Keywords[de]=Text;Editor;
Keywords[eo]=Teksto;redaktilo;
Keywords[fi]=Teksti;muokkain;editori;