summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-06-13 19:02:49 +0200
committerBram Moolenaar <Bram@vim.org>2021-06-13 19:02:49 +0200
commit2346a6378483c9871016f9fc821ec5cbea638f13 (patch)
tree5614d11853110f5e417ca81600e036abde1c309b
parent4ee9d8e04daa97a3d0a19d7d2eed76b7721301e6 (diff)
downloadvim-git-2346a6378483c9871016f9fc821ec5cbea638f13.tar.gz
Update runtime files
-rw-r--r--runtime/doc/autocmd.txt2
-rw-r--r--runtime/doc/change.txt2
-rw-r--r--runtime/doc/eval.txt32
-rw-r--r--runtime/doc/filetype.txt2
-rw-r--r--runtime/doc/ft_raku.txt2
-rw-r--r--runtime/doc/help.txt5
-rw-r--r--runtime/doc/motion.txt9
-rw-r--r--runtime/doc/options.txt2
-rw-r--r--runtime/doc/os_vms.txt6
-rw-r--r--runtime/doc/pattern.txt2
-rw-r--r--runtime/doc/pi_netrw.txt2
-rw-r--r--runtime/doc/repeat.txt8
-rw-r--r--runtime/doc/syntax.txt10
-rw-r--r--runtime/doc/tags8
-rw-r--r--runtime/doc/term.txt4
-rw-r--r--runtime/doc/todo.txt65
-rw-r--r--runtime/doc/usr_41.txt2
-rw-r--r--runtime/doc/various.txt2
-rw-r--r--runtime/doc/vim.12
-rw-r--r--runtime/doc/vim.man6
-rw-r--r--runtime/doc/vim9.txt10
-rw-r--r--runtime/doc/vimdiff.16
-rw-r--r--runtime/doc/vimdiff.man19
-rw-r--r--runtime/filetype.vim2
-rw-r--r--runtime/gvim.desktop1
-rw-r--r--runtime/indent/html.vim63
-rw-r--r--runtime/syntax/gvpr.vim85
-rw-r--r--runtime/vim.desktop1
-rw-r--r--src/INSTALLpc.txt3
-rw-r--r--src/po/sr.po221
30 files changed, 399 insertions, 185 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 4536d5b3e..5f1231ccb 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -54,7 +54,7 @@ effects. Be careful not to destroy your text.
:au[tocmd] [group] {event} {pat} [++once] [++nested] {cmd}
Add {cmd} to the list of commands that Vim will
execute automatically on {event} for a file matching
- {pat} |autocmd-patterns|.
+ {pat} |autocmd-patterns|.
Here {event} cannot be "*". *E1155*
Note: A quote character is seen as argument to the
:autocmd and won't start a comment.
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 6c6a0c9bd..62a69b78f 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 8.2. Last change: 2021 Mar 01
+*change.txt* For Vim version 8.2. Last change: 2021 Jun 10
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 97585ad6c..fdc63eaa3 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 8.2. Last change: 2021 May 07
+*eval.txt* For Vim version 8.2. Last change: 2021 Jun 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -2102,7 +2102,7 @@ v:null An empty String. Used to put "null" in JSON. See
v:numbermax Maximum value of a number.
*v:numbermin* *numbermin-variable*
-v:numbermin Minimum value of a number (negative)
+v:numbermin Minimum value of a number (negative).
*v:numbersize* *numbersize-variable*
v:numbersize Number of bits in a Number. This is normally 64, but on some
@@ -2508,7 +2508,7 @@ char2nr({expr} [, {utf8}]) Number ASCII/UTF8 value of first char in {expr}
charclass({string}) Number character class of {string}
charcol({expr}) Number column number of cursor or mark
charidx({string}, {idx} [, {countcc}])
- Number char index of byte {idx} in {string}
+ Number char index of byte {idx} in {string}
chdir({dir}) String change current working directory
cindent({lnum}) Number C indent for line {lnum}
clearmatches([{win}]) none clear all matches
@@ -2529,7 +2529,7 @@ cscope_connection([{num}, {dbpath} [, {prepend}]])
cursor({lnum}, {col} [, {off}])
Number move cursor to {lnum}, {col}, {off}
cursor({list}) Number move cursor to position in {list}
-debugbreak({pid}) Number interrupt process being debugged
+debugbreak({pid}) Number interrupt process being debugged
deepcopy({expr} [, {noref}]) any make a full copy of {expr}
delete({fname} [, {flags}]) Number delete the file or directory {fname}
deletebufline({expr}, {first} [, {last}])
@@ -4951,7 +4951,7 @@ funcref({name} [, {arglist}] [, {dict}])
Can also be used as a |method|: >
GetFuncname()->funcref([arg])
<
- *function()* *E700* *E922* *E923*
+ *function()* *partial* *E700* *E922* *E923*
function({name} [, {arglist}] [, {dict}])
Return a |Funcref| variable that refers to function {name}.
{name} can be the name of a user defined function or an
@@ -5500,8 +5500,8 @@ getcurpos([{winid}])
Can also be used as a |method|: >
GetWinid()->getcurpos()
-
-< *getcursorcharpos()*
+<
+ *getcursorcharpos()*
getcursorcharpos([{winid}])
Same as |getcurpos()| but the column number in the returned
List is a character index instead of a byte index.
@@ -5510,8 +5510,8 @@ getcursorcharpos([{winid}])
With the cursor on '보' in line 3 with text "여보세요": >
getcursorcharpos() returns [0, 3, 2, 0, 3]
getcurpos() returns [0, 3, 4, 0, 3]
-
-< Can also be used as a |method|: >
+<
+ Can also be used as a |method|: >
GetWinid()->getcursorcharpos()
< *getcwd()*
@@ -5736,11 +5736,11 @@ getmarklist([{expr}]) *getmarklist()*
see |bufname()|.
Each item in the returned List is a |Dict| with the following:
- name - name of the mark prefixed by "'"
- pos - a |List| with the position of the mark:
+ mark name of the mark prefixed by "'"
+ pos a |List| with the position of the mark:
[bufnum, lnum, col, off]
- Refer to |getpos()| for more information.
- file - file name
+ Refer to |getpos()| for more information.
+ file file name
Refer to |getpos()| for getting information about a specific
mark.
@@ -5822,7 +5822,7 @@ getpos({expr}) Get the position for {expr}. For possible values of {expr}
'> is a large number.
The column number in the returned List is the byte position
within the line. To get the character position in the line,
- use |getcharpos()|
+ use |getcharpos()|.
The column number can be very large, e.g. 2147483647, in which
case it means "after the end of the line".
This can be used to save and restore the position of a mark: >
@@ -7637,7 +7637,7 @@ matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
Same as |matchfuzzy()|, but returns the list of matched
strings, the list of character positions where characters
in {str} matches and a list of matching scores. You can
- use |byteidx()|to convert a character position to a byte
+ use |byteidx()| to convert a character position to a byte
position.
If {str} matches multiple times in a string, then only the
@@ -9961,7 +9961,7 @@ sinh({expr}) *sinh()*
{only available when compiled with the |+float| feature}
-slice({expr}, {start} [, {end}]) *slice()*
+slice({expr}, {start} [, {end}]) *slice()*
Similar to using a |slice| "expr[start : end]", but "end" is
used exclusive. And for a string the indexes are used as
character indexes instead of byte indexes, like in
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index 318507c16..8295d6778 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -632,7 +632,7 @@ For fish, add to the config file
MARKDOWN *ft-markdown-plugin*
To enable folding use this: >
- let g:markdown_folding = 1
+ let g:markdown_folding = 1
<
PDF *ft-pdf-plugin*
diff --git a/runtime/doc/ft_raku.txt b/runtime/doc/ft_raku.txt
index 26ada8a14..8439de572 100644
--- a/runtime/doc/ft_raku.txt
+++ b/runtime/doc/ft_raku.txt
@@ -45,7 +45,7 @@ Numbers, subscripts and superscripts are available with 's' and 'S':
1s ₁ 1S ¹ ~
2s ₂ 9S ⁹ ~
-But some don´t come defined by default. Those are digraph definitions you can
+But some don't come defined by default. Those are digraph definitions you can
add in your ~/.vimrc file. >
exec 'digraph \\ '.char2nr('∖')
exec 'digraph \< '.char2nr('≼')
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index 1b3839edc..f5c3e6d98 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -132,7 +132,7 @@ Advanced editing ~
|windows.txt| commands for using multiple windows and buffers
|tabpage.txt| commands for using multiple tab pages
|spell.txt| spell checking
-|diff.txt| working with two to four versions of the same file
+|diff.txt| working with two to eight versions of the same file
|autocmd.txt| automatically executing commands on an event
|eval.txt| expression evaluation, conditional commands
|channel.txt| Jobs, Channels, inter-process communication
@@ -145,6 +145,7 @@ Special issues ~
|term.txt| using different terminals and mice
|terminal.txt| Terminal window support
|popup.txt| popup window support
+|vim9.txt| using Vim9 script
Programming language support ~
|indent.txt| automatic indenting for C and other languages
@@ -153,6 +154,8 @@ Programming language support ~
|filetype.txt| settings done specifically for a type of file
|quickfix.txt| commands for a quick edit-compile-fix cycle
|ft_ada.txt| Ada (the programming language) support
+|ft_ps1.txt| Filetype plugin for Windows PowerShell
+|ft_raku.txt| Filetype plugin for Raku
|ft_rust.txt| Filetype plugin for Rust
|ft_sql.txt| about the SQL filetype plugin
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 4dc0e2e28..a8ae19c44 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt* For Vim version 8.2. Last change: 2021 Mar 28
+*motion.txt* For Vim version 8.2. Last change: 2021 Jun 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -59,9 +59,14 @@ or change text. The following operators are available:
|<| < shift left
|zf| zf define a fold
|g@| g@ call function set with the 'operatorfunc' option
-
+ *motion-count-multiplied*
If the motion includes a count and the operator also had a count before it,
the two counts are multiplied. For example: "2d3w" deletes six words.
+ *operator-doubled*
+When doubling the operator it operates on a line. When using a count, before
+or after the first character, that many lines are operated upon. Thus `3dd`
+deletes three lines. A count before and after the first character is
+multiplied, thus `2y3y` yanks six lines.
After applying the operator the cursor is mostly left at the start of the text
that was operated upon. For example, "yfe" doesn't move the cursor, but "yFe"
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index d3adbd0c9..e600dd91d 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 8.2. Last change: 2021 May 16
+*options.txt* For Vim version 8.2. Last change: 2021 May 31
VIM REFERENCE MANUAL by Bram Moolenaar
diff --git a/runtime/doc/os_vms.txt b/runtime/doc/os_vms.txt
index 6eb2993bc..0ebc77487 100644
--- a/runtime/doc/os_vms.txt
+++ b/runtime/doc/os_vms.txt
@@ -767,12 +767,12 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/
Version 8.2
- make all changes needed for clean compile build of v8.2 on VMS on all platforms
-- fix the call mkdir bug (vicente_polo@yahoo.es)
+- fix the call mkdir bug (vicente_polo@yahoo.es)
- test on VSI OpenVMS Alpha and Itanium platforms
- added LUA support
- added XPM support - Motif GUI with toolbar on all platforms
-- XPM v3.4.11 libraries for IA64, AXP and VAX are added
-- start integrating the new test scripts
+- XPM v3.4.11 libraries for IA64, AXP and VAX are added
+- start integrating the new test scripts
Version 8.1
- make necessary changes to build v8.1 on VMS
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 20fed5523..c23fdb444 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1217,7 +1217,7 @@ x A single character, with no special meaning, matches itself
\%d123 Matches the character specified with a decimal number. Must be
followed by a non-digit.
-\%o40 Matches the character specified with an octal number up to 0377.
+\%o40 Matches the character specified with an octal number up to 0o377.
Numbers below 0o40 must be followed by a non-octal digit or a
non-digit.
\%x2a Matches the character specified with up to two hexadecimal characters.
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index b293d9b15..421b12f60 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -3809,7 +3809,7 @@ netrw:
Decho.vim is provided as a "vimball"; see |vimball-intro|. You
should edit the Decho.vba.gz file and source it in: >
- vim Decho.vba.gz
+ vim Decho.vba.gz
:so %
:q
<
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 18149fcf8..c6b4b9e9f 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt* For Vim version 8.2. Last change: 2021 May 08
+*repeat.txt* For Vim version 8.2. Last change: 2021 Jun 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -279,7 +279,9 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
ftdetect scripts are loaded, only the matching
directories are added to 'runtimepath'. This is
useful in your .vimrc. The plugins will then be
- loaded during initialization, see |load-plugins|.
+ loaded during initialization, see |load-plugins| (note
+ that the loading order will be reversed, because each
+ directory is inserted before others).
Note that for ftdetect scripts to be loaded
you will need to write `filetype plugin indent on`
AFTER all `packadd!` commands.
@@ -372,7 +374,7 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|.
for some commands.
See |:vim9cmd| for executing one command with Vim9
syntax and semantics.
-
+
*:scr* *:scriptnames*
:scr[iptnames] List all sourced script names, in the order they were
first sourced. The number is used for the script ID
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index d457067c8..ab35aca7a 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -3430,8 +3430,8 @@ syntax highlighting script handles this with the following logic:
Tex: Match Check Control~
Sometimes one actually wants mismatched parentheses, square braces,
- and or curly braces; for example, \text{(1,10] is a range from but
- not including 1 to and including 10}. This wish, of course, conflicts
+ and or curly braces; for example, \text{(1,10]} is a range from but
+ not including 1 to and including 10. This wish, of course, conflicts
with the desire to provide delimiter mismatch detection. To
accommodate these conflicting goals, syntax/tex.vim provides >
g:tex_matchcheck = '[({[]'
@@ -4084,7 +4084,7 @@ match in the same position overrules an earlier one). The "transparent"
argument makes the "myVim" match use the same highlighting as "myString". But
it does not contain anything. If the "contains=NONE" argument would be left
out, then "myVim" would use the contains argument from myString and allow
-"myWord" to be contained, which will be highlighted as a Constant. This
+"myWord" to be contained, which will be highlighted as a Comment. This
happens because a contained match doesn't match inside itself in the same
position, thus the "myVim" match doesn't overrule the "myWord" match here.
@@ -4970,8 +4970,8 @@ ctermul={color-nr} *highlight-ctermul*
*tmux*
When using tmux you may want to use this in the tmux config: >
# tmux colors
- set -g default-terminal "xterm-256color"
- set -ag terminal-overrides ",xterm-256color:Tc"
+ set -s default-terminal "tmux-256color"
+ set -as terminal-overrides ",*-256color:Tc"
< More info at:
https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-a-256-colour-terminal
https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-rgb-colour
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 18f71f1e8..5b1457c89 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -7000,6 +7000,7 @@ getchar() eval.txt /*getchar()*
getcharmod() eval.txt /*getcharmod()*
getcharpos() eval.txt /*getcharpos()*
getcharsearch() eval.txt /*getcharsearch()*
+getcharstr() eval.txt /*getcharstr()*
getcmdline() eval.txt /*getcmdline()*
getcmdpos() eval.txt /*getcmdpos()*
getcmdtype() eval.txt /*getcmdtype()*
@@ -7901,6 +7902,7 @@ moo.vim syntax.txt /*moo.vim*
more-compatible version5.txt /*more-compatible*
more-prompt message.txt /*more-prompt*
more-variables eval.txt /*more-variables*
+motion-count-multiplied motion.txt /*motion-count-multiplied*
motion.txt motion.txt /*motion.txt*
mouse-mode-table term.txt /*mouse-mode-table*
mouse-overview term.txt /*mouse-overview*
@@ -8348,6 +8350,7 @@ omni-sql-completion ft_sql.txt /*omni-sql-completion*
online-help helphelp.txt /*online-help*
opening-window windows.txt /*opening-window*
operator motion.txt /*operator*
+operator-doubled motion.txt /*operator-doubled*
operator-pending-index index.txt /*operator-pending-index*
operator-variable eval.txt /*operator-variable*
option-backslash options.txt /*option-backslash*
@@ -8401,6 +8404,7 @@ page_up intro.txt /*page_up*
pager message.txt /*pager*
papp.vim syntax.txt /*papp.vim*
paragraph motion.txt /*paragraph*
+partial eval.txt /*partial*
pascal.vim syntax.txt /*pascal.vim*
patches-8 version8.txt /*patches-8*
patches-8.1 version8.txt /*patches-8.1*
@@ -10066,6 +10070,7 @@ v_u change.txt /*v_u*
v_v visual.txt /*v_v*
v_x change.txt /*v_x*
v_y change.txt /*v_y*
+v_zy change.txt /*v_zy*
v_~ change.txt /*v_~*
vab motion.txt /*vab*
val-variable eval.txt /*val-variable*
@@ -10435,6 +10440,7 @@ zOS-PuTTY os_390.txt /*zOS-PuTTY*
zOS-has-ebcdic os_390.txt /*zOS-has-ebcdic*
zOS-limitations os_390.txt /*zOS-limitations*
zOS-open-source os_390.txt /*zOS-open-source*
+zP change.txt /*zP*
zR fold.txt /*zR*
zW spell.txt /*zW*
zX fold.txt /*zX*
@@ -10462,6 +10468,7 @@ zl scroll.txt /*zl*
zm fold.txt /*zm*
zn fold.txt /*zn*
zo fold.txt /*zo*
+zp change.txt /*zp*
zr fold.txt /*zr*
zs scroll.txt /*zs*
zsh.vim syntax.txt /*zsh.vim*
@@ -10473,6 +10480,7 @@ zuw spell.txt /*zuw*
zv fold.txt /*zv*
zw spell.txt /*zw*
zx fold.txt /*zx*
+zy change.txt /*zy*
zz scroll.txt /*zz*
{ motion.txt /*{*
{Visual} intro.txt /*{Visual}*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 8eea4a59e..811d50752 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -373,10 +373,10 @@ Added by Vim (there are no standard codes for these):
t_Ri restore icon text from stack *t_Ri* *'t_Ri'*
t_TE end of "raw" mode *t_TE* *'t_TE'*
t_TI put terminal into "raw" mode *t_TI* *'t_TI'*
- t_fd disable focus-event tracking *t_fd* *'t_fd'*
- |xterm-focus-event|
t_fe enable focus-event tracking *t_fe* *'t_fe'*
|xterm-focus-event|
+ t_fd disable focus-event tracking *t_fd* *'t_fd'*
+ |xterm-focus-event|
Some codes have a start, middle and end part. The start and end are defined
by the termcap option, the middle part is text.
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index b46c44094..2c20ceaa4 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 8.2. Last change: 2021 May 28
+*todo.txt* For Vim version 8.2. Last change: 2021 Jun 13
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,57 +38,30 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs*
-------------------- Known bugs and current work -----------------------
-Geen memory leak?
-
-Crash using outer var from nested lambda:
- vim9script
- def F(text: string): func(string): func(string): string
- return (arg: string): func(string): string => ((sep: string): string => {
- return text .. ' ' .. arg
- })
- enddef
-
- echo F('hello')(' ')('there')
-
-
-
Vim9 - Make everything work:
-- function returning nothing should return void instead of zero
-- compile "expr" and "call" expression of a channel in channel_exe_cmd()?
-- Need some solution for dict function. Can we implement part of classes?
-- A lambda without {} does not require a return type, using { return x } does.
- That's unexpected, since the arguments are not required to have a type.
- alt 1: not require a return type, figure it out from the common type of all
- the return statements found
- alt 2: also require argument types
-- Using "windo echo expr" does not accept a line break inside "expr" (in a
- :def function and at script level in a not executed block). #7681
-- use CheckLegacyAndVim9Success(lines) in many more places
+- Make debugging work - at least per function.
+ - How to evaluate the stack and variables on the stack?
+ - FIXME in test_debugger.vim
- For builtin functions using tv_get_string*() use check_for_string() to be
more strict about the argument type (not a bool).
done: balloon_()
- Check many more builtin function arguments at compile time.
map() could check that the return type of the function argument matches
the type of the list or dict member. (#8092)
-- Allow for using an autoload function name without quotes. It is then loaded
- (and compiled) right away. #8124
-- Test more expressions in legacy and Vim9 script, using
- CheckLegacyAndVim9Success()
+ Same for other functions, such as searchpair().
+- use CheckLegacyAndVim9Success(lines) in many more places
- Test try/catch and throw better, also nested.
Test that return inside try/finally jumps to finally and then returns.
- Test that a function defined inside a :def function is local to that
function, g: functions can be defined and script-local functions cannot be
defined.
-- Make debugging work - at least per function. Need to recompile a function
- to step through it line-by-line? Evaluate the stack and variables on the
- stack?
-- Reserve command for future use: :type, :class, :enum
+- compile get_lambda_tv() in popup_add_timeout()
Once Vim9 is stable:
+- Add the "vim9script" feature, can use has('vim9script')
- Change the help to prefer Vim9 syntax where appropriate
- Add all the error numbers in a good place in documentation.
- In the generic eval docs, point out the Vim9 syntax where it differs.
-- Add the "vim9script" feature, can use has('vim9script')
- Use Vim9 for runtime files.
PR #7497 for autoload/ccomplete.vim
@@ -100,13 +73,12 @@ Further Vim9 improvements, possibly after launch:
Give an error if compilation fails. (#7625)
Use the location where the option was set for deciding whether it's to be
evaluated in Vim9 script context.
-- implement :type, import type declaration.
-- implement enum, import enum.
-- Future work: See |vim9-classes|
+- implement :type, "import type"
+- implement enum, "import enum".
+- implement class and interface: See |vim9-classes|
- For range: make table of first ASCII character with flag to quickly check if
it can be a Vim9 command. E.g. "+" can, but "." can't.
-- compile get_lambda_tv() in popup_add_timeout()
-- inline call to map() and filter()
+- Inline call to map() and filter(), better type checking.
- Make accessing varargs faster: arg[expr]
EVAL expr
LOADVARARG (varargs idx)
@@ -300,6 +272,9 @@ inconsistent with the documentation.
Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598)
Scroll doesn't work correctly, why?
+glob() and globfile() do not always honor 'wildignorecase'. #8350
+globpath() does not use 'wildignorecase' at all?
+
Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work
with 'termguicolors'. #1740
@@ -344,6 +319,9 @@ Should also work without any group:
:echo matchstr('aaa bbb', '.\{-1,}\>\|.*')
aaa bbb (should be aaa)
+Should add a match/str/list/pos method that also returns the test and position
+of submatches. #8355
+
Check out PR #543 (Roland Puntaier).
Patch for multibyte characters in langmap and applying a mapping on them.
(Christian Brabandt, 2015 Jun 12, update July 25)
@@ -380,6 +358,10 @@ work.
Using "au!" after "filetype on" is a bit slow. Can the matching of
autocommands be made faster? (#7056)
+Append in Visual block mode inserts the wrong character.
+Test_visual_block_mode() already has the proper check, which is commented out.
+(#8288)
+
Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr"
replace this:
let left = GetLeftFunc()
@@ -2263,9 +2245,6 @@ Win32: Improved Makefile for MSVC. (Leonardo Valeri Manera, 2010 Aug 18)
Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15)
-Win32: Patch for enabling quick edit mode in console. (Craig Barkhouse, 2010
-Sep 1)
-
Win32: Patch for using .png files for icons. (Charles Peacech, 2012 Feb 5)
Putting a Visual block while 'visualedit' is "all" does not leave the cursor
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 0d66d2bb6..09d5a39db 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt* For Vim version 8.2. Last change: 2021 Apr 19
+*usr_41.txt* For Vim version 8.2. Last change: 2021 Jun 07
VIM USER MANUAL - by Bram Moolenaar
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 76a8f5d3c..eb45922cc 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -724,7 +724,7 @@ K Run a program to lookup the keyword under the
feature}
*:sl!* *:sleep!*
-:[N]sl[eep]! [N] [m] Same as above, but hide the cursor.
+:[N]sl[eep]! [N][m] Same as above, but hide the cursor.
*:xrestore* *:xr*
:xr[estore] [display] Reinitializes the connection to the X11 server. Useful
diff --git a/runtime/doc/vim.1 b/runtime/doc/vim.1
index 5bf0d0503..d55c8b3e8 100644
--- a/runtime/doc/vim.1
+++ b/runtime/doc/vim.1
@@ -186,7 +186,7 @@ behave mostly like Vi, even though a .vimrc file exists.
.TP
\-d
Start in diff mode.
-There should be two, three or four file name arguments.
+There should between two to eight file name arguments.
.B Vim
will open all the files and show differences between them.
Works like vimdiff(1).
diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man
index 91f29e14e..dbfba53ce 100644
--- a/runtime/doc/vim.man
+++ b/runtime/doc/vim.man
@@ -135,9 +135,9 @@ OPTIONS
Vim behave mostly like Vi, even though a .vimrc file ex‐
ists.
- -d Start in diff mode. There should be two, three or four
- file name arguments. Vim will open all the files and show
- differences between them. Works like vimdiff(1).
+ -d Start in diff mode. There should between two to eight file
+ name arguments. Vim will open all the files and show dif‐
+ ferences between them. Works like vimdiff(1).
-d {device} Open {device} for use as a terminal. Only on the Amiga.
Example: "-d con:20/30/600/150".
diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt
index 406aedcfe..6ca1d74a9 100644
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -457,7 +457,8 @@ which is similar to JavaScript: >
var Lambda = (arg) => expression
No line break is allowed in the arguments of a lambda up to and including the
-"=>". This is OK: >
+"=>" (so that Vim can tell the difference between an expression in parenthesis
+and lambda arguments). This is OK: >
filter(list, (k, v) =>
v > 0)
This does not work: >
@@ -998,9 +999,14 @@ prefix if they do not exist at the time of compiling.
Note that for command line completion of {func} you
can prepend "s:" to find script-local functions.
-:disa[ssemble]! {func} Like `:disassemble` but with the instructions used for
+:disa[ssemble] profile {func}
+ Like `:disassemble` but with the instructions used for
profiling.
+:disa[ssemble] debug {func}
+ Like `:disassemble` but with the instructions used for
+ debugging.
+
Limitations ~
Local variables will not be visible to string evaluation. For example: >
diff --git a/runtime/doc/vimdiff.1 b/runtime/doc/vimdiff.1
index bed2b3288..ddcb30f1c 100644
--- a/runtime/doc/vimdiff.1
+++ b/runtime/doc/vimdiff.1
@@ -1,17 +1,17 @@
.TH VIMDIFF 1 "2001 March 30"
.SH NAME
-vimdiff \- edit two, three or four versions of a file with Vim and show differences
+vimdiff \- edit between two and eight versions of a file with Vim and show differences
.SH SYNOPSIS
.br
.B vimdiff
-[options] file1 file2 [file3 [file4]]
+[options] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]]
.PP
.B gvimdiff
.SH DESCRIPTION
.B Vimdiff
starts
.B Vim
-on two (or three or four) files.
+on two up to eight files.
Each file gets its own window.
The differences between the files are highlighted.
This is a nice way to inspect changes and to move changes from one version
diff --git a/runtime/doc/vimdiff.man b/runtime/doc/vimdiff.man
index 913ac1384..a053e6a74 100644
--- a/runtime/doc/vimdiff.man
+++ b/runtime/doc/vimdiff.man
@@ -1,27 +1,28 @@
-VIMDIFF(1) VIMDIFF(1)
+VIMDIFF(1) General Commands Manual VIMDIFF(1)
NAME
- vimdiff - edit two, three or four versions of a file with Vim and show
- differences
+ vimdiff - edit between two and eight versions of a file with Vim and
+ show differences
SYNOPSIS
- vimdiff [options] file1 file2 [file3 [file4]]
+ vimdiff [options] file1 file2 [file3 [file4 [file5 [file6 [file7
+ [file8]]]]]]
gvimdiff
DESCRIPTION
- Vimdiff starts Vim on two (or three or four) files. Each file gets its
- own window. The differences between the files are highlighted. This
- is a nice way to inspect changes and to move changes from one version
- to another version of the same file.
+ Vimdiff starts Vim on two up to eight files. Each file gets its own
+ window. The differences between the files are highlighted. This is a
+ nice way to inspect changes and to move changes from one version to an‐
+ other version of the same file.
See vim(1) for details about Vim itself.
When started as gvimdiff the GUI will be started, if available.
- In each window the 'diff' option will be set, which causes the differ-
+ In each window the 'diff' option will be set, which causes the differ‐
ences to be highlighted.
The 'wrap' and 'scrollbind' options are set to make the text look good.
The 'foldmethod' option is set to "diff", which puts ranges of lines
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 0f06391de..04e200117 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2021 Apr 17
+" Last Change: 2021 Jun 13
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop
index 3132bc861..8da62cac4 100644
--- a/runtime/gvim.desktop
+++ b/runtime/gvim.desktop
@@ -112,6 +112,7 @@ Icon[de]=gvim
Icon[eo]=gvim
Icon[fr]=gvim
Icon[ru]=gvim
+Icon[sr]=gvim
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=true
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index 7019bd4a8..d4b91f642 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -1,7 +1,7 @@
" Vim indent script for HTML
" Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de>
-" Last Change: 2021 Jan 26
+" Last Change: 2021 Jun 13
" Version: 1.0 "{{{
" Description: HTML indent script with cached state for faster indenting on a
" range of lines.
@@ -62,7 +62,7 @@ let s:tagname = '\w\+\(-\w\+\)*'
" Prefer using buffer-local settings over global settings, so that there can
" be defaults for all HTML files and exceptions for specific types of HTML
" files.
-func! HtmlIndent_CheckUserSettings()
+func HtmlIndent_CheckUserSettings()
"{{{
let inctags = ''
if exists("b:html_indent_inctags")
@@ -178,7 +178,7 @@ let s:endtags = [0,0,0,0,0,0,0] " long enough for the highest index
"}}}
" Add a list of tag names for a pair of <tag> </tag> to "tags".
-func! s:AddITags(tags, taglist)
+func s:AddITags(tags, taglist)
"{{{
for itag in a:taglist
let a:tags[itag] = 1
@@ -187,7 +187,7 @@ func! s:AddITags(tags, taglist)
endfunc "}}}
" Take a list of tag name pairs that are not to be used as tag pairs.
-func! s:RemoveITags(tags, taglist)
+func s:RemoveITags(tags, taglist)
"{{{
for itag in a:taglist
let a:tags[itag] = 1
@@ -196,7 +196,7 @@ func! s:RemoveITags(tags, taglist)
endfunc "}}}
" Add a block tag, that is a tag with a different kind of indenting.
-func! s:AddBlockTag(tag, id, ...)
+func s:AddBlockTag(tag, id, ...)
"{{{
if !(a:id >= 2 && a:id < len(s:endtags))
echoerr 'AddBlockTag ' . a:id
@@ -255,7 +255,7 @@ call s:AddBlockTag('<!--[', 6, '![endif]-->')
" Return non-zero when "tagname" is an opening tag, not being a block tag, for
" which there should be a closing tag. Can be used by scripts that include
" HTML indenting.
-func! HtmlIndent_IsOpenTag(tagname)
+func HtmlIndent_IsOpenTag(tagname)
"{{{
if get(s:indent_tags, a:tagname) == 1
return 1
@@ -264,7 +264,7 @@ func! HtmlIndent_IsOpenTag(tagname)
endfunc "}}}
" Get the value for "tagname", taking care of buffer-local tags.
-func! s:get_tag(tagname)
+func s:get_tag(tagname)
"{{{
let i = get(s:indent_tags, a:tagname)
if (i == 1 || i == -1) && get(b:hi_removed_tags, a:tagname) != 0
@@ -277,7 +277,7 @@ func! s:get_tag(tagname)
endfunc "}}}
" Count the number of start and end tags in "text".
-func! s:CountITags(text)
+func s:CountITags(text)
"{{{
" Store the result in s:curind and s:nextrel.
let s:curind = 0 " relative indent steps for current line [unit &sw]:
@@ -289,7 +289,7 @@ func! s:CountITags(text)
endfunc "}}}
" Count the number of start and end tags in text.
-func! s:CountTagsAndState(text)
+func s:CountTagsAndState(text)
"{{{
" Store the result in s:curind and s:nextrel. Update b:hi_newstate.block.
let s:curind = 0 " relative indent steps for current line [unit &sw]:
@@ -304,7 +304,7 @@ func! s:CountTagsAndState(text)
endfunc "}}}
" Used by s:CountITags() and s:CountTagsAndState().
-func! s:CheckTag(itag)
+func s:CheckTag(itag)
"{{{
" Returns an empty string or "SCRIPT".
" a:itag can be "tag" or "/tag" or "<!--" or "-->"
@@ -338,7 +338,7 @@ func! s:CheckTag(itag)
endfunc "}}}
" Used by s:CheckTag(). Returns an empty string or "SCRIPT".
-func! s:CheckBlockTag(blocktag, ind)
+func s:CheckBlockTag(blocktag, ind)
"{{{
if a:ind > 0
" a block starts here
@@ -366,7 +366,7 @@ func! s:CheckBlockTag(blocktag, ind)
endfunc "}}}
" Used by s:CheckTag().
-func! s:CheckCustomTag(ctag)
+func s:CheckCustomTag(ctag)
"{{{
" Returns 1 if ctag is the tag for a custom element, 0 otherwise.
" a:ctag can be "tag" or "/tag" or "<!--" or "-->"
@@ -396,7 +396,7 @@ func! s:CheckCustomTag(ctag)
endfunc "}}}
" Return the <script> type: either "javascript" or ""
-func! s:GetScriptType(str)
+func s:GetScriptType(str)
"{{{
if a:str == "" || a:str =~ "java"
return "javascript"
@@ -407,7 +407,7 @@ endfunc "}}}
" Look back in the file, starting at a:lnum - 1, to compute a state for the
" start of line a:lnum. Return the new state.
-func! s:FreshState(lnum)
+func s:FreshState(lnum)
"{{{
" A state is to know ALL relevant details about the
" lines 1..a:lnum-1, initial calculating (here!) can be slow, but updating is
@@ -568,24 +568,29 @@ func! s:FreshState(lnum)
endfunc "}}}
" Indent inside a <pre> block: Keep indent as-is.
-func! s:Alien2()
+func s:Alien2()
"{{{
return -1
endfunc "}}}
" Return the indent inside a <script> block for javascript.
-func! s:Alien3()
+func s:Alien3()
"{{{
let lnum = prevnonblank(v:lnum - 1)
while lnum > 1 && getline(lnum) =~ '^\s*/[/*]'
" Skip over comments to avoid that cindent() aligns with the <script> tag
let lnum = prevnonblank(lnum - 1)
endwhile
+ if lnum < b:hi_indent.blocklnr
+ " indent for <script> itself
+ return b:hi_indent.blocktagind
+ endif
if lnum == b:hi_indent.blocklnr
" indent for the first line after <script>
return eval(b:hi_js1indent)
endif
if b:hi_indent.scripttype == "javascript"
+ " indent for further lines
return eval(b:hi_js1indent) + GetJavascriptIndent()
else
return -1
@@ -593,7 +598,7 @@ func! s:Alien3()
endfunc "}}}
" Return the indent inside a <style> block.
-func! s:Alien4()
+func s:Alien4()
"{{{
if prevnonblank(v:lnum-1) == b:hi_indent.blocklnr
" indent for first content line
@@ -603,7 +608,7 @@ func! s:Alien4()
endfunc "}}}
" Indending inside a <style> block. Returns the indent.
-func! s:CSSIndent()
+func s:CSSIndent()
"{{{
" This handles standard CSS and also Closure stylesheets where special lines
" start with @.
@@ -720,13 +725,13 @@ endfunc "}}}
" tag: blah
" tag: blah &&
" tag: blah ||
-func! s:CssUnfinished(text)
+func s:CssUnfinished(text)
"{{{
return a:text =~ '\(||\|&&\|:\|\k\)\s*$'
endfunc "}}}
" Search back for the first unfinished line above "lnum".
-func! s:CssFirstUnfinished(lnum, min_lnum)
+func s:CssFirstUnfinished(lnum, min_lnum)
"{{{
let align_lnum = a:lnum
while align_lnum > a:min_lnum && s:CssUnfinished(getline(align_lnum - 1))
@@ -736,7 +741,7 @@ func! s:CssFirstUnfinished(lnum, min_lnum)
endfunc "}}}
" Find the non-empty line at or before "lnum" that is not a comment.
-func! s:CssPrevNonComment(lnum, stopline)
+func s:CssPrevNonComment(lnum, stopline)
"{{{
" caller starts from a line a:lnum + 1 that is not a comment
let lnum = prevnonblank(a:lnum)
@@ -761,7 +766,7 @@ func! s:CssPrevNonComment(lnum, stopline)
endfunc "}}}
" Check the number of {} and () in line "lnum". Return a dict with the counts.
-func! HtmlIndent_CountBraces(lnum)
+func HtmlIndent_CountBraces(lnum)
"{{{
let brs = substitute(getline(a:lnum), '[''"].\{-}[''"]\|/\*.\{-}\*/\|/\*.*$\|[^{}()]', '', 'g')
let c_open = 0
@@ -794,7 +799,7 @@ func! HtmlIndent_CountBraces(lnum)
endfunc "}}}
" Return the indent for a comment: <!-- -->
-func! s:Alien5()
+func s:Alien5()
"{{{
let curtext = getline(v:lnum)
if curtext =~ '^\s*\zs-->'
@@ -826,7 +831,7 @@ func! s:Alien5()
endfunc "}}}
" Return the indent for conditional comment: <!--[ ![endif]-->
-func! s:Alien6()
+func s:Alien6()
"{{{
let curtext = getline(v:lnum)
if curtext =~ '\s*\zs<!\[endif\]-->'
@@ -840,7 +845,7 @@ func! s:Alien6()
endfunc "}}}
" When the "lnum" line ends in ">" find the line containing the matching "<".
-func! HtmlIndent_FindTagStart(lnum)
+func HtmlIndent_FindTagStart(lnum)
"{{{
" Avoids using the indent of a continuation line.
" Moves the cursor.
@@ -863,7 +868,7 @@ func! HtmlIndent_FindTagStart(lnum)
endfunc "}}}
" Find the unclosed start tag from the current cursor position.
-func! HtmlIndent_FindStartTag()
+func HtmlIndent_FindStartTag()
"{{{
" The cursor must be on or before a closing tag.
" If found, positions the cursor at the match and returns the line number.
@@ -877,7 +882,7 @@ func! HtmlIndent_FindStartTag()
endfunc "}}}
" Moves the cursor from a "<" to the matching ">".
-func! HtmlIndent_FindTagEnd()
+func HtmlIndent_FindTagEnd()
"{{{
" Call this with the cursor on the "<" of a start tag.
" This will move the cursor to the ">" of the matching end tag or, when it's
@@ -897,7 +902,7 @@ func! HtmlIndent_FindTagEnd()
endfunc "}}}
" Indenting inside a start tag. Return the correct indent or -1 if unknown.
-func! s:InsideTag(foundHtmlString)
+func s:InsideTag(foundHtmlString)
"{{{
if a:foundHtmlString
" Inside an attribute string.
@@ -958,7 +963,7 @@ func! s:InsideTag(foundHtmlString)
endfunc "}}}
" THE MAIN INDENT FUNCTION. Return the amount of indent for v:lnum.
-func! HtmlIndent()
+func HtmlIndent()
"{{{
if prevnonblank(v:lnum - 1) < 1
" First non-blank line has no indent.
diff --git a/runtime/syntax/gvpr.vim b/runtime/syntax/gvpr.vim
new file mode 100644
index 000000000..a7378916f
--- /dev/null
+++ b/runtime/syntax/gvpr.vim
@@ -0,0 +1,85 @@
+" Vim syntax file
+" Language: Graphviz program
+" Maintainer: Matthew Fernandez <matthew.fernandez@gmail.com>
+" Last Change: Tue, 28 Jul 2020 17:20:44 -0700
+
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword gvArg ARGC ARGV
+syn keyword gvBeg BEGIN BEG_G N E END END_G
+syn keyword gvFunc
+ \ graph fstsubg isDirect isStrict isSubg nEdges nNodes nxtsubg subg
+ \ degreeOf fstnode indegreeOf isNode isSubnode node nxtnode nxtnode_sg
+ \ outDegreeOf subnode
+ \ edge edge_sg fstedge fstedge_sg fstin fstin_sg fstout fstout_sg isEdge
+ \ isEdge_sg isSubedge nxtedge nxtedge_sg nxtin nxtin_sg nxtout nxtout_sg opp
+ \ subedge
+ \ freadG fwriteG readG write[] writeG
+ \ aget aset clone cloneG compOf copy[] copyA delete[] fstAttr getDflt hasAttr
+ \ induce isAttr isIn kindOf lock[] nxtAttr setDflt
+ \ canon gsub html index ishtml length llOf match[] rindex split[] sprintf
+ \ sscanf strcmp sub substr tokens tolower toupper urOf xOf yOf
+ \ closeF openF print[] printf scanf readL
+ \ atan2 cos exp log MAX MIN pow sin[] sqrt
+ \ in[] unset
+ \ colorx exit[] rand srand system
+syn keyword gvCons
+ \ NULL TV_bfs TV_dfs TV_en TV_flat TV_fwd TV_ne TV_prepostdfs TV_prepostfwd
+ \ TV_prepostrev TV_postdfs TV_postfwd tv_postrev TV_rev
+syn keyword gvType char double float int long unsigned void
+ \ string
+ \ edge_t graph_t node_t obj_t
+syn match gvVar
+ \ "\$\(\(F\|G\|NG\|O\|T\|tgtname\|tvedge\|tvnext\|tvroot\|tvtype\)\>\)\?\(\<\)\@!"
+syn keyword gvWord break continue else for forr if return switch while
+
+" numbers adapted from c.vim's cNumbers and friends
+syn match gvNums transparent "\<\d\|\.\d" contains=gvNumber,gvFloat,gvOctal
+syn match gvNumber contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+syn match gvNumber contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+syn match gvOctal contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=gvOctalZero
+syn match gvOctalZero contained "\<0"
+syn match gvFloat contained "\d\+f"
+syn match gvFloat contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+syn match gvFloat contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+syn match gvFloat contained "\d\+e[-+]\=\d\+[fl]\=\>"
+
+syn region gvString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gvFormat,gvSpecial extend
+syn region gvString start="'" skip="\\\\\|\\'" end="'" contains=gvFormat,gvSpecial extend
+
+" adapted from c.vim's cFormat for c_no_c99
+syn match gvFormat "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+
+syn match gvSpecial "\\." contained
+
+syn region gvCComment start="//" skip="\\$" end="$" keepend
+syn region gvCPPComment start="#" skip="\\$" end="$" keepend
+syn region gvCXXComment start="/\*" end="\*/" fold
+
+hi def link gvArg Identifier
+hi def link gvBeg Keyword
+hi def link gvFloat Number
+hi def link gvFunc Identifier
+hi def link gvCons Number
+hi def link gvNumber Number
+hi def link gvType Type
+hi def link gvVar Statement
+hi def link gvWord Keyword
+
+hi def link gvString String
+hi def link gvFormat Special
+hi def link gvSpecial Special
+
+hi def link gvCComment Comment
+hi def link gvCPPComment Comment
+hi def link gvCXXComment Comment
+
+let b:current_syntax = "gvpr"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/vim.desktop b/runtime/vim.desktop
index 8bfbc6abc..aeefcc821 100644
--- a/runtime/vim.desktop
+++ b/runtime/vim.desktop
@@ -112,6 +112,7 @@ Icon[de]=gvim
Icon[eo]=gvim
Icon[fr]=gvim
Icon[ru]=gvim
+Icon[sr]=gvim
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
diff --git a/src/INSTALLpc.txt b/src/INSTALLpc.txt
index 2b610f037..b5c1a0b58 100644
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -284,7 +284,8 @@ open the window from the start menu, MSYS2 64 bit / MSYS2 MSYS.
Execute:
$ pacman -Syu
-And restart MSYS2 console (select "MSYS2 MSYS" icon from the Start Menu).
+And restart MSYS2 console (select "MSYS2 MSYS 32-Bit" icon from the Start
+Menu for building 32 bit Vim, otherwise select "MSYS2 MinGW 64-Bit").
Then execute:
$ pacman -Su
diff --git a/src/po/sr.po b/src/po/sr.po
index b9ae0e629..d3fc4a7b1 100644
--- a/src/po/sr.po
+++ b/src/po/sr.po
@@ -2,7 +2,7 @@
#
# Do ":help uganda" in Vim to read copying and usage conditions.
# Do ":help credits" in Vim to see a list of people who contributed.
-# Copyright (C) 2017
+# Copyright (C) 2021
# This file is distributed under the same license as the Vim package.
# FIRST AUTHOR Ivan Pešić <ivan.pesic@gmail.com>, 2017.
#
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Vim(Serbian)\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-14 01:49+0400\n"
-"PO-Revision-Date: 2021-02-14 01:54+0400\n"
+"POT-Creation-Date: 2021-06-13 13:16+0400\n"
+"PO-Revision-Date: 2021-06-13 13:50+0400\n"
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
"Language-Team: Serbian\n"
"Language: sr\n"
@@ -97,6 +97,9 @@ msgstr "Извршавање %s"
msgid "autocommand %s"
msgstr "аутокоманда %s"
+msgid "E972: Blob value does not have the right number of bytes"
+msgstr "E972: Блоб вредност нема одговарајући број бајтова"
+
msgid "E831: bf_key_init() called with empty password"
msgstr "E831: bf_key_init() је позвана са празном лозинком"
@@ -731,9 +734,6 @@ msgstr "E708: [:] мора да буде последња"
msgid "E709: [:] requires a List or Blob value"
msgstr "E709: [:] захтева вредност типа Листа или Блоб"
-msgid "E972: Blob value does not have the right number of bytes"
-msgstr "E972: Блоб вредност нема одговарајући број бајтова"
-
msgid "E996: Cannot lock a range"
msgstr "E996: Опсег не може да се закључа"
@@ -763,9 +763,6 @@ msgstr ""
"\n"
"\tПоследње постављено из "
-msgid "E808: Number or Float required"
-msgstr "E808: Захтева се Број или Покретни"
-
#, c-format
msgid "E158: Invalid buffer name: %s"
msgstr "E158: Неисправно име бафера: %s"
@@ -932,6 +929,10 @@ msgstr "E135: *Филтер* Аутокоманде не смеју да мењ
msgid "[No write since last change]\n"
msgstr "[Нема уписа од последње промене]\n"
+#, c-format
+msgid "E503: \"%s\" is not a file or writable device"
+msgstr "E503: „%s” није фајл или уређај на који може да се уписује"
+
msgid "Save As"
msgstr "Сачувај као"
@@ -1594,6 +1595,9 @@ msgstr "E446: Под курсором се не налази име фајла"
msgid "E447: Can't find file \"%s\" in path"
msgstr "E447: Фајл \"%s\" не може да се пронађе у путањи"
+msgid "E808: Number or Float required"
+msgstr "E808: Захтева се Број или Покретни"
+
msgid "E490: No fold found"
msgstr "E490: Није пронађен ниједан свијутак"
@@ -4069,12 +4073,12 @@ msgstr "E531: Користите \":gui\" да покренете ГКИ"
msgid "E589: 'backupext' and 'patchmode' are equal"
msgstr "E589: 'backupext' и 'patchmode' су истоветни"
-msgid "E834: Conflicts with value of 'listchars'"
-msgstr "E834: У конфликту са вредношћу 'listchars'"
-
msgid "E835: Conflicts with value of 'fillchars'"
msgstr "E835: У конфликту са вредношћу 'fillchars'"
+msgid "E834: Conflicts with value of 'listchars'"
+msgstr "E834: У конфликту са вредношћу 'listchars'"
+
msgid "E617: Cannot be changed in the GTK+ 2 GUI"
msgstr "E617: Не може да се промени у GTK+ 2 ГКИ"
@@ -4513,7 +4517,7 @@ msgstr "E554: Синтаксна грешка у %s{...}"
#, c-format
msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (НКА регизраз) не може да се понови %s"
+msgstr "E888: (НКА регуларни израз) не може да се понови %s"
msgid ""
"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be "
@@ -4579,15 +4583,15 @@ msgid "External submatches:\n"
msgstr "Спољна подподударања:\n"
msgid "E865: (NFA) Regexp end encountered prematurely"
-msgstr "E865: (НКА) прерано је достигнут крај регизраза"
+msgstr "E865: (НКА) прерано је достигнут крај регуларног израза"
#, c-format
msgid "E866: (NFA regexp) Misplaced %c"
-msgstr "E866: (НКА регизраз) %c је на погрешном месту"
+msgstr "E866: (НКА регуларни израз) %c је на погрешном месту"
#, c-format
msgid "E877: (NFA regexp) Invalid character class: %d"
-msgstr "E877: (НКА регизраз) Неважећа карактер класа: %d"
+msgstr "E877: (НКА регуларни израз) Неважећа карактер класа: %d"
msgid "E951: \\% value too large"
msgstr "E951: Вредност \\% је предугачка"
@@ -4608,19 +4612,19 @@ msgid "E869: (NFA) Unknown operator '\\@%c'"
msgstr "E869: (НКА) Непознати оператор '\\@%c'"
msgid "E870: (NFA regexp) Error reading repetition limits"
-msgstr "E870: (НКА регизраз) Грешка при читању граница понављања"
+msgstr "E870: (НКА регуларни израз) Грешка при читању граница понављања"
msgid "E871: (NFA regexp) Can't have a multi follow a multi"
-msgstr "E871: (НКА регизраз) Мулти не може следи иза мулти"
+msgstr "E871: (НКА регуларни израз) Мулти не може следи иза мулти"
msgid "E872: (NFA regexp) Too many '('"
-msgstr "E872: (НКА регизраз) Превише '('"
+msgstr "E872: (НКА регуларни израз) Превише '('"
msgid "E879: (NFA regexp) Too many \\z("
-msgstr "E879: (НКА регизраз) Превише \\z("
+msgstr "E879: (НКА регуларни израз) Превише \\z("
msgid "E873: (NFA regexp) proper termination error"
-msgstr "E873: (НКА регизраз) грешка правилне терминације"
+msgstr "E873: (НКА регуларни израз) грешка правилне терминације"
msgid "Could not open temporary log file for writing, displaying on stderr... "
msgstr ""
@@ -4634,12 +4638,12 @@ msgid ""
"E875: (NFA regexp) (While converting from postfix to NFA), too many states "
"left on stack"
msgstr ""
-"E875: (НКА регизраз) (Док је вршена конверзија из постфикног облика у НКА), "
+"E875: (НКА регуларни израз) (Док је вршена конверзија из постфикног облика у НКА), "
"превише стања је остало на стеку"
msgid "E876: (NFA regexp) Not enough space to store the whole NFA "
msgstr ""
-"E876: (НКА регизраз) Нема довољно простора да се ускладишти комплетан НКА "
+"E876: (НКА регуларни израз) Нема довољно простора да се ускладишти комплетан НКА "
msgid "E878: (NFA) Could not allocate memory for branch traversal!"
msgstr "E878: (НКА) Није могла да се алоцира меморија за обилазак грана!"
@@ -6027,6 +6031,13 @@ msgstr "E853: Име аргумента је дуплирано: %s"
msgid "E989: Non-default argument follows default argument"
msgstr "E989: Неподразумевани аргумент следи иза подразумеваног аргумента"
+msgid "E126: Missing :endfunction"
+msgstr "E126: Недостаје :endfunction"
+
+#, c-format
+msgid "W22: Text found after :endfunction: %s"
+msgstr "W22: Пронађен текст након :endfunction: %s"
+
#, c-format
msgid "E451: Expected }: %s"
msgstr "E451: Очекује се }: %s"
@@ -6102,17 +6113,6 @@ msgstr "E862: Овде не може да се користи g:"
msgid "E932: Closure function should not be at top level: %s"
msgstr "E932: Затварајућа функција не би требало да буде на највишем нивоу: %s"
-msgid "E126: Missing :endfunction"
-msgstr "E126: Недостаје :endfunction"
-
-#, c-format
-msgid "W1001: Text found after :enddef: %s"
-msgstr "W1001: Пронађен је текст након :enddef: %s"
-
-#, c-format
-msgid "W22: Text found after :endfunction: %s"
-msgstr "W22: Пронађен текст након :endfunction: %s"
-
#, c-format
msgid "E707: Function name conflicts with variable: %s"
msgstr "E707: Име функције је у конфликту са променљивом: %s"
@@ -6635,25 +6635,25 @@ msgid "E366: Not allowed to enter a popup window"
msgstr "E366: Није дозвољено да се уђе у искачући прозор"
msgid "Edit with &multiple Vims"
-msgstr "Уређуј са &више Vim-ова"
+msgstr "Уређуј са &више Vim програма"
msgid "Edit with single &Vim"
-msgstr "Уређуј са једним &Vim-ом"
+msgstr "Уређуј са једним програмом &Vim"
msgid "Diff with Vim"
-msgstr "Diff са Vim"
+msgstr "Diff са програмом Vim"
msgid "Edit with &Vim"
-msgstr "Уређуј са &Vim-ом"
+msgstr "Уређуј са програмом &Vim"
msgid "Edit with existing Vim"
-msgstr "Уређуј са постојећим Vim-ом"
+msgstr "Уређуј са постојећим програмом Vim"
msgid "Edit with existing Vim - "
-msgstr "Уређуј са постојећим Vim - "
+msgstr "Уређуј са постојећим програмом Vim - "
msgid "Edits the selected file(s) with Vim"
-msgstr "Уређује селектован(е) фајл(ове) са Vim-ом"
+msgstr "Уређује селектован(е) фајл(ове) програмом Vim"
msgid "Error creating process: Check if gvim is in your path!"
msgstr ""
@@ -6699,6 +6699,10 @@ msgstr ""
"E856: \"assert_fails()\" други аргумент мора бити стринг или листа са једним "
"или два стринга"
+#, c-format
+msgid "E908: using an invalid value as a String: %s"
+msgstr "E908: Користи се неважећа вредност као Стринг: %s"
+
msgid "E909: Cannot index a special variable"
msgstr "E909: Специјална променљива не може да се индексира"
@@ -7188,8 +7192,8 @@ msgid "E1143: Empty expression: \"%s\""
msgstr "E1143: Празан израз: \"%s\""
#, c-format
-msgid "E1144: Command is not followed by white space: %s"
-msgstr "E1144: Иза команде се не налази празан простор: %s"
+msgid "E1144: Command \"%s\" is not followed by white space: %s"
+msgstr "E1144: Иза команде „%s” се не налази празан простор: %s"
#, c-format
msgid "E1145: Missing heredoc end marker: %s"
@@ -7242,7 +7246,8 @@ msgid "E1159: Cannot split a window when closing the buffer"
msgstr "E1159: Прозор не може да се подели када се затвара бафер"
msgid "E1160: Cannot use a default for variable arguments"
-msgstr "E1160: За аргументе променљиве не може да се користи подразумевана вредност"
+msgstr ""
+"E1160: За аргументе променљиве не може да се користи подразумевана вредност"
#, c-format
msgid "E1161: Cannot json encode a %s"
@@ -7254,7 +7259,116 @@ msgstr "E1162: Име регистра мора бити један каракт
#, c-format
msgid "E1163: Variable %d: type mismatch, expected %s but got %s"
-msgstr "E1163: Променљива %d: неодговарајући тип, очекује се %s али је наведено %s"
+msgstr ""
+"E1163: Променљива %d: неодговарајући тип, очекује се %s али је наведено %s"
+
+msgid "E1164: vim9cmd must be followed by a command"
+msgstr "E1164: Иза vim9cmd мора да следи команда"
+
+#, c-format
+msgid "E1165: Cannot use a range with an assignment: %s"
+msgstr "E1165: Опсег не може да се користи са доделом: %s"
+
+msgid "E1166: Cannot use a range with a dictionary"
+msgstr "E1166: Опсег не може да се користи са речником"
+
+#, c-format
+msgid "E1167: Argument name shadows existing variable: %s"
+msgstr "E1167: Име аргумента заклања постојећу променљиву: %s"
+
+#, c-format
+msgid "E1168: Argument already declared in the script: %s"
+msgstr "E1168: Аргумент је већ декларисан у скрипти: %s"
+
+msgid "E1169: 'import * as {name}' not supported here"
+msgstr "E1169: Овде се не подржава 'import * as {име}'"
+
+msgid "E1170: Cannot use #{ to start a comment"
+msgstr "E1170: #{ не може да се користи за почетак коментара"
+
+msgid "E1171: Missing } after inline function"
+msgstr "E1171: Након inline функције недостаје }"
+
+msgid "E1172: Cannot use default values in a lambda"
+msgstr "E1172: Није могућа употреба подразумеваних вредности у ламбди"
+
+#, c-format
+msgid "E1173: Text found after enddef: %s"
+msgstr "E1173: Пронађен је текст након enddef: %s"
+
+#, c-format
+msgid "E1174: String required for argument %d"
+msgstr "E1174: Неопходан је стринг за аргумент %d"
+
+#, c-format
+msgid "E1175: Non-empty string required for argument %d"
+msgstr "E1175: Неопходан је непразни стринг за аргумент %d"
+
+msgid "E1176: Misplaced command modifier"
+msgstr "E1176: Модификатор команде није на одговарајућем месту"
+
+#, c-format
+msgid "E1177: For loop on %s not supported"
+msgstr "E1177: Не подржава се for петља над %s"
+
+msgid "E1178: Cannot lock or unlock a local variable"
+msgstr "E1178: Локална променљива не може да се закључа или откључа"
+
+#, c-format
+msgid ""
+"E1179: Failed to extract PWD from %s, check your shell's config related to "
+"OSC 7"
+msgstr ""
+"E1179: Није успело издвајање PWD из %s, проверите подешавање командног окружења "
+"које се тиче OSC 7"
+
+#, c-format
+msgid "E1180: Variable arguments type must be a list: %s"
+msgstr "E1180: Тип променљивих аргумената мора бити листа: %s"
+
+msgid "E1181: Cannot use an underscore here"
+msgstr "E1181: Овде не може да се користи доња црта"
+
+msgid "E1182: Blob required"
+msgstr "E1182: Потребан је Блоб"
+
+#, c-format
+msgid "E1183: Cannot use a range with an assignment operator: %s"
+msgstr "E1183: Опсег не може да се користи са оператором доделе: %s"
+
+msgid "E1184: Blob not set"
+msgstr "E1184: Blob није постављен"
+
+msgid "E1185: Cannot nest :redir"
+msgstr "E1185: :redir не може да се угњеждава"
+
+msgid "E1185: Missing :redir END"
+msgstr "E1185: Недостаје :redir END"
+
+#, c-format
+msgid "E1186: Expression does not result in a value: %s"
+msgstr "E1186: Резултат израза није вредност: %s"
+
+msgid "E1187: Failed to source defaults.vim"
+msgstr "E1187: Није успело учитавање defaults.vim"
+
+msgid "E1188: Cannot open a terminal from the command line window"
+msgstr "E1188: Из прозора командне линије не може да се отвори терминал"
+
+#, c-format
+msgid "E1189: Cannot use :legacy with this command: %s"
+msgstr "E1189: :legacy не може да се користи са овом командом: %s"
+
+msgid "E1190: One argument too few"
+msgstr "E1190: Фали један аргумент"
+
+#, c-format
+msgid "E1190: %d arguments too few"
+msgstr "E1190: фали %d аргумената"
+
+#, c-format
+msgid "E1191: Call to function that failed to compile: %s"
+msgstr "E1191: Позив функције која није успела да се компајлира: %s"
msgid "--No lines in buffer--"
msgstr "--У баферу нема линија--"
@@ -7355,8 +7469,8 @@ msgid "E475: Invalid value for argument %s: %s"
msgstr "E475: Неважећа вредност за аргумент %s: %s"
#, c-format
-msgid "E15: Invalid expression: %s"
-msgstr "E15: Неважећи израз: %s"
+msgid "E15: Invalid expression: \"%s\""
+msgstr "E15: Неважећи израз: „%s”"
msgid "E16: Invalid range"
msgstr "E16: Неважећи опсег"
@@ -7591,9 +7705,6 @@ msgstr "E896: Аргумент за %s мора бити Листа, Речни
msgid "E804: Cannot use '%' with Float"
msgstr "E804: '%' не може да се користи са Покретни"
-msgid "E908: using an invalid value as a String"
-msgstr "E908: Користи се недозвољена вредност као Стринг"
-
msgid "E996: Cannot lock an option"
msgstr "E996: Опција не може да се закључа"
@@ -8133,6 +8244,9 @@ msgstr "Уређујте текст фајлове"
msgid "Text;editor;"
msgstr "Текст;едитор;"
+msgid "gvim"
+msgstr "gvim"
+
msgid "Vim"
msgstr "Vim"
@@ -8233,6 +8347,9 @@ msgstr "листа имена директоријума који се кори
msgid "change to directory of file in buffer"
msgstr "мења на директоријум фајла у баферу"
+msgid "change to pwd of shell in terminal buffer"
+msgstr "мења на pwd командног окружења терминал баферу"
+
msgid "search commands wrap around the end of the buffer"
msgstr "команде претраге се обавијају око краја бафера"
@@ -8245,7 +8362,7 @@ msgstr ""
"претраге"
msgid "select the default regexp engine used"
-msgstr "бира подразумевани регизраз механизам"
+msgstr "бира подразумевани механизам регуларних израза"
msgid "ignore case when using a search pattern"
msgstr "не прави разлику у величини слова када се користи шаблон претраге"
@@ -8837,7 +8954,7 @@ msgid ""
"\"autoselect\" to always put selected text on the clipboard"
msgstr ""
"„unnamed” да се користи * регистар као неименовани регистар\n"
-"„autoselect” да се изабрани текст увек ставља у клипборд"
+"„autoselect” да се изабрани текст увек ставља у системску оставу"
msgid "\"startsel\" and/or \"stopsel\"; what special keys can do"
msgstr "„startsel” и/или „stopsel”; шта могу да ураде специјални тастери"