changeset 24024:ef454a7f485d

Update runtime files. Commit: https://github.com/vim/vim/commit/9faec4e3d439968e21ad74e917aebb289df8f849 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 27 16:38:07 2021 +0100 Update runtime files.
author Bram Moolenaar <Bram@vim.org>
date Sat, 27 Feb 2021 16:45:04 +0100
parents 9b4821b59aa8
children edcb6cf55a26
files .github/CODEOWNERS README_VIM9.md runtime/autoload/syntaxcomplete.vim runtime/compiler/sml.vim runtime/doc/index.txt runtime/doc/pattern.txt runtime/doc/popup.txt runtime/doc/repeat.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/usr_04.txt runtime/doc/vim9.txt runtime/ftplugin/lisp.vim runtime/ftplugin/vim.vim runtime/indent/vim.vim runtime/syntax/html.vim runtime/syntax/lhaskell.vim runtime/syntax/python.vim src/po/sr.po
diffstat 19 files changed, 386 insertions(+), 257 deletions(-) [+]
line wrap: on
line diff
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -51,6 +51,7 @@ runtime/compiler/rubyunit.vim		@dkearns
 runtime/compiler/sass.vim		@tpope
 runtime/compiler/se.vim			@dkearns
 runtime/compiler/shellcheck.vim		@dkearns
+runtime/compiler/sml.vim		@dkearns
 runtime/compiler/stylelint.vim		@dkearns
 runtime/compiler/tcl.vim		@dkearns
 runtime/compiler/tidy.vim		@dkearns
--- a/README_VIM9.md
+++ b/README_VIM9.md
@@ -70,6 +70,7 @@ the text.  For example, reindent all the
 | Vim new | 0.190276 |
 
 The differences are smaller, but Vim 9 script is clearly the fastest.
+Using LuaJIT gives 0.25, only a little bit faster than plain Lua.
 
 How does Vim9 script work?  The function is first compiled into a sequence of
 instructions.  Each instruction has one or two parameters and a stack is
--- a/runtime/autoload/syntaxcomplete.vim
+++ b/runtime/autoload/syntaxcomplete.vim
@@ -1,12 +1,16 @@
 " Vim completion script
 " Language:    All languages, uses existing syntax highlighting rules
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Version:     13.0
-" Last Change: 2019 Aug 08
+" Version:     14.0
+" Last Change: 2020 Dec 30
 " Usage:       For detailed help, ":help ft-syntax-omni"
 
 " History
 "
+" Version 14.0
+"   - Fixed issue with single quotes and is_keyword
+"     https://github.com/vim/vim/issues/7463
+"
 " Version 13.0
 "   - Extended the option omni_syntax_group_include_{filetype}
 "     to accept a comma separated list of regex's rather than
@@ -179,7 +183,8 @@ function! syntaxcomplete#Complete(findst
     endif
 
     " let base = s:prepended . a:base
-    let base = s:prepended
+    " let base = s:prepended
+    let base = substitute(s:prepended, "'", "''", 'g')
 
     let filetype = substitute(&filetype, '\.', '_', 'g')
     let list_idx = index(s:cache_name, filetype, 0, &ignorecase)
@@ -548,7 +553,7 @@ function! s:SyntaxCSyntaxGroupItems( gro
         " let syn_list = substitute( @l, '^.*xxx\s*\%(contained\s*\)\?', "", '' )
         " let syn_list = substitute( @l, '^.*xxx\s*', "", '' )
 
-        " We only want the words for the lines begining with
+        " We only want the words for the lines beginning with
         " containedin, but there could be other items.
 
         " Tried to remove all lines that do not begin with contained
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/sml.vim
@@ -0,0 +1,28 @@
+" Vim compiler file
+" Compiler:	SML/NJ Compiler
+" Maintainer:	Doug Kearns <dougkearns@gmail.com>
+" Last Change:	2020 Feb 10
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "sml"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+CompilerSet makeprg=sml
+CompilerSet errorformat=%f:%l.%c-%\\d%\\+.%\\d%\\+\ %trror:\ %m,
+		       \%f:%l.%c\ %trror:\ %m,
+		       \%trror:\ %m
+		       \%f:%l.%c-%\\d%\\+.%\\d%\\+\ %tarning:\ %m,
+		       \%f:%l.%c\ %tarning:\ %m,
+		       \%tarning:\ %m,
+		       \%-G%.%#
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 8.2.  Last change: 2021 Feb 11
+*index.txt*     For Vim version 8.2.  Last change: 2021 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1699,7 +1699,8 @@ tag		command		action ~
 |:version|	:ve[rsion]	print version number and other info
 |:verbose|	:verb[ose]	execute command with 'verbose' set
 |:vertical|	:vert[ical]	make following command split vertically
-|:vim9script|	:vim9[script]	indicates Vim9 script file
+|:vim9cmd|	:vim9[cmd]	make following command use Vim9 script syntax
+|:vim9script|	:vim9s[cript]	indicates Vim9 script file
 |:vimgrep|	:vim[grep]	search for pattern in files
 |:vimgrepadd|	:vimgrepa[dd]	like :vimgrep, but append to current list
 |:visual|	:vi[sual]	same as ":edit", but turns off "Ex" mode
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 8.2.  Last change: 2021 Jan 08
+*pattern.txt*   For Vim version 8.2.  Last change: 2021 Feb 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -229,7 +229,7 @@ This is like executing two search comman
 							*last-pattern*
 The last used pattern and offset are remembered.  They can be used to repeat
 the search, possibly in another direction or with another count.  Note that
-two patterns are remembered: One for 'normal' search commands and one for the
+two patterns are remembered: One for "normal" search commands and one for the
 substitute command ":s".  Each time an empty pattern is given, the previously
 used pattern is used.  However, if there is no previous search command, a
 previous substitute pattern is used, if possible.
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt*  For Vim version 8.2.  Last change: 2021 Feb 06
+*popup.txt*  For Vim version 8.2.  Last change: 2021 Feb 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -693,8 +693,8 @@ The second argument of |popup_create()| 
 			the left.
 	border		List with numbers, defining the border thickness
 			above/right/below/left of the popup (similar to CSS).
-			Only values of zero and non-zero are recognized.
-			An empty list uses a border all around.
+			Only values of zero and non-zero are currently
+			recognized.  An empty list uses a border all around.
 	borderhighlight	List of highlight group names to use for the border.
 			When one entry it is used for all borders, otherwise
 			the highlight for the top/right/bottom/left border.
@@ -742,10 +742,10 @@ The second argument of |popup_create()| 
 			line or to another window.
 	mousemoved	Like "moved" but referring to the mouse pointer
 			position
-	cursorline	non-zero: Highlight the cursor line. Also scrolls the
-				  text to show this line (only works properly
-				  when 'wrap' is off).
-			zero: 	  Do not highlight the cursor line.
+	cursorline	TRUE:	 Highlight the cursor line. Also scrolls the
+				 text to show this line (only works properly
+				 when 'wrap' is off).
+			zero: 	 Do not highlight the cursor line.
 			Default is zero, except for |popup_menu()|.
 	filter		A callback that can filter typed characters, see
 			|popup-filter|.
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 8.2.  Last change: 2021 Jan 23
+*repeat.txt*    For Vim version 8.2.  Last change: 2021 Feb 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -879,7 +879,7 @@ DEFINING BREAKPOINTS
 		valid in the script where it has been defined and if that
 		script is called from several other scripts, this will stop
 		whenever that particular variable will become visible or
-		unaccessible again.
+		inaccessible again.
 
 The [lnum] is the line number of the breakpoint.  Vim will stop at or after
 this line.  When omitted line 1 is used.
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3402,7 +3402,9 @@ 90.5	usr_90.txt	/*90.5*
 :vie	editing.txt	/*:vie*
 :view	editing.txt	/*:view*
 :vim	quickfix.txt	/*:vim*
-:vim9	repeat.txt	/*:vim9*
+:vim9	vim9.txt	/*:vim9*
+:vim9cmd	vim9.txt	/*:vim9cmd*
+:vim9s	repeat.txt	/*:vim9s*
 :vim9script	repeat.txt	/*:vim9script*
 :vimgrep	quickfix.txt	/*:vimgrep*
 :vimgrepa	quickfix.txt	/*:vimgrepa*
@@ -10126,6 +10128,7 @@ vim9-export	vim9.txt	/*vim9-export*
 vim9-final	vim9.txt	/*vim9-final*
 vim9-gotchas	vim9.txt	/*vim9-gotchas*
 vim9-import	vim9.txt	/*vim9-import*
+vim9-mix	vim9.txt	/*vim9-mix*
 vim9-namespace	vim9.txt	/*vim9-namespace*
 vim9-rationale	vim9.txt	/*vim9-rationale*
 vim9-reload	vim9.txt	/*vim9-reload*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.2.  Last change: 2021 Feb 10
+*todo.txt*      For Vim version 8.2.  Last change: 2021 Feb 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -39,13 +39,8 @@ browser use: https://github.com/vim/vim/
 -------------------- Known bugs and current work -----------------------
 
 Vim9 - Make everything work:
-- Use ":vim9cmd" as a command modifier?  Then make ":vim9" short for that.
-- Add a test for profiling with nested function calls and lambda.
-- Expand `=expr` in :next, :argedit, :argadd, :argdelete, :drop
-- Expand `=expr` in :vimgrep, :vimgrepadd, :lvimgrep, :lvimgrepadd
-- Expand `=expr` in :mkspell
-- Unlet with range: "unlet list[a : b]"
 - Implement "export {one, two three}".
+- Disallow :open ?
 - ISN_CHECKTYPE could use check_argtype()
 - Using a script variable inside a :def function doesn't work if the variable
   is inside a block, see Test_nested_function().  Should it work?
@@ -110,10 +105,11 @@ Vim9 - Make everything work:
 
 Once Vim9 is stable:
 - 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
-- Add all the error numbers in a good place in documentation.
-- In the generic eval docs, point out the Vim9 syntax where it differs.
 
 Also for Vim9:
 - better implementation for partial and tests for that.
@@ -198,8 +194,6 @@ Text properties:
 'incsearch' with :s:
 - :s/foo  using CTRL-G moves to another line, should not happen, or use the
   correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345)
-- :s@pat/tern@ doesn't include "/" in the pattern. (Takahiro Yoshihara, #3637)
-   pass delim to do_search() ?
 - Also support range: :/foo/,/bar/delete
 - Also support for user command, e.g. Cfilter
 - :%s/foo should take the first match below the cursor line, unless there
@@ -269,7 +263,7 @@ Terminal emulator window:
 - When 'encoding' is not utf-8, or the job is using another encoding, setup
   conversions.
 
-Valgind reports memory leaks in test_options
+Valgrind reports memory leaks in test_options
 
 test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
 
@@ -770,8 +764,6 @@ Memory leaks in test_channel? (or is it 
 matchaddpos() gets slow with many matches.  Proposal by Rick Howe, 2018 Jul
 19.
 
-Should make 'listchars' global-local.  Local to window or to buffer?
-Probably window.  #5206
 Add something like 'fillchars' local to window, but allow for specifying a
 highlight name.  Esp. for the statusline.
 And "extends" and "precedes" are also useful without 'list' set.  Also in
@@ -1241,6 +1233,8 @@ Undo problem: "g-" doesn't go back, gets stuck. (Björn Linse, 2016 Jul 18)
 Add "unicode true" to NSIS installer.  Doesn't work with Windows 95, which we
 no longer support.
 
+Suppoert sort(l, 'F'), convert strings to float. (#7857)
+
 sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep
 4#1038)
 
--- a/runtime/doc/usr_04.txt
+++ b/runtime/doc/usr_04.txt
@@ -1,4 +1,4 @@
-*usr_04.txt*	For Vim version 8.2.  Last change: 2019 Nov 21
+*usr_04.txt*	For Vim version 8.2.  Last change: 2021 Feb 22
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -464,9 +464,9 @@ of characters to replace.  It will not c
 
 You can switch between Insert mode and Replace mode with the <Insert> key.
 
-When you use <BS> (backspace) to make correction, you will notice that the
-old text is put back.  Thus it works like an undo command for the last typed
-character.
+When you use <BS> (backspace) to make a correction, you will notice that the
+old text is put back.  Thus it works like an undo command for the previously
+typed character.
 
 ==============================================================================
 *04.10*	Conclusion
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1,4 +1,4 @@
-*vim9.txt*	For Vim version 8.2.  Last change: 2021 Feb 03
+*vim9.txt*	For Vim version 8.2.  Last change: 2021 Feb 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -279,8 +279,8 @@ without any command.  The same for globa
 variables, because they are not really declared.  They can also be deleted
 with `:unlet`.
 
-Variables and functions cannot shadow previously defined or imported variables
-and functions.
+Variables, functions and function arguments cannot shadow previously defined
+or imported variables and functions in the same script file.
 Variables may shadow Ex commands, rename the variable if needed.
 
 Global variables and user defined functions must be prefixed with "g:", also
@@ -307,14 +307,14 @@ Example: >
 	const myList = [1, 2]
 	myList = [3, 4]		# Error!
 	myList[0] = 9		# Error!
-	muList->add(3)		# Error!
+	myList->add(3)		# Error!
 <							*:final*
 `:final` is used for making only the variable a constant, the value can be
 changed.  This is well known from Java.  Example: >
 	final myList = [1, 2]
 	myList = [3, 4]		# Error!
 	myList[0] = 9		# OK
-	muList->add(3)		# OK
+	myList->add(3)		# OK
 
 It is common to write constants as ALL_CAPS, but you don't have to.
 
@@ -412,7 +412,7 @@ NOT IMPLEMENTED YET
 
 							*vim9-curly*
 To avoid the "{" of a dictionary literal to be recognized as a statement block
-wrap it in parenthesis: >
+wrap it in parentheses: >
 	var Lambda = (arg) => ({key: 42})
 
 Also when confused with the start of a command block: >
@@ -1029,10 +1029,14 @@ an error, thus breaking backwards compat
 - Using a number where a string is expected.   *E1024*
 
 One consequence is that the item type of a list or dict given to map() must
-not change.  This will give an error in compiled code: >
+not change.  This will give an error in Vim9 script: >
 	map([1, 2, 3], (i, v) => 'item ' .. i)
-	E1012: Type mismatch; expected list<number> but got list<string>
-Instead use |mapnew()|.
+	E1012: Type mismatch; expected number but got string
+Instead use |mapnew()|.  If the item type was determined to be "any" it can
+change to a more specific type.  E.g. when a list of mixed types gets changed
+to a list of numbers.
+Same for |extend()|, use |extendnew()| instead, and for |flatten()|, use
+|flattennew()| instead.
 
 ==============================================================================
 
@@ -1084,7 +1088,7 @@ There is one way to use both legacy and 
 	vim9script
 	# Vim9 script commands go here
 This allows for writing a script that takes advantage of the Vim9 script
-syntax if possible, but will also work on an Vim version without it.
+syntax if possible, but will also work on a Vim version without it.
 
 This can only work in two ways:
 1. The "if" statement evaluates to false, the commands up to `endif` are
--- a/runtime/ftplugin/lisp.vim
+++ b/runtime/ftplugin/lisp.vim
@@ -14,13 +14,11 @@ endif
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setl comments=:;
+setl comments=:;;;;,:;;;,:;;,:;,sr:#\|,mb:\|,ex:\|#
 setl define=^\\s*(def\\k*
 setl formatoptions-=t
 setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94
 setl lisp
 setl commentstring=;%s
 
-setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|#
-
 let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lisp< commentstring<"
--- a/runtime/ftplugin/vim.vim
+++ b/runtime/ftplugin/vim.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin
 " Language:	Vim
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2021 Feb 07
+" Last Change:	2021 Feb 20
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -54,7 +54,7 @@ if "\n" .. getline(1, 10)->join("\n") =~
   " Comments starts with # in Vim9 script
   setlocal commentstring=#%s
 else
-  setlocal com=sO:\"\ -,mO:\"\ \ ,:\"
+  setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\"
   " Comments starts with a double quote in legacy script
   setlocal commentstring=\"%s
 endif
--- a/runtime/indent/vim.vim
+++ b/runtime/indent/vim.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Vim script
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2021 Feb 13
+" Last Change:	2021 Feb 18
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -160,9 +160,9 @@ function GetVimIndentIntern()
   endif
 
   let ends_in_comment = has('syntax_items')
-	      \ && synIDattr(synID(lnum, col('$'), 1), "name") =~ '\(Comment\|String\)$'
+	\ && synIDattr(synID(lnum, len(getline(lnum)), 1), "name") =~ '\(Comment\|String\)$'
 
-  " A line ending in "{"/"[} is most likely the start of a dict/list literal,
+  " A line ending in "{" or "[" is most likely the start of a dict/list literal,
   " indent the next line more.  Not for a continuation line or {{{.
   if !ends_in_comment && prev_text_end =~ '\s[{[]\s*$' && !found_cont
     let ind = ind + shiftwidth()
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -1,10 +1,10 @@
 " Vim syntax file
 " Language:             HTML
-" Maintainer:           Jorge Maldonado Ventura <jorgesumle@freakspot.net>
+" Previous Maintainer:  Jorge Maldonado Ventura <jorgesumle@freakspot.net>
 " Previous Maintainer:  Claudio Fleiner <claudio@fleiner.com>
 " Repository:           https://notabug.org/jorgesumle/vim-html-syntax
-" Last Change:          2020 Mar 17
-" Included patch from Florian Breisch to add the summary element
+" Last Change:          2021 Feb 25
+"			Included patch #7900 to fix comments
 "
 
 " Please check :help html.vim for some comments and a description of the options
@@ -141,9 +141,21 @@ syn match htmlSpecialChar "&#\=[0-9A-Za-
 if exists("html_wrong_comments")
   syn region htmlComment                start=+<!--+    end=+--\s*>+ contains=@Spell
 else
-  syn region htmlComment                start=+<!+      end=+>+   contains=htmlCommentPart,htmlCommentError,@Spell
-  syn match  htmlCommentError contained "[^><!]"
-  syn region htmlCommentPart  contained start=+--+      end=+--\s*+  contains=@htmlPreProc,@Spell
+  " The HTML 5.2 syntax 8.2.4.41-42: bogus comment is parser error; browser skips until next &gt;
+  " Note: must stand first to get lesser :syn-priority
+  syn region htmlComment                start=+<!+      end=+>+     contains=htmlCommentError
+  " Normal comment opening <!-- ...>
+  syn region htmlComment                start=+<!--+    end=+>+     contains=htmlCommentPart,@Spell
+  " Idem 8.2.4.43-44: <!--> and <!---> are parser errors; browser treats as comments
+  syn match htmlComment "<!---\?>" contains=htmlCommentError
+  " Idem 8.2.4.51: any number of consecutive dashes within comment is okay; --> closes comment
+  " Idem 8.2.4.52: closing comment by dash-dash-bang (--!>) is error ignored by parser(!); closes comment
+  syn region htmlCommentPart  contained start=+--+      end=+--!\?>+me=e-1  contains=htmlCommentNested,@htmlPreProc,@Spell
+  " Idem 8.2.4.49: opening nested comment <!-- is parser error, ignored by browser, except <!--> is all right
+  syn match htmlCommentNested contained "<!--[^>]"me=e-1
+  syn match htmlCommentNested contained "<!--->"me=e-3
+  syn match htmlCommentNested contained "<!---\?!>"me=e-4
+  syn match htmlCommentError contained "[^><!]"
 endif
 syn region htmlComment                  start=+<!DOCTYPE+ keepend end=+>+
 
@@ -317,6 +329,7 @@ hi def link htmlStatement          State
 hi def link htmlComment            Comment
 hi def link htmlCommentPart        Comment
 hi def link htmlValue              String
+hi def link htmlCommentNested      htmlCommentError
 hi def link htmlCommentError       htmlError
 hi def link htmlTagError           htmlError
 hi def link htmlEvent              javaScript
--- a/runtime/syntax/lhaskell.vim
+++ b/runtime/syntax/lhaskell.vim
@@ -1,11 +1,11 @@
 " Vim syntax file
 " Language:		Haskell with literate comments, Bird style,
-"			TeX style and plain text surrounding
+"			Markdown style, TeX style and plain text surrounding
 "			\begin{code} \end{code} blocks
 " Maintainer:		Haskell Cafe mailinglist <haskell-cafe@haskell.org>
 " Original Author:	Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change:		2010 Apr 11
-" Version:		1.04
+" Last Change:		2020 Feb 25
+" Version:		1.05
 "
 " Thanks to Ian Lynagh for thoughtful comments on initial versions and
 " for the inspiration for writing this in the first place.
@@ -44,8 +44,8 @@ endif
 " First off, see if we can inherit a user preference for lhs_markup
 if !exists("b:lhs_markup")
     if exists("lhs_markup")
-	if lhs_markup =~ '\<\%(tex\|none\)\>'
-	    let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|none\)\>')
+	if lhs_markup =~ '\<\%(tex\|md\|none\)\>'
+	    let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|md\|none\)\>')
 	else
 	    echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None
 	    let b:lhs_markup = "unknown"
@@ -54,7 +54,7 @@ if !exists("b:lhs_markup")
 	let b:lhs_markup = "unknown"
     endif
 else
-    if b:lhs_markup !~ '\<\%(tex\|none\)\>'
+    if b:lhs_markup !~ '\<\%(tex\|md\|none\)\>'
 	let b:lhs_markup = "unknown"
     endif
 endif
@@ -74,6 +74,8 @@ call cursor(1,1)
 if b:lhs_markup == "unknown"
     if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
 	let b:lhs_markup = "tex"
+    elseif search('```haskell','W') != 0
+        let b:lhs_markup = "md"
     else
 	let b:lhs_markup = "plain"
     endif
@@ -86,6 +88,10 @@ if b:lhs_markup == "tex"
     " Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
     setlocal isk+=_
     syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
+elseif b:lhs_markup == "md"
+    runtime! syntax/markdown.vim
+    unlet b:current_syntax
+    syntax cluster lhsTeXContainer contains=markdown.*
 else
     syntax cluster lhsTeXContainer contains=.*
 endif
@@ -96,9 +102,12 @@ syntax include @haskellTop syntax/haskel
 
 syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
 syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
+syntax region lhsHaskellMDBlock start="^```haskell$" matchgroup=NONE end="^```$" keepend contains=@haskellTop,lhsMarkdownCode containedin=@lhsTeXContainer
 
 syntax match lhsBirdTrack "^>" contained
 
+syntax match lhsMarkdownCode "^\(```haskell\|^```\)$" contained
+
 syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
 syntax region beginCodeCode  matchgroup=texDelimiter start="{" end="}"
 
@@ -107,6 +116,8 @@ syntax region beginCodeCode  matchgroup=
 
 hi def link lhsBirdTrack Comment
 
+hi def link lhsMarkdownCode Comment
+
 hi def link beginCodeBegin	      texCmdName
 hi def link beginCodeCode	      texSection
 
--- a/runtime/syntax/python.vim
+++ b/runtime/syntax/python.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Python
 " Maintainer:	Zvezdan Petkovic <zpetkovic@acm.org>
-" Last Change:	2016 Oct 29
+" Last Change:	2021 Feb 15
 " Credits:	Neil Schemenauer <nas@python.ca>
 "		Dmitry Vasiliev
 "
@@ -71,30 +71,17 @@ endif
 
 " Keep Python keywords in alphabetical order inside groups for easy
 " comparison with the table in the 'Python Language Reference'
-" https://docs.python.org/2/reference/lexical_analysis.html#keywords,
-" https://docs.python.org/3/reference/lexical_analysis.html#keywords.
+" https://docs.python.org/reference/lexical_analysis.html#keywords.
 " Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
 " Exceptions come last at the end of each group (class and def below).
 "
-" Keywords 'with' and 'as' are new in Python 2.6
-" (use 'from __future__ import with_statement' in Python 2.5).
-"
-" Some compromises had to be made to support both Python 3 and 2.
-" We include Python 3 features, but when a definition is duplicated,
-" the last definition takes precedence.
+" The list can be checked using:
 "
-" - 'False', 'None', and 'True' are keywords in Python 3 but they are
-"   built-ins in 2 and will be highlighted as built-ins below.
-" - 'exec' is a built-in in Python 3 and will be highlighted as
-"   built-in below.
-" - 'nonlocal' is a keyword in Python 3 and will be highlighted.
-" - 'print' is a built-in in Python 3 and will be highlighted as
-"   built-in below (use 'from __future__ import print_function' in 2)
-" - async and await were added in Python 3.5 and are soft keywords.
+" python3 -c 'import keyword, pprint; pprint.pprint(keyword.kwlist, compact=True)'
 "
 syn keyword pythonStatement	False None True
-syn keyword pythonStatement	as assert break continue del exec global
-syn keyword pythonStatement	lambda nonlocal pass print return with yield
+syn keyword pythonStatement	as assert break continue del global
+syn keyword pythonStatement	lambda nonlocal pass return with yield
 syn keyword pythonStatement	class def nextgroup=pythonFunction skipwhite
 syn keyword pythonConditional	elif else if
 syn keyword pythonRepeat	for while
@@ -103,7 +90,7 @@ syn keyword pythonException	except final
 syn keyword pythonInclude	from import
 syn keyword pythonAsync		async await
 
-" Decorators (new in Python 2.4)
+" Decorators
 " A dot must be allowed because of @MyClass.myfunc decorators.
 syn match   pythonDecorator	"@" display contained
 syn match   pythonDecoratorName	"@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator
@@ -168,8 +155,7 @@ syn match   pythonEscape	"\\$"
 " - 08e0 or 08j are highlighted,
 "
 " and so on, as specified in the 'Python Language Reference'.
-" https://docs.python.org/2/reference/lexical_analysis.html#numeric-literals
-" https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals
+" https://docs.python.org/reference/lexical_analysis.html#numeric-literals
 if !exists("python_no_number_highlight")
   " numbers (including longs and complex)
   syn match   pythonNumber	"\<0[oO]\=\o\+[Ll]\=\>"
@@ -186,37 +172,37 @@ endif
 
 " Group the built-ins in the order in the 'Python Library Reference' for
 " easier comparison.
-" https://docs.python.org/2/library/constants.html
-" https://docs.python.org/3/library/constants.html
-" http://docs.python.org/2/library/functions.html
-" http://docs.python.org/3/library/functions.html
-" http://docs.python.org/2/library/functions.html#non-essential-built-in-functions
-" http://docs.python.org/3/library/functions.html#non-essential-built-in-functions
+" https://docs.python.org/library/constants.html
+" http://docs.python.org/library/functions.html
 " Python built-in functions are in alphabetical order.
+"
+" The list can be checked using:
+"
+" python3 -c 'import builtins, pprint; pprint.pprint(dir(builtins), compact=True)'
+"
+" The constants added by the `site` module are not listed below because they
+" should not be used in programs, only in interactive interpreter.
+" Similarly for some other attributes and functions `__`-enclosed from the
+" output of the above command.
+"
 if !exists("python_no_builtin_highlight")
   " built-in constants
   " 'False', 'True', and 'None' are also reserved words in Python 3
   syn keyword pythonBuiltin	False True None
   syn keyword pythonBuiltin	NotImplemented Ellipsis __debug__
+  " constants added by the `site` module
+  syn keyword pythonBuiltin	quit exit copyright credits license
   " built-in functions
-  syn keyword pythonBuiltin	abs all any bin bool bytearray callable chr
-  syn keyword pythonBuiltin	classmethod compile complex delattr dict dir
-  syn keyword pythonBuiltin	divmod enumerate eval filter float format
-  syn keyword pythonBuiltin	frozenset getattr globals hasattr hash
-  syn keyword pythonBuiltin	help hex id input int isinstance
+  syn keyword pythonBuiltin	abs all any ascii bin bool breakpoint bytearray
+  syn keyword pythonBuiltin	bytes callable chr classmethod compile complex
+  syn keyword pythonBuiltin	delattr dict dir divmod enumerate eval exec
+  syn keyword pythonBuiltin	filter float format frozenset getattr globals
+  syn keyword pythonBuiltin	hasattr hash help hex id input int isinstance
   syn keyword pythonBuiltin	issubclass iter len list locals map max
   syn keyword pythonBuiltin	memoryview min next object oct open ord pow
   syn keyword pythonBuiltin	print property range repr reversed round set
-  syn keyword pythonBuiltin	setattr slice sorted staticmethod str
-  syn keyword pythonBuiltin	sum super tuple type vars zip __import__
-  " Python 2 only
-  syn keyword pythonBuiltin	basestring cmp execfile file
-  syn keyword pythonBuiltin	long raw_input reduce reload unichr
-  syn keyword pythonBuiltin	unicode xrange
-  " Python 3 only
-  syn keyword pythonBuiltin	ascii bytes exec
-  " non-essential built-in functions; Python 2 only
-  syn keyword pythonBuiltin	apply buffer coerce intern
+  syn keyword pythonBuiltin	setattr slice sorted staticmethod str sum super
+  syn keyword pythonBuiltin	tuple type vars zip __import__
   " avoid highlighting attributes as builtins
   syn match   pythonAttribute	/\.\h\w*/hs=s+1
 	\ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync
@@ -224,28 +210,27 @@ if !exists("python_no_builtin_highlight"
 endif
 
 " From the 'Python Library Reference' class hierarchy at the bottom.
-" http://docs.python.org/2/library/exceptions.html
-" http://docs.python.org/3/library/exceptions.html
+" http://docs.python.org/library/exceptions.html
 if !exists("python_no_exception_highlight")
   " builtin base exceptions (used mostly as base classes for other exceptions)
   syn keyword pythonExceptions	BaseException Exception
-  syn keyword pythonExceptions	ArithmeticError BufferError
-  syn keyword pythonExceptions	LookupError
-  " builtin base exceptions removed in Python 3
-  syn keyword pythonExceptions	EnvironmentError StandardError
+  syn keyword pythonExceptions	ArithmeticError BufferError LookupError
   " builtin exceptions (actually raised)
-  syn keyword pythonExceptions	AssertionError AttributeError
-  syn keyword pythonExceptions	EOFError FloatingPointError GeneratorExit
-  syn keyword pythonExceptions	ImportError IndentationError
-  syn keyword pythonExceptions	IndexError KeyError KeyboardInterrupt
-  syn keyword pythonExceptions	MemoryError NameError NotImplementedError
-  syn keyword pythonExceptions	OSError OverflowError ReferenceError
-  syn keyword pythonExceptions	RuntimeError StopIteration SyntaxError
+  syn keyword pythonExceptions	AssertionError AttributeError EOFError
+  syn keyword pythonExceptions	FloatingPointError GeneratorExit ImportError
+  syn keyword pythonExceptions	IndentationError IndexError KeyError
+  syn keyword pythonExceptions	KeyboardInterrupt MemoryError
+  syn keyword pythonExceptions	ModuleNotFoundError NameError
+  syn keyword pythonExceptions	NotImplementedError OSError OverflowError
+  syn keyword pythonExceptions	RecursionError ReferenceError RuntimeError
+  syn keyword pythonExceptions	StopAsyncIteration StopIteration SyntaxError
   syn keyword pythonExceptions	SystemError SystemExit TabError TypeError
-  syn keyword pythonExceptions	UnboundLocalError UnicodeError
-  syn keyword pythonExceptions	UnicodeDecodeError UnicodeEncodeError
+  syn keyword pythonExceptions	UnboundLocalError UnicodeDecodeError
+  syn keyword pythonExceptions	UnicodeEncodeError UnicodeError
   syn keyword pythonExceptions	UnicodeTranslateError ValueError
   syn keyword pythonExceptions	ZeroDivisionError
+  " builtin exception aliases for OSError
+  syn keyword pythonExceptions	EnvironmentError IOError WindowsError
   " builtin OS exceptions in Python 3
   syn keyword pythonExceptions	BlockingIOError BrokenPipeError
   syn keyword pythonExceptions	ChildProcessError ConnectionAbortedError
@@ -253,18 +238,13 @@ if !exists("python_no_exception_highligh
   syn keyword pythonExceptions	ConnectionResetError FileExistsError
   syn keyword pythonExceptions	FileNotFoundError InterruptedError
   syn keyword pythonExceptions	IsADirectoryError NotADirectoryError
-  syn keyword pythonExceptions	PermissionError ProcessLookupError
-  syn keyword pythonExceptions	RecursionError StopAsyncIteration
-  syn keyword pythonExceptions	TimeoutError
-  " builtin exceptions deprecated/removed in Python 3
-  syn keyword pythonExceptions	IOError VMSError WindowsError
+  syn keyword pythonExceptions	PermissionError ProcessLookupError TimeoutError
   " builtin warnings
   syn keyword pythonExceptions	BytesWarning DeprecationWarning FutureWarning
   syn keyword pythonExceptions	ImportWarning PendingDeprecationWarning
-  syn keyword pythonExceptions	RuntimeWarning SyntaxWarning UnicodeWarning
+  syn keyword pythonExceptions	ResourceWarning RuntimeWarning
+  syn keyword pythonExceptions	SyntaxWarning UnicodeWarning
   syn keyword pythonExceptions	UserWarning Warning
-  " builtin warnings in Python 3
-  syn keyword pythonExceptions	ResourceWarning
 endif
 
 if exists("python_space_error_highlight")
--- a/src/po/sr.po
+++ b/src/po/sr.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim(Serbian)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-23 22:13+0400\n"
-"PO-Revision-Date: 2020-11-27 00:43+0400\n"
+"POT-Creation-Date: 2021-02-14 01:49+0400\n"
+"PO-Revision-Date: 2021-02-14 01:54+0400\n"
 "Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
 "Language-Team: Serbian\n"
 "Language: sr\n"
@@ -34,7 +34,7 @@ msgid "E610: No argument to delete"
 msgstr "E610: Нема аргумента за брисање"
 
 msgid "E249: window layout changed unexpectedly"
-msgstr "E249: распоред прозора се нечекивано променио"
+msgstr "E249: распоред прозора се неочекивано променио"
 
 msgid "--Deleted--"
 msgstr "--Обрисано--"
@@ -366,7 +366,7 @@ msgstr ""
 "празно да премостите)"
 
 msgid "E514: write error (file system full?)"
-msgstr "E514: грешка при упису (систем фајллова је пун?)"
+msgstr "E514: грешка при упису (систем фајлова је пун?)"
 
 msgid " CONVERSION ERROR"
 msgstr " ГРЕШКА КОНВЕРЗИЈЕ"
@@ -432,7 +432,7 @@ msgid "E901: gethostbyname() in channel_
 msgstr "E901: gethostbyname() у channel_open()"
 
 msgid "E903: received command with non-string argument"
-msgstr "E903: примњена команда са аргуменом који није стринг"
+msgstr "E903: примљена команда са аргументом који није стринг"
 
 msgid "E904: last argument for expr/call must be a number"
 msgstr "E904: последњи аргумент за expr/call мора бити број"
@@ -502,7 +502,7 @@ msgid "E258: Unable to send to client"
 msgstr "E258: Слање ка клијенту није могуће"
 
 msgid "Used CUT_BUFFER0 instead of empty selection"
-msgstr "Уместо празне селекције корићен је CUT_BUFFER0"
+msgstr "Уместо празне селекције коришћен је CUT_BUFFER0"
 
 msgid "tagname"
 msgstr "ознака"
@@ -814,7 +814,7 @@ msgstr "E962: Неисправна акција: '%s'"
 
 #, c-format
 msgid "E935: invalid submatch number: %d"
-msgstr "E935: неисправан број подпоклапања: %d"
+msgstr "E935: неисправан број подподударања: %d"
 
 msgid "E991: cannot use =<< here"
 msgstr "E991: овде не може да се користи =<<"
@@ -1010,13 +1010,13 @@ msgid "%ld match on %ld line"
 msgid_plural "%ld matches on %ld line"
 msgstr[0] "%ld подударање у %ld линији"
 msgstr[1] "%ld подударања у %ld линији"
-msgstr[2] "%ld подударањa у %ld линији"
+msgstr[2] "%ld подударања у %ld линији"
 
 #, c-format
 msgid "%ld substitution on %ld line"
 msgid_plural "%ld substitutions on %ld line"
 msgstr[0] "%ld замена у %ld линији"
-msgstr[1] "%ld заменe у %ld линији"
+msgstr[1] "%ld замене у %ld линији"
 msgstr[2] "%ld замена у %ld линији"
 
 #, c-format
@@ -1101,9 +1101,6 @@ msgstr "Крај изворишног фајла"
 msgid "End of function"
 msgstr "Крај функције"
 
-msgid "E464: Ambiguous use of user-defined command"
-msgstr "E464: Двосмислена употреба кориснички дефинисане команде"
-
 msgid "E492: Not an editor command"
 msgstr "E492: Није команда едитора"
 
@@ -1153,7 +1150,7 @@ msgid "E185: Cannot find color scheme '%
 msgstr "E185: Шема боја '%s' не може да се пронађе"
 
 msgid "Greetings, Vim user!"
-msgstr "Поздрав, корисниче Vim-a"
+msgstr "Поздрав, корисниче програма Vim!"
 
 msgid "E784: Cannot close last tab page"
 msgstr "E784: Последња картица не може да се затвори"
@@ -1183,7 +1180,7 @@ msgstr ""
 "премошћавање)"
 
 msgid "E186: No previous directory"
-msgstr "E186: Нема претгодног директоријума"
+msgstr "E186: Нема претходног директоријума"
 
 msgid "E187: Unknown"
 msgstr "E187: Непознато"
@@ -1254,7 +1251,7 @@ msgstr "E961: нема броја линије који би се користио за \"<sflnum>\""
 
 #, no-c-format
 msgid "E499: Empty file name for '%' or '#', only works with \":p:h\""
-msgstr "E499: Празно име фајла за'%' или '#', функционише само са \":p:h\""
+msgstr "E499: Празно име фајла за '%' или '#', функционише само са \":p:h\""
 
 msgid "E500: Evaluates to an empty string"
 msgstr "E500: Резултат израчунавања је празан стринг"
@@ -1351,6 +1348,9 @@ msgstr "E788: Уређивање другог бафера тренутно није дозвољено"
 msgid "E811: Not allowed to change buffer information now"
 msgstr "E811: Мењање информација о баферу тренутно није дозвољено"
 
+msgid "[Command Line]"
+msgstr "[Командна линија]"
+
 msgid "E199: Active window or buffer deleted"
 msgstr "E199: Active window or buffer deleted"
 
@@ -1595,20 +1595,20 @@ msgid "E447: Can't find file \"%s\" in p
 msgstr "E447: Фајл \"%s\" не може да се пронађе у путањи"
 
 msgid "E490: No fold found"
-msgstr "E490: Није пронађено ниједно склапање"
+msgstr "E490: Није пронађен ниједан свијутак"
 
 msgid "E350: Cannot create fold with current 'foldmethod'"
-msgstr "E350: Склапање не може да се креира са текућим 'foldmethod'"
+msgstr "E350: Текући 'foldmethod' не дозвољава креирање свијутака"
 
 msgid "E351: Cannot delete fold with current 'foldmethod'"
-msgstr "E351: Склапање не може да се обрише са текћим 'foldmethod'"
+msgstr "E351: Текући 'foldmethod' не дозвољава брисање свијутака"
 
 #, c-format
 msgid "+--%3ld line folded "
 msgid_plural "+--%3ld lines folded "
 msgstr[0] "+--%3ld линија подвијена"
-msgstr[1] "+--%3ld линијe подвијенe"
-msgstr[2] "+--%3ld линија подвијенo"
+msgstr[1] "+--%3ld линијe подвијене"
+msgstr[2] "+--%3ld линија подвијено"
 
 #, c-format
 msgid "+-%s%3ld line: "
@@ -1835,7 +1835,7 @@ msgstr ""
 
 #, c-format
 msgid "E250: Fonts for the following charsets are missing in fontset %s:"
-msgstr "E250: Фонтови за следеће сетове карактера недостају у фонтсету %s:"
+msgstr "E250: У фонтсету %s недостају фонтови за следеће скупове карактера:"
 
 #, c-format
 msgid "E252: Fontset name: %s"
@@ -1843,7 +1843,7 @@ msgstr "E252: Име фонтсета: %s"
 
 #, c-format
 msgid "Font '%s' is not fixed-width"
-msgstr "Фонт %s' није фиксне ширине"
+msgstr "Фонт '%s' није фиксне ширине"
 
 #, c-format
 msgid "E253: Fontset name: %s"
@@ -1859,7 +1859,7 @@ msgstr "Фонт%d: %s"
 
 #, c-format
 msgid "Font%d width is not twice that of font0"
-msgstr "Ширина фонт%d није два пута већа од ширине фонт0"
+msgstr "Фонт%d није два пута шири од фонт0"
 
 #, c-format
 msgid "Font0 width: %d"
@@ -2070,7 +2070,7 @@ msgstr "E414: група има поставке, highlight link се игнорише"
 
 #, c-format
 msgid "E415: unexpected equal sign: %s"
-msgstr "E415: неочкиван знак једнакости: %s"
+msgstr "E415: неочекиван знак једнакости: %s"
 
 #, c-format
 msgid "E416: missing equal sign: %s"
@@ -2237,7 +2237,7 @@ msgid "E625: cannot open cscope database
 msgstr "E625: cscope database: %s не може да се отвори"
 
 msgid "E626: cannot get cscope database information"
-msgstr "E626: Инфорамције о cscope бази података не могу да се добију"
+msgstr "E626: Информације о cscope бази података не могу да се добију"
 
 msgid "E568: duplicate cscope database not added"
 msgstr "E568: Дупликат cscope база података није додата"
@@ -2284,7 +2284,7 @@ msgid "Lua library cannot be loaded."
 msgstr "Lua библиотека не може да се учита"
 
 msgid "cannot save undo information"
-msgstr "инфорамције за опозив не могу да се сачувају"
+msgstr "информације за опозив не могу да се сачувају"
 
 msgid ""
 "E815: Sorry, this command is disabled, the MzScheme libraries could not be "
@@ -2349,7 +2349,7 @@ msgid "linenr out of range"
 msgstr "linenr је ван опсега"
 
 msgid "not allowed in the Vim sandbox"
-msgstr "није дозвољено у Vim sandbox-у"
+msgstr "није дозвољено унутар Vim sandbox"
 
 #, c-format
 msgid "E370: Could not load library %s"
@@ -2362,7 +2362,7 @@ msgstr ""
 
 msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
 msgstr ""
-"E299: Perl одређивање вредности у sandbox-у је забрањено без Safe модула"
+"E299: Perl одређивање вредности унутар sandbox је забрањено без Safe модула"
 
 msgid "E836: This Vim cannot execute :python after using :py3"
 msgstr "E836: Овај Vim не може да изврши :python након коришћења :py3"
@@ -2378,7 +2378,7 @@ msgid ""
 "E887: Sorry, this command is disabled, the Python's site module could not be "
 "loaded."
 msgstr ""
-"E887: Жао нам је, ова команда је онемогућена, Python-ов site модул није "
+"E887: Жао нам је, ова команда је онемогућена јер Python site модул није "
 "могао да се учита."
 
 msgid "E659: Cannot invoke Python recursively"
@@ -2393,11 +2393,11 @@ msgstr "E265: $_ мора да буде инстанца Стринга"
 msgid ""
 "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
 msgstr ""
-"E266: Жао нам је, ова команда је онемогућена, Ruby библиотека није могла да "
-"се учита."
+"E266: Жао нам је, ова команда је онемогућена јер Ruby библиотека није могла "
+"да се учита."
 
 msgid "E267: unexpected return"
-msgstr "E267: неочекиван return"
+msgstr "E267: неочекивано return"
 
 msgid "E268: unexpected next"
 msgstr "E268: неочекивано next"
@@ -2409,7 +2409,7 @@ msgid "E270: unexpected redo"
 msgstr "E270: неочекивано redo"
 
 msgid "E271: retry outside of rescue clause"
-msgstr "E271: retry ван rescue клаузуле"
+msgstr "E271: retry ван rescue одредбе"
 
 msgid "E272: unhandled exception"
 msgstr "E272: необрађени изузетак"
@@ -2481,7 +2481,7 @@ msgstr ""
 
 #, c-format
 msgid "E572: exit code %d"
-msgstr "E572: излазни код %d"
+msgstr "E572: излазни кôд %d"
 
 msgid "cannot get line"
 msgstr "линија не може да се добије"
@@ -2494,7 +2494,7 @@ msgstr "E248: Слање команде циљном програму није успело"
 
 #, c-format
 msgid "E573: Invalid server id used: %s"
-msgstr "E573: Користи се несправан ид сервера: %s"
+msgstr "E573: Користи се неважећи ид сервера: %s"
 
 msgid "E251: VIM instance registry property is badly formed.  Deleted!"
 msgstr "E251: registry својство VIM инстанце је лоше формирано. Обрисано!"
@@ -2555,9 +2555,6 @@ msgstr " Довршавање локалне кључне речи (^N^P)"
 msgid "Hit end of paragraph"
 msgstr "Достигнут је крај пасуса"
 
-msgid "E839: Completion function changed window"
-msgstr "E839: Функција довршавања је променила прозор"
-
 msgid "E840: Completion function deleted text"
 msgstr "E840: Функција довршавања је обрисала текст"
 
@@ -2672,6 +2669,9 @@ msgstr "filter() аргумент"
 msgid "add() argument"
 msgstr "add() аргумент"
 
+msgid "extendnew() argument"
+msgstr "extendnew() аргумент"
+
 msgid "insert() argument"
 msgstr "insert() аргумент"
 
@@ -2829,7 +2829,7 @@ msgid "-e\t\t\tEx mode (like \"ex\")"
 msgstr "-e\t\t\tEx режим (као \"ex\")"
 
 msgid "-E\t\t\tImproved Ex mode"
-msgstr "-E\t\t\tУнапређен Ex режим"
+msgstr "-E\t\t\tУнапређени Ex режим"
 
 msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")"
 msgstr "-s\t\t\tНечујни (batch) режим (само за \"ex\")"
@@ -2838,13 +2838,13 @@ msgid "-d\t\t\tDiff mode (like \"vimdiff
 msgstr "-d\t\t\tDiff режим (као \"vimdiff\")"
 
 msgid "-y\t\t\tEasy mode (like \"evim\", modeless)"
-msgstr "-y\t\t\tEasy режим (као \"evim\", безрежимни)"
+msgstr "-y\t\t\tЈедноставни режим (као \"evim\", безрежимни)"
 
 msgid "-R\t\t\tReadonly mode (like \"view\")"
-msgstr "-R\t\t\tReadonly режим (као \"view\")"
+msgstr "-R\t\t\tСамо-за-читање режим (као \"view\")"
 
 msgid "-Z\t\t\tRestricted mode (like \"rvim\")"
-msgstr "-Z\t\t\tRestricted режим (као \"rvim\")"
+msgstr "-Z\t\t\tОграничени режим (као \"rvim\")"
 
 msgid "-m\t\t\tModifications (writing files) not allowed"
 msgstr "-m\t\t\tИзмене (уписивање фајлова) нису дозвољене"
@@ -2862,10 +2862,10 @@ msgid "-C\t\t\tCompatible with Vi: 'comp
 msgstr "-C\t\t\tКомпатибилан са Vi: 'compatible'"
 
 msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'"
-msgstr "-N\t\t\tНе потпуно Vi компатибилан: 'nocompatible'"
+msgstr "-N\t\t\tНе потпуно Vi компатибилно: 'nocompatible'"
 
 msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]"
-msgstr "-V[N][fname]\t\tБуди опширан [ниво N] [бележи поруке у fname]"
+msgstr "-V[N][имеф]\t\tБуди опширан [ниво N] [бележи поруке у имеф]"
 
 msgid "-D\t\t\tDebugging mode"
 msgstr "-D\t\t\tDebugging режим"
@@ -3133,7 +3133,7 @@ msgstr "E357: 'langmap': Недостаје одговарајући карактер за %s"
 
 #, c-format
 msgid "E358: 'langmap': Extra characters after semicolon: %s"
-msgstr "E358: 'langmap': Има још карактера након тачказареза: %s"
+msgstr "E358: 'langmap': Има још карактера након тачка зареза: %s"
 
 msgid "No marks set"
 msgstr "Нема постављених маркера"
@@ -3202,7 +3202,7 @@ msgid "E296: Seek error in swap file wri
 msgstr "E296: Грешка код постављања показивача за упис у привремени фајл"
 
 msgid "E297: Write error in swap file"
-msgstr "E297: Грешка при упису преивременог фајла"
+msgstr "E297: Грешка при упису привременог фајла"
 
 msgid "E300: Swap file already exists (symlink attack?)"
 msgstr "E300: Привремени фајл већ постоји (symlink напад?)"
@@ -3246,7 +3246,7 @@ msgid "E306: Cannot open %s"
 msgstr "E306: %s не може да се отвори"
 
 msgid "Unable to read block 0 from "
-msgstr "Није могуће литање блока 0 из "
+msgstr "Није могуће читање блока 0 из "
 
 msgid ""
 "\n"
@@ -3256,10 +3256,10 @@ msgstr ""
 "Можда нису направљене никакве измене или Vim није освежио привремени фајл."
 
 msgid " cannot be used with this version of Vim.\n"
-msgstr " не може да се користи са овом верзијом Vim-а.\n"
+msgstr " не може да се користи са овом верзијом програма Vim.\n"
 
 msgid "Use Vim version 3.0.\n"
-msgstr "Користи се Vim верзијe 3.0.\n"
+msgstr "Користи се Vim верзије 3.0.\n"
 
 #, c-format
 msgid "E307: %s does not look like a Vim swap file"
@@ -3281,7 +3281,7 @@ msgstr ""
 #, c-format
 msgid ""
 "E833: %s is encrypted and this version of Vim does not support encryption"
-msgstr "E833: %s је шифрована и ова верзија Vim-а не подржава шифровање"
+msgstr "E833: %s је шифрована а ова верзија програма Vim не подржава шифровање"
 
 msgid " has been damaged (page size is smaller than minimum value).\n"
 msgstr " је оштећена (величина странице је маља од минималне вредности).\n"
@@ -3485,7 +3485,7 @@ msgid ""
 "         [not usable with this version of Vim]"
 msgstr ""
 "\n"
-"         [није употребљив са овом верзијом Vim-а]"
+"         [није употребљив са овом верзијом програма Vim]"
 
 msgid ""
 "\n"
@@ -3690,7 +3690,7 @@ msgstr "Отцепи овај мени"
 
 #, c-format
 msgid "E335: Menu not defined for %s mode"
-msgstr "E335: Мени није дефинисан за %s рeжим"
+msgstr "E335: Мени није дефинисан за %s режим"
 
 msgid "E333: Menu path must lead to a menu item"
 msgstr "E333: Путања менија мора да води у ставку менија"
@@ -3855,7 +3855,7 @@ msgid "E658: NetBeans connection lost fo
 msgstr "E658: NetBeans веза је изгубљена за бафер %d"
 
 msgid "E838: netbeans is not supported with this GUI"
-msgstr "E838: netbeans није подржан са овим ГКИ"
+msgstr "E838: овај ГКИ не подржава netbeans"
 
 msgid "E511: netbeans already connected"
 msgstr "E511: netbeans је већ повезан"
@@ -3968,14 +3968,14 @@ msgid "E519: Option not supported"
 msgstr "E519: Опција није подржана"
 
 msgid "E520: Not allowed in a modeline"
-msgstr "E520: Није довољено у режимској линији"
+msgstr "E520: Није дозвољено у режимској линији"
 
 msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
 msgstr ""
 "E992: Није дозвољено у режимској линији када је 'modelineexpr' искључена"
 
 msgid "E846: Key code not set"
-msgstr "E846: Није постављeн код тастера"
+msgstr "E846: Није постављен кôд тастера"
 
 msgid "E521: Number required after ="
 msgstr "E521: Потребан је број након ="
@@ -3985,7 +3985,7 @@ msgstr "E522: Није пронађено у termcap"
 
 msgid "E946: Cannot make a terminal with running job modifiable"
 msgstr ""
-"E946: Терминал са задатком који се извршава не може да се учини измењивим"
+"E946: Терминал са послом који се извршава не може да се учини измењивим"
 
 msgid "E590: A preview window already exists"
 msgstr "E590: Прозор за преглед већ постоји"
@@ -4113,14 +4113,14 @@ msgid "E598: Invalid fontset"
 msgstr "E598: Неисправан fontset"
 
 msgid "E533: can't select wide font"
-msgstr "E533: широки фонт не може да се изабере"
+msgstr "E533: не може да се изабере широки фонт"
 
 msgid "E534: Invalid wide font"
-msgstr "E534: Неисправан широки фонт"
+msgstr "E534: Неважећи широки фонт"
 
 #, c-format
 msgid "E535: Illegal character after <%c>"
-msgstr "E535: Неважећи карактер након <%c>"
+msgstr "E535: Недозвољен карактер након <%c>"
 
 msgid "E536: comma required"
 msgstr "E536: потребан зарез"
@@ -4533,7 +4533,7 @@ msgstr "E63: неисправна употреба \\_"
 
 #, c-format
 msgid "E64: %s%c follows nothing"
-msgstr "E64: %s%c je иза ничега"
+msgstr "E64: %s%c је иза ничега"
 
 msgid "E68: Invalid character after \\z"
 msgstr "E68: Неважећи карактер након \\z"
@@ -4576,7 +4576,7 @@ msgid "E339: Pattern too long"
 msgstr "E339: Шаблон је предугачак"
 
 msgid "External submatches:\n"
-msgstr "Спољна под-подударања:\n"
+msgstr "Спољна подподударања:\n"
 
 msgid "E865: (NFA) Regexp end encountered prematurely"
 msgstr "E865: (НКА) прерано је достигнут крај регизраза"
@@ -4782,7 +4782,7 @@ msgid "continuing in %s"
 msgstr "наставља се у %s"
 
 msgid "modeline"
-msgstr "режимскe линијe (modeline)"
+msgstr "режимске линијe (modeline)"
 
 msgid "--cmd argument"
 msgstr "--cmd аргументa"
@@ -4791,10 +4791,13 @@ msgid "-c argument"
 msgstr "-c аргументa"
 
 msgid "environment variable"
-msgstr "променљивe окружења"
+msgstr "променљиве окружења"
 
 msgid "error handler"
-msgstr "процедурe за обраду грешке"
+msgstr "процедуре за обраду грешке"
+
+msgid "changed window size"
+msgstr "промењена величина прозора"
 
 msgid "W15: Warning: Wrong line separator, ^M may be missing"
 msgstr "W15: Упозорење: Погрешан сепаратор линије, можда недостаје ^M"
@@ -4994,7 +4997,7 @@ msgid "E771: Old spell file, needs to be
 msgstr "E771: Стари правописни фајл, потребно је да се освежи"
 
 msgid "E772: Spell file is for newer version of Vim"
-msgstr "E772: Правописни фајл је за новију верзију Vim-а"
+msgstr "E772: Правописни фајл је за новију верзију програма Vim"
 
 msgid "E770: Unsupported section in spell file"
 msgstr "E770: Неподржана секција у правописном фајлу"
@@ -5009,7 +5012,7 @@ msgstr "E779: Стари .sug фајл, потребно је да се освежи: %s"
 
 #, c-format
 msgid "E780: .sug file is for newer version of Vim: %s"
-msgstr "E780: .sug фајл је за новију верзију Vim-а: %s"
+msgstr "E780: .sug фајл је за новију верзију програма Vim: %s"
 
 #, c-format
 msgid "E781: .sug file doesn't match .spl file: %s"
@@ -5115,7 +5118,7 @@ msgstr "Дупликат карактера у MAP у %s линија %d"
 
 #, c-format
 msgid "Unrecognized or duplicate item in %s line %d: %s"
-msgstr "Непрепосната или дупла ставка у %s линија %d: %s"
+msgstr "Непрепозната или дупла ставка у %s линија %d: %s"
 
 #, c-format
 msgid "Missing FOL/LOW/UPP line in %s"
@@ -5191,7 +5194,7 @@ msgstr "Неуспешна конверзија за реч у %s линија %ld: %s"
 
 #, c-format
 msgid "Duplicate /encoding= line ignored in %s line %ld: %s"
-msgstr "Дупликат /encoding= линије sе игнорише у %s линија %ld: %s"
+msgstr "Дупликат /encoding= линије се игнорише у %s линија %ld: %s"
 
 #, c-format
 msgid "/encoding= line after word ignored in %s line %ld: %s"
@@ -5279,6 +5282,9 @@ msgstr "E765: 'spellfile' не садржи %d ставке"
 msgid "Word '%.*s' removed from %s"
 msgstr "Реч '%.*s' је уклоњена из %s"
 
+msgid "Seek error in spellfile"
+msgstr "Грешка постављања у правописном фајлу"
+
 #, c-format
 msgid "Word '%.*s' added to %s"
 msgstr "Реч '%.*s' је додата у %s"
@@ -5371,7 +5377,7 @@ msgid ""
 "--- Syntax sync items ---"
 msgstr ""
 "\n"
-"--- Ставке синхро синтаксе ---"
+"--- Синхро ставке синтаксе ---"
 
 msgid ""
 "\n"
@@ -5642,7 +5648,7 @@ msgid "finished"
 msgstr "завршен"
 
 msgid "E958: Job already finished"
-msgstr "E958: Задатак је већ завршен"
+msgstr "E958: Посао је већ завршен"
 
 #, c-format
 msgid "E953: File exists: %s"
@@ -5676,7 +5682,7 @@ msgid "E967: text property info corrupte
 msgstr "E967: информације о особини текста се искварене"
 
 msgid "E968: Need at least one of 'id' or 'type'"
-msgstr "E968: Неопхпдан је бар један од 'id' или 'type'"
+msgstr "E968: Неопходан је бар један од 'id' или 'type'"
 
 msgid "E860: Need 'id' and 'type' with 'both'"
 msgstr "E860: 'id' и 'type' су потребни уз 'both'"
@@ -5970,7 +5976,7 @@ msgid "E177: Count cannot be specified t
 msgstr "E177: Бројач не може да се наведе два пута"
 
 msgid "E178: Invalid default value for count"
-msgstr "E178: Несправна подразумевана вредност за бројач"
+msgstr "E178: Неисправна подразумевана вредност за бројач"
 
 msgid "E179: argument required for -complete"
 msgstr "E179: потребан је аргумент за -complete"
@@ -6090,7 +6096,7 @@ msgid "E124: Missing '(': %s"
 msgstr "E124: Недостаје '(': %s"
 
 msgid "E862: Cannot use g: here"
-msgstr "E862: g: не може овде да се користи"
+msgstr "E862: Овде не може да се користи g:"
 
 #, c-format
 msgid "E932: Closure function should not be at top level: %s"
@@ -6201,14 +6207,14 @@ msgid ""
 "Included patches: "
 msgstr ""
 "\n"
-"Укључене исправке: "
+"Укључене закрпе: "
 
 msgid ""
 "\n"
 "Extra patches: "
 msgstr ""
 "\n"
-"Екстра исправке: "
+"Додатне закрпе: "
 
 msgid "Modified by "
 msgstr "Модификовао "
@@ -6343,7 +6349,7 @@ msgid "Linking: "
 msgstr "Повезивање: "
 
 msgid "  DEBUG BUILD"
-msgstr "  DEBUG ИЗДАЊЕ"
+msgstr "  ДИБАГ ИЗДАЊЕ"
 
 msgid "VIM - Vi IMproved"
 msgstr "VIM - Vi IMproved"
@@ -6352,7 +6358,7 @@ msgid "version "
 msgstr "верзија "
 
 msgid "by Bram Moolenaar et al."
-msgstr "написали Bram Moolenaar et al."
+msgstr "написали Брам Моленар и др."
 
 msgid "Vim is open source and freely distributable"
 msgstr "Vim је отвореног кода и може слободно да се дистрибуира"
@@ -6367,7 +6373,7 @@ msgid "type  :q<Enter>               to 
 msgstr "откуцајте  :q<Ентер>               за излаз         "
 
 msgid "type  :help<Enter>  or  <F1>  for on-line help"
-msgstr "откуцајте  :help<Ентер>  или  <F1> за on-line помоћ "
+msgstr "откуцајте  :help<Ентер>  или  <F1> за директну помоћ"
 
 msgid "type  :help version8<Enter>   for version info"
 msgstr "откуцајте  :help version8<Ентер>   за инфо о верзији"
@@ -6388,13 +6394,13 @@ msgid "Running modeless, typed text is i
 msgstr "Безрежимски рад, умеће се откуцани текст"
 
 msgid "menu  Edit->Global Settings->Toggle Insert Mode  "
-msgstr "мени  Уређивање->Глобална подешавања->Преклапај режим Уметање  "
+msgstr "мени  Уређивање->Општа подешавања->Режим Уметање (да/не)  "
 
 msgid "                              for two modes      "
 msgstr "                              за два режима      "
 
 msgid "menu  Edit->Global Settings->Toggle Vi Compatible"
-msgstr "мени  Уређивање->Глобална подешавања->Преклапај Vi Компатибилно"
+msgstr "мени  Уређивање->Општа подешавања->'Vi' сагласно (да/не)"
 
 msgid "                              for Vim defaults   "
 msgstr "                              за Vim подразумевано   "
@@ -6412,7 +6418,7 @@ msgid "type  :help register<Enter>   for
 msgstr "откуцајте  :help register<Ентер>   за информације   "
 
 msgid "menu  Help->Sponsor/Register  for information    "
-msgstr "мени  Помоћ->Спонзор/Региструј се  за информације    "
+msgstr "мени  Помоћ->Спонзор/Региструјте се  за информације    "
 
 msgid "[end of lines]"
 msgstr "[крај линија]"
@@ -6575,7 +6581,7 @@ msgstr " НЕУСПЕЛО"
 
 #, c-format
 msgid "E137: Viminfo file is not writable: %s"
-msgstr "E137: Viminfo фајл није уписив: %s"
+msgstr "E137: У viminfo фајл не може да се упише: %s"
 
 #, c-format
 msgid "E929: Too many viminfo temp files, like %s!"
@@ -6641,7 +6647,7 @@ msgid "Edit with &Vim"
 msgstr "Уређуј са &Vim-ом"
 
 msgid "Edit with existing Vim"
-msgstr "Уређуј са постојећим Vim"
+msgstr "Уређуј са постојећим Vim-ом"
 
 msgid "Edit with existing Vim - "
 msgstr "Уређуј са постојећим Vim - "
@@ -6667,6 +6673,9 @@ msgstr "E121: Недефинисана променљива: %s"
 msgid "E121: Undefined variable: %c:%s"
 msgstr "E121: Недефинисана променљива: %c:%s"
 
+msgid "E464: Ambiguous use of user-defined command"
+msgstr "E464: Двосмислена употреба кориснички дефинисане команде"
+
 msgid "E476: Invalid command"
 msgstr "E476: Неважећа команда"
 
@@ -6694,8 +6703,8 @@ msgid "E909: Cannot index a special vari
 msgstr "E909: Специјална променљива не може да се индексира"
 
 #, c-format
-msgid "E1100: Missing :var: %s"
-msgstr "E1100: Недостаје :var: %s"
+msgid "E1100: Command not supported in Vim9 script (missing :var?): %s"
+msgstr "E1100: Команда се не подржава у Vim9 скрипту (недостаје :var?): %s"
 
 #, c-format
 msgid "E1001: Variable not found: %s"
@@ -6709,8 +6718,8 @@ msgid "E1003: Missing return value"
 msgstr "E1003: Недостаје повратна вредност"
 
 #, c-format
-msgid "E1004: White space required before and after '%s'"
-msgstr "E1004: Неопходан је празан простор испред и иза '%s'"
+msgid "E1004: White space required before and after '%s' at \"%s\""
+msgstr "E1004: Неопходан је празан простор испред и иза '%s' код \"%s\""
 
 msgid "E1005: Too many argument types"
 msgstr "E1005: Сувише типова аргумената"
@@ -6783,8 +6792,8 @@ msgid "E1022: Type or initialization req
 msgstr "E1022: Потребан је тип или иницијализација"
 
 #, c-format
-msgid "E1023: Using a Number as a Bool: %d"
-msgstr "E1023: Број се користи као Логичка: %d"
+msgid "E1023: Using a Number as a Bool: %lld"
+msgstr "E1023: Број се користи као Логичка: %lld"
 
 msgid "E1024: Using a Number as a String"
 msgstr "E1024: Број се користи као Стринг"
@@ -6870,10 +6879,11 @@ msgstr "E1048: Ставка није пронађена у скрипти: %s"
 
 #, c-format
 msgid "E1049: Item not exported in script: %s"
-msgstr "E1049: Ставка није експортована у скрипт: %s"
-
-msgid "E1050: Colon required before a range"
-msgstr "E1050: Испред опсега је неопходна двотачка"
+msgstr "E1049: Ставка није извезена у скрипти: %s"
+
+#, c-format
+msgid "E1050: Colon required before a range: %s"
+msgstr "E1050: Испред опсега је неопходна двотачка: %s"
 
 msgid "E1051: Wrong argument type for +"
 msgstr "E1051: Погрешан тип аргумента за +"
@@ -6931,12 +6941,12 @@ msgid "E1067: Separator mismatch: %s"
 msgstr "E1067: Граничници се не подударају: %s"
 
 #, c-format
-msgid "E1068: No white space allowed before '%s'"
-msgstr "E1068: Није дозвољен празан простор испред '%s'"
-
-#, c-format
-msgid "E1069: White space required after '%s'"
-msgstr "E1069: Потребан је празан простор након '%s'"
+msgid "E1068: No white space allowed before '%s': %s"
+msgstr "E1068: Није дозвољен празан простор испред '%s': %s"
+
+#, c-format
+msgid "E1069: White space required after '%s': %s"
+msgstr "E1069: Потребан је празан простор након '%s': %s"
 
 msgid "E1070: Missing \"from\""
 msgstr "E1070: Недостаје \"from\""
@@ -7014,7 +7024,7 @@ msgid "E1094: Import can only be used in
 msgstr "E1094: Import може да се употреби само у скрипти"
 
 msgid "E1095: Unreachable code after :return"
-msgstr "E1095: Код не може да се досегне након :return"
+msgstr "E1095: Кôд не може да се досегне након :return"
 
 msgid "E1096: Returning a value in a function without a return type"
 msgstr "E1096: Враћа се вредност из функције без наведеног повратног типа"
@@ -7042,7 +7052,7 @@ msgstr "E1104: Недостаје >"
 
 #, c-format
 msgid "E1105: Cannot convert %s to string"
-msgstr "E1105: %s не може да се ковертује у стринг"
+msgstr "E1105: %s не може да се конвертује у стринг"
 
 msgid "E1106: One argument too many"
 msgstr "E1106: Један аргумент вишка"
@@ -7068,7 +7078,7 @@ msgstr "E1110: Ставка листе %d не садржи 3 броја"
 
 #, c-format
 msgid "E1111: List item %d range invalid"
-msgstr "E1111: Опсег ставке листе %d је неважћи"
+msgstr "E1111: Опсег ставке листе %d је неважећи"
 
 #, c-format
 msgid "E1112: List item %d cell width invalid"
@@ -7152,7 +7162,7 @@ msgid "E1135: <Cmd> mapping must end wit
 msgstr "E1135: <Cmd> мапирање мора да се заврши са <CR>"
 
 msgid "E1136: <Cmd> mapping must end with <CR> before second <Cmd>"
-msgstr "E1136: <Cmd> мапирање мора да се заврђи са <CR> пре другог <Cmd>"
+msgstr "E1136: <Cmd> мапирање мора да се заврши са <CR> пре другог <Cmd>"
 
 #, c-format
 msgid "E1137: <Cmd> mapping must not include %s key"
@@ -7167,6 +7177,85 @@ msgstr "E1139: Недостаје одговарајућа заграда након кључа речн"
 msgid "E1140: For argument must be a sequence of lists"
 msgstr "E1140: For аргумент мора бити низ листи"
 
+msgid "E1141: Indexable type required"
+msgstr "E1141: Потребан је тип који може да се индексира"
+
+msgid "E1142: Non-empty string required"
+msgstr "E1142: Потребан је стринг који није празан"
+
+#, c-format
+msgid "E1143: Empty expression: \"%s\""
+msgstr "E1143: Празан израз: \"%s\""
+
+#, c-format
+msgid "E1144: Command is not followed by white space: %s"
+msgstr "E1144: Иза команде се не налази празан простор: %s"
+
+#, c-format
+msgid "E1145: Missing heredoc end marker: %s"
+msgstr "E1145: Недостаје heredoc маркер краја: %s"
+
+#, c-format
+msgid "E1146: Command not recognized: %s"
+msgstr "E1146: Команда се не препознаје: %s"
+
+msgid "E1147: List not set"
+msgstr "E1147: Листа није постављена"
+
+#, c-format
+msgid "E1148: Cannot index a %s"
+msgstr "E1148: %s не може да се индексира"
+
+#, c-format
+msgid "E1149: Script variable is invalid after reload in function %s"
+msgstr ""
+"E1149: Скрипт променљива више важи након поновног учитавања у функцији %s"
+
+msgid "E1150: Script variable type changed"
+msgstr "E1150: Тип скрипт променљиве се променио"
+
+msgid "E1151: Mismatched endfunction"
+msgstr "E1151: Неупарено endfunction"
+
+msgid "E1152: Mismatched enddef"
+msgstr "E1152: Неупарено enddef"
+
+msgid "E1153: Invalid operation for bool"
+msgstr "E1153: Неважећа операција за логички"
+
+msgid "E1154: Divide by zero"
+msgstr "E1154: Дељење са нулом"
+
+msgid "E1155: Cannot define autocommands for ALL events"
+msgstr "E1155: Аутокоманде не могу да се дефинишу за СВЕ догађаје"
+
+msgid "E1156: Cannot change the argument list recursively"
+msgstr "E1156: Листа аргумената не може да се мења рекурзивно"
+
+msgid "E1157: Missing return type"
+msgstr "E1157: Недостаје тип резултата који се враћа"
+
+msgid "E1158: Cannot use flatten() in Vim9 script"
+msgstr "E1158: Функција flatten() не може да се користи у Vim9 скрипту"
+
+msgid "E1159: Cannot split a window when closing the buffer"
+msgstr "E1159: Прозор не може да се подели када се затвара бафер"
+
+msgid "E1160: Cannot use a default for variable arguments"
+msgstr "E1160: За аргументе променљиве не може да се користи подразумевана вредност"
+
+#, c-format
+msgid "E1161: Cannot json encode a %s"
+msgstr "E1161: %s не може да се кодује у json"
+
+#, c-format
+msgid "E1162: Register name must be one character: %s"
+msgstr "E1162: Име регистра мора бити један карактер: %s"
+
+#, c-format
+msgid "E1163: Variable %d: type mismatch, expected %s but got %s"
+msgstr "E1163: Променљива %d: неодговарајући тип, очекује се %s али је наведено %s"
+
 msgid "--No lines in buffer--"
 msgstr "--У баферу нема линија--"
 
@@ -7259,11 +7348,11 @@ msgstr "E983: Дуплирани аргумент: %s"
 
 #, c-format
 msgid "E475: Invalid value for argument %s"
-msgstr "E475: Неважећa вредност за аргумент: %s"
+msgstr "E475: Неважећа вредност за аргумент: %s"
 
 #, c-format
 msgid "E475: Invalid value for argument %s: %s"
-msgstr "E475: Неважећa вредност за аргумент %s: %s"
+msgstr "E475: Неважећа вредност за аргумент %s: %s"
 
 #, c-format
 msgid "E15: Invalid expression: %s"
@@ -7365,7 +7454,7 @@ msgstr "E36: Нема довољно простора"
 
 #, c-format
 msgid "E247: no registered server named \"%s\""
-msgstr "E247: нема регистованог сервера под именом \"%s\""
+msgstr "E247: нема регистрованог сервера под именом \"%s\""
 
 #, c-format
 msgid "E482: Can't create file %s"
@@ -7443,7 +7532,7 @@ msgstr "E46: Променљива само за читање \"%s\" не може да се измени"
 
 #, c-format
 msgid "E794: Cannot set variable in the sandbox: \"%s\""
-msgstr "E794: Не може да се постави променљива у sandbox-у: \"%s\""
+msgstr "E794: Не може да се постави променљива унутар sandbox: \"%s\""
 
 msgid "E928: String required"
 msgstr "E928: Захтева се Стринг"
@@ -7527,7 +7616,7 @@ msgid "E47: Error while reading errorfil
 msgstr "E47: Грешка приликом читања фајла грешке"
 
 msgid "E48: Not allowed in sandbox"
-msgstr "E48: Није дозвољено у sandbox-у"
+msgstr "E48: Није дозвољено унутар sandbox"
 
 msgid "E523: Not allowed here"
 msgstr "E523: Није дозвољено овде"
@@ -7605,7 +7694,7 @@ msgstr "E110: Недостаје ')'"
 
 #, c-format
 msgid "E720: Missing colon in Dictionary: %s"
-msgstr "E720: Недостаје тачка-зарез у Речнику: %s"
+msgstr "E720: У Речнику недостаје двотачка: %s"
 
 #, c-format
 msgid "E721: Duplicate key in Dictionary: \"%s\""
@@ -7660,7 +7749,7 @@ msgid "E919: Directory not found in '%s'
 msgstr "E919: Није пронађен директоријум у '%s': \"%s\""
 
 msgid "E952: Autocommand caused recursive behavior"
-msgstr "E952: Аутокомандa je изазвала рекурзивно понашање"
+msgstr "E952: Аутокоманда је изазвала рекурзивно понашање"
 
 msgid "E813: Cannot close autocmd or popup window"
 msgstr "E813: Прозор аутокоманде или искачући прозор не може да се затвори"
@@ -8058,7 +8147,8 @@ msgstr "(глобално или локално за бафер)"
 
 msgid ""
 "\" Each \"set\" line shows the current value of an option (on the left)."
-msgstr "\" Свака „set” линија приказује текућу вредност опције (са леве стране)."
+msgstr ""
+"\" Свака „set” линија приказује текућу вредност опције (са леве стране)."
 
 msgid "\" Hit <Enter> on a \"set\" line to execute it."
 msgstr "\" Притисните <Ентер> на „set” линији да је извршите."
@@ -8070,11 +8160,13 @@ msgid ""
 "\"            For other options you can edit the value before hitting "
 "<Enter>."
 msgstr ""
-"\"            Осталим опцијама можете променити вредност пре притиска "
-"на <Ентер>."
+"\"            Осталим опцијама можете променити вредност пре притиска на "
+"<Ентер>."
 
 msgid "\" Hit <Enter> on a help line to open a help window on this option."
-msgstr "\" Притисните <Ентер> на линији помоћи да се отвори прозор помоћи за ову опцију."
+msgstr ""
+"\" Притисните <Ентер> на линији помоћи да се отвори прозор помоћи за ову "
+"опцију."
 
 msgid "\" Hit <Enter> on an index line to jump there."
 msgstr "\" Притисните <Ентер> на линији индекса да скочите тамо."
@@ -8239,7 +8331,7 @@ msgid "number of lines to scroll for CTR
 msgstr "број линија које скролују CTRL-U и CTRL-D"
 
 msgid "number of screen lines to show around the cursor"
-msgstr "број екранских линија које се пеиказују око курсора"
+msgstr "број екранских линија које се приказују око курсора"
 
 msgid "long lines wrap"
 msgstr "дуге линије се обавијају"
@@ -8529,7 +8621,7 @@ msgid "specifies what the cursor looks l
 msgstr "наводи како у различитим режимима изгледа курсор"
 
 msgid "show info in the window title"
-msgstr "у наслову прозора се приказују инфомрмације"
+msgstr "у наслову прозора се приказују информације"
 
 msgid "percentage of 'columns' used for the window title"
 msgstr "проценат 'columns' који се користи за наслов прозора"
@@ -8587,7 +8679,7 @@ msgid "list of font names to be used in 
 msgstr "листа имена фонтова који ће да се користе у ГКИ"
 
 msgid "pair of fonts to be used, for multibyte editing"
-msgstr "пар фонтова који ће да се користе, за уређевање вишебајтног текста"
+msgstr "пар фонтова који ће да се користе, за уређивање вишебајтног текста"
 
 msgid "list of font names to be used for double-wide characters"
 msgstr ""
@@ -8813,10 +8905,10 @@ msgid "minimum width of the popup menu"
 msgstr "минимална ширина искачућег менија"
 
 msgid "user defined function for Insert mode completion"
-msgstr "кориснички дефинисана фунцкија за довршавање у режиму Уметање"
+msgstr "кориснички дефинисана функција за довршавање у режиму Уметање"
 
 msgid "function for filetype-specific Insert mode completion"
-msgstr "фунцкија за довршавање у режиму Уметање специфично за тип фајла"
+msgstr "функција за довршавање у режиму Уметање специфично за тип фајла"
 
 msgid "list of dictionary files for keyword completion"
 msgstr "листа фајлова речника за довршавање кључних речи"
@@ -8876,7 +8968,7 @@ msgid "a <Tab> in an indent inserts 'shi
 msgstr "<Tab> у увлачењу умеће 'shiftwidth' размака"
 
 msgid "if non-zero, number of spaces to insert for a <Tab>"
-msgstr "ако је различито од нуле, број разнака који се умеће за <Tab>"
+msgstr "ако је различито од нуле, број размака који се умеће за <Tab>"
 
 msgid "round to 'shiftwidth' for \"<<\" and \">>\""
 msgstr "заокружено на 'shiftwidth' за „<<” и „>>”"
@@ -8903,7 +8995,7 @@ msgid "list of words that cause more C-i
 msgstr "листа речи које изазивају још C-увлачења"
 
 msgid "expression used to obtain the indent of a line"
-msgstr "израз који се користи за израчунавање увлачњеа линије"
+msgstr "израз који се користи за израчунавање увлачења линије"
 
 msgid "keys that trigger indenting with 'indentexpr' in Insert mode"
 msgstr "тастери који окидају увлачење са 'indentexpr' у режиму Уметање"
@@ -9273,7 +9365,7 @@ msgid "when to edit the command-line rig
 msgstr "када се командна-линија уређује с десна-у-лево"
 
 msgid "insert characters backwards"
-msgstr "умерање карактера уназад"
+msgstr "уметање карактера уназад"
 
 msgid "allow CTRL-_ in Insert and Command-line mode to toggle 'revins'"
 msgstr ""
@@ -9356,7 +9448,7 @@ msgid "character encoding used by the te
 msgstr "кодирање карактера које користи терминал"
 
 msgid "expression used for character encoding conversion"
-msgstr "израз који се корсти за конверзију кодирања карактера"
+msgstr "израз који се користи за конверзију кодирања карактера"
 
 msgid "delete combining (composing) characters on their own"
 msgstr "брисање самих комбинујућих (компонујућих) карактера"
@@ -9474,5 +9566,3 @@ msgstr "име MzScheme динамичке библиотеке"
 
 msgid "name of the MzScheme GC dynamic library"
 msgstr "име MzScheme GC динамичке библиотеке"
-
-