changeset 29885:f00c56ee8118

Update runtime files Commit: https://github.com/vim/vim/commit/7dd543246a4c21c4d5a4242a28076706f5abebd4 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Aug 26 18:01:12 2022 +0100 Update runtime files
author Bram Moolenaar <Bram@vim.org>
date Fri, 26 Aug 2022 19:15:05 +0200
parents 1eb91db19364
children 3ef1fe06690d
files runtime/colors/blue.vim runtime/colors/darkblue.vim runtime/colors/delek.vim runtime/colors/desert.vim runtime/colors/elflord.vim runtime/colors/evening.vim runtime/colors/habamax.vim runtime/colors/industry.vim runtime/colors/koehler.vim runtime/colors/lunaperche.vim runtime/colors/morning.vim runtime/colors/murphy.vim runtime/colors/pablo.vim runtime/colors/peachpuff.vim runtime/colors/quiet.vim runtime/colors/ron.vim runtime/colors/shine.vim runtime/colors/slate.vim runtime/colors/torte.vim runtime/colors/zellner.vim runtime/doc/Makefile runtime/doc/ft_context.txt runtime/doc/ft_mp.txt runtime/doc/tags runtime/doc/term.txt runtime/doc/todo.txt runtime/doc/various.txt runtime/indent/context.vim runtime/indent/mf.vim runtime/indent/mp.vim src/po/it.po
diffstat 31 files changed, 728 insertions(+), 365 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/colors/blue.vim
+++ b/runtime/colors/blue.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Fri Aug  5 12:25:12 2022
+" Last Updated: Tue 23 Aug 2022 16:50:34 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'blue'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/darkblue.vim
+++ b/runtime/colors/darkblue.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original author Bohdan Vlasyuk <bohdan@vstu.edu.ua>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:06 2022
+" Last Updated: Tue 23 Aug 2022 16:50:35 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'darkblue'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#8b0000', '#90f020', '#ffa500', '#00008b', '#8b008b', '#008b8b', '#c0c0c0', '#808080', '#ffa0a0', '#90f020', '#ffff60', '#0030ff', '#ff00ff', '#90fff0', '#ffffff']
--- a/runtime/colors/delek.vim
+++ b/runtime/colors/delek.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer David Schweikert <david@schweikert.ch>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:07 2022
+" Last Updated: Tue 23 Aug 2022 16:50:36 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=light
 hi clear
 let g:colors_name = 'delek'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#ffffff', '#0000ff', '#00cd00', '#cd00cd', '#008b8b', '#0000ff', '#ff1493', '#bcbcbc', '#ee0000', '#0000ff', '#00cd00', '#cd00cd', '#008b8b', '#0000ff', '#ff1493', '#000000']
--- a/runtime/colors/desert.vim
+++ b/runtime/colors/desert.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Hans Fugal <hans@fugal.net>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:08 2022
+" Last Updated: Tue 23 Aug 2022 16:50:37 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'desert'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#7f7f8c', '#cd5c5c', '#9acd32', '#bdb76b', '#75a0ff', '#eeee00', '#cd853f', '#666666', '#8a7f7f', '#ff0000', '#89fb98', '#f0e68c', '#6dceeb', '#ffde9b', '#ffa0a0', '#c2bfa5']
--- a/runtime/colors/elflord.vim
+++ b/runtime/colors/elflord.vim
@@ -3,7 +3,7 @@
 " Maintainer:   original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:08 2022
+" Last Updated: Tue 23 Aug 2022 16:50:37 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -12,7 +12,7 @@ set background=dark
 hi clear
 let g:colors_name = 'elflord'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 hi! link Terminal Normal
 hi! link Boolean Constant
--- a/runtime/colors/evening.vim
+++ b/runtime/colors/evening.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Steven Vertigan <steven@vertigan.wattle.id.au>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:09 2022
+" Last Updated: Tue 23 Aug 2022 16:50:38 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'evening'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#ffa500', '#2e8b57', '#ffff00', '#006faf', '#8b008b', '#008b8b', '#bebebe', '#4d4d4d', '#ff5f5f', '#00ff00', '#ffff60', '#0087ff', '#ff80ff', '#00ffff', '#ffffff']
--- a/runtime/colors/habamax.vim
+++ b/runtime/colors/habamax.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Maxim Kim <habamax@gmail.com>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:10 2022
+" Last Updated: Tue 23 Aug 2022 16:50:38 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'habamax'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#1c1c1c', '#d75f5f', '#87af87', '#afaf87', '#5f87af', '#af87af', '#5f8787', '#9e9e9e', '#767676', '#d7875f', '#afd7af', '#d7d787', '#87afd7', '#d7afd7', '#87afaf', '#bcbcbc']
--- a/runtime/colors/industry.vim
+++ b/runtime/colors/industry.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Shian Lee.
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:11 2022
+" Last Updated: Tue 23 Aug 2022 16:50:39 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'industry'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#303030', '#870000', '#5fd75f', '#afaf00', '#87afff', '#af00af', '#00afaf', '#6c6c6c', '#444444', '#ff0000', '#00ff00', '#ffff00', '#005fff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/koehler.vim
+++ b/runtime/colors/koehler.vim
@@ -3,7 +3,7 @@
 " Maintainer:   original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:12 2022
+" Last Updated: Tue 23 Aug 2022 16:50:39 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -12,7 +12,7 @@ set background=dark
 hi clear
 let g:colors_name = 'koehler'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 hi! link Terminal Normal
 hi! link Boolean Constant
--- a/runtime/colors/lunaperche.vim
+++ b/runtime/colors/lunaperche.vim
@@ -4,14 +4,14 @@
 " Maintainer:   Maxim Kim <habamax@gmail.com>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Vim License (see `:help license`)
-" Last Updated: Thu Aug 18 14:36:32 2022
+" Last Updated: Tue 23 Aug 2022 16:50:40 MSK
 
 " Generated by Colortemplate v2.2.0
 
 hi clear
 let g:colors_name = 'lunaperche'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 hi! link helpVim Title
 hi! link helpHeader Title
--- a/runtime/colors/morning.vim
+++ b/runtime/colors/morning.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Bram Moolenaar <Bram@vim.org>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:13 2022
+" Last Updated: Tue 23 Aug 2022 16:50:41 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=light
 hi clear
 let g:colors_name = 'morning'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#e4e4e4', '#a52a2a', '#ff00ff', '#6a0dad', '#008787', '#2e8b57', '#6a5acd', '#bcbcbc', '#0000ff', '#a52a2a', '#ff00ff', '#6a0dad', '#008787', '#2e8b57', '#6a5acd', '#000000']
--- a/runtime/colors/murphy.vim
+++ b/runtime/colors/murphy.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Ron Aaron <ron@ronware.org>.
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:14 2022
+" Last Updated: Tue 23 Aug 2022 16:50:41 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'murphy'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#303030', '#ffa700', '#005f00', '#ffd7af', '#87afff', '#ffafaf', '#00afaf', '#bcbcbc', '#444444', '#ff0000', '#00875f', '#ffff00', '#005fff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/pablo.vim
+++ b/runtime/colors/pablo.vim
@@ -3,7 +3,7 @@
 " Maintainer:   Original maintainerRon Aaron <ron@ronware.org>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:15 2022
+" Last Updated: Tue 23 Aug 2022 16:50:42 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -12,7 +12,7 @@ set background=dark
 hi clear
 let g:colors_name = 'pablo'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/peachpuff.vim
+++ b/runtime/colors/peachpuff.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:16 2022
+" Last Updated: Tue 23 Aug 2022 16:50:42 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=light
 hi clear
 let g:colors_name = 'peachpuff'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#ffdab9', '#a52a2a', '#c00058', '#cd00cd', '#008b8b', '#2e8b57', '#6a5acd', '#737373', '#406090', '#a52a2a', '#c00058', '#cd00cd', '#008b8b', '#2e8b57', '#6a5acd', '#000000']
--- a/runtime/colors/quiet.vim
+++ b/runtime/colors/quiet.vim
@@ -4,14 +4,14 @@
 " Maintainer:   neutaaaaan <neutaaaaan-gh@protonmail.com>
 " Website:      https://github.com/vim/colorschemes
 " License:      Vim License (see `:help license`)`
-" Last Updated: 2022-08-14 15:17:11
+" Last Updated: Tue 23 Aug 2022 16:50:43 MSK
 
 " Generated by Colortemplate v2.2.0
 
 hi clear
 let g:colors_name = 'quiet'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 hi! link Terminal Normal
 hi! link StatusLineTerm StatusLine
--- a/runtime/colors/ron.vim
+++ b/runtime/colors/ron.vim
@@ -3,7 +3,7 @@
 " Maintainer:   original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://www.github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:18 2022
+" Last Updated: Tue 23 Aug 2022 16:50:45 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -12,7 +12,7 @@ set background=dark
 hi clear
 let g:colors_name = 'ron'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 hi! link Terminal Normal
 hi! link Boolean Constant
--- a/runtime/colors/shine.vim
+++ b/runtime/colors/shine.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer is Yasuhiro Matsumoto <mattn@mail.goo.ne.jp>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:19 2022
+" Last Updated: Tue 23 Aug 2022 16:50:46 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=light
 hi clear
 let g:colors_name = 'shine'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#8b0000', '#006400', '#ffff00', '#00008b', '#6a0dad', '#008b8b', '#dadada', '#767676', '#ffafaf', '#90ee90', '#ffff60', '#add8e6', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/slate.vim
+++ b/runtime/colors/slate.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Ralph Amissah <ralph@amissah.com>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Tue Aug 16 08:11:08 2022
+" Last Updated: Tue 23 Aug 2022 16:50:46 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'slate'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/torte.vim
+++ b/runtime/colors/torte.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Thorsten Maerz <info@netztorte.de>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:22 2022
+" Last Updated: Tue 23 Aug 2022 16:50:47 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=dark
 hi clear
 let g:colors_name = 'torte'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#000000', '#cd0000', '#00cd00', '#cdcd00', '#0000ee', '#cd00cd', '#00cdcd', '#e5e5e5', '#7f7f7f', '#ff0000', '#00ff00', '#ffff00', '#5c5cff', '#ff00ff', '#00ffff', '#ffffff']
--- a/runtime/colors/zellner.vim
+++ b/runtime/colors/zellner.vim
@@ -4,7 +4,7 @@
 " Maintainer:   Original maintainer Ron Aaron <ron@ronware.org>
 " Website:      https://github.com/vim/colorschemes
 " License:      Same as Vim
-" Last Updated: Mon Aug  8 15:21:23 2022
+" Last Updated: Tue 23 Aug 2022 16:50:48 MSK
 
 " Generated by Colortemplate v2.2.0
 
@@ -13,7 +13,7 @@ set background=light
 hi clear
 let g:colors_name = 'zellner'
 
-let s:t_Co = exists('&t_Co') ? (&t_Co ?? 0) : -1
+let s:t_Co = exists('&t_Co') && !has('gui_running') ? (&t_Co ?? 0) : -1
 
 if (has('termguicolors') && &termguicolors) || has('gui_running')
   let g:terminal_ansi_colors = ['#ffffff', '#a52a2a', '#ff00ff', '#a020f0', '#0000ff', '#0000ff', '#ff00ff', '#a9a9a9', '#ff0000', '#a52a2a', '#ff00ff', '#a020f0', '#0000ff', '#0000ff', '#ff00ff', '#000000']
--- a/runtime/doc/Makefile
+++ b/runtime/doc/Makefile
@@ -31,6 +31,8 @@ DOCS = \
 	filetype.txt \
 	fold.txt \
 	ft_ada.txt \
+	ft_context.txt \
+	ft_mp.txt \
 	ft_ps1.txt \
 	ft_raku.txt \
 	ft_rust.txt \
@@ -180,6 +182,8 @@ HTMLS = \
 	filetype.html \
 	fold.html \
 	ft_ada.html \
+	ft_context.html \
+	ft_mp.html \
 	ft_ps1.html \
 	ft_raku.html \
 	ft_rust.html \
new file mode 100644
--- /dev/null
+++ b/runtime/doc/ft_context.txt
@@ -0,0 +1,152 @@
+*ft_context.txt*	For Vim version 9.0.  Last change: 2022 Aug 12
+
+This is the documentation for the ConTeXt filetype plugin.
+
+NOTE: the plugin requires +vim9script.
+
+==============================================================================
+CONTENTS						*context.vim* *ft-context*
+
+1. Introduction				|ft-context-intro|
+2. Commands				|ft-context-commands|
+3. Settings				|ft-context-settings|
+4. Mappings				|ft-context-mappings|
+
+==============================================================================
+							*ft-context-intro*
+Introduction ~
+
+ConTeXt, similarly to LaTeX, is a macro-based typesetting system built on TeX:
+>
+	https://wiki.contextgarden.net
+	https://wiki.contextgarden.net/Vim
+<
+The ConTeXt plugin provides syntax highlighting, completion and support for
+typesetting ConTeXt documents. The recommended way to typeset a document is to
+use |:ConTeXt|. This will invoke the `mtxrun` script that is found in $PATH.
+
+For more fine grained control over the command and its environment, you may
+invoke `context.Typeset()` directly (or `context#Typeset()` from legacy Vim
+script). For instance, if you have installed a version of ConTeXt in
+`~/context`, you may define a function to use it (you may put the following
+code in `~/.vim/after/ftplugin/context.vim`) similar to the following:
+>
+	import autoload 'context.vim'
+
+	def MyConTeXt()
+	    const env = {'PATH':
+	      printf("%s/context/tex/texmf-<os>-<arch>/bin:%s", $HOME, $PATH)}
+	    context.Typeset("%", env)
+	enddef
+<
+and perhaps use it with a mapping:
+>
+	nnoremap <silent><buffer><leader>t <scriptcmd>MyConTeXt()<cr>
+<
+`context.Typeset()` accepts a third optional argument to specify a custom
+typesetting command. Such argument must be a function that takes a path and
+returns the command as a List. For example:
+>
+	def ConTeXtCustomCommand(path: string): list<string>
+	  return ['mtxrun', '--script', 'context', '--nonstopmode, path]
+	enddef
+
+	context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand)
+<
+Large projects are often organized as a root document and various chapter
+files. When editing a chapter file, it is convenient to invoke |:ConTeXt|
+directly on it, rather than having to switch to the root file. A "magic line"
+can be added at the beginning of each chapter file, which specifies the
+relative path to the root file. For instance:
+>
+	% !TEX root = ../MyRoot.tex
+<
+Vim searches for the magic line in the first ten lines of the current buffer:
+if it is found, the document specified by that line is typeset rather than the
+one in the current buffer. The root document does not have to be opened in
+Vim.
+
+To extend completion and syntax highlighting, you may generate supporting
+files using ConTeXt and add them to your configuration. If you configuration
+resides in `~/.vim`, you may use these commands:
+>
+	mkdir -p ~/.vim/syntax/shared
+	cd ~/.vim/syntax/shared
+	mtxrun --script interface --vim
+<
+The last command will create the following syntax files:
+
+- `context-data-context.vim`;
+- `context-data-interfaces.vim`;
+- `context-data-metafun.vim`;
+- `context-data-tex.vim`. 
+
+The same command can be used to update those syntax files.
+
+							*ft-context-commands*
+Commands ~
+					*:ConTeXt*
+Start a background |job| to typeset the document in the current buffer. The
+command accepts an optional buffer's name, if you want to typeset a document
+that is in a different buffer.
+
+					*:ConTeXtLog*
+Edit the log file corresponding to the source in the current buffer.
+
+					*:ConTeXtJobsStatus*
+Echo the number of jobs currently running in the background.
+
+					*:ConTeXtStopJobs*
+Stop all the ConTeXt jobs currently running in the background.
+
+							*ft-context-settings*
+Settings ~
+					*'b:context_ignore_makefile'*
+					*'g:context_ignore_makefile'*
+`make` can be used to (synchronously) typeset a document. If a Makefile exists
+and this option is not set, standard `make` is used. If this option is set,
+`mtxrun` is invoked instead, even if a Makefile exists.
+>
+	g:context_ignore_makefile = 0
+<
+NOTE: before using `make`, set the working directory of the buffer to the
+directory of the file to be typeset.
+					*'b:context_include'*
+					*'g:context_include'*
+Dictionary of filetype/GROUP pairs for which syntax highlighting should be
+activated between \startGROUP and \stopGROUP. The default is to highlight XML
+between `\startXML` and `\stopXML`.
+>
+	g:context_include = {'xml': 'XML'}
+
+NOTE: Lua and MetaPost are always highlighted within the respective blocks.
+
+					*'g:no_context_maps'*
+When set, do not define any mappings.
+>
+	g:no_context_maps = 0
+<
+							*ft-context-mappings*
+Mappings ~
+
+tp			"reflow TeX paragraph".
+
+i$			"inside inline math block".
+
+a$			"around inline math block".
+
+]]			[count] start of sections forward.
+
+[[			[count] start of sections backward.
+
+][			[count] end sections forward.
+
+[]			[count] end of sections backward.
+
+]}			[count] end of blocks (\stop..., \setup...,
+			\define...) forward.
+
+[{			[count] begin of blocks (\start..., \setup...,
+			\define...) backward.
+
+ vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
new file mode 100644
--- /dev/null
+++ b/runtime/doc/ft_mp.txt
@@ -0,0 +1,151 @@
+*ft_mp.txt*	For Vim version 9.0.  Last change: 2022 Aug 12
+
+This is the documentation for the METAFONT and MetaPost filetype plugins.
+Unless otherwise specified, the commands, settings and mappings defined below
+apply equally to both filetypes.
+
+NOTE: the plugin requires +vim9script.
+
+==============================================================================
+CONTENTS						*mp.vim* *ft-metapost*
+							*mf.vim* *ft-metafont*
+
+1. Introduction				|ft-metapost-intro|
+2. Commands				|ft-metapost-commands|
+3. Settings				|ft-metapost-settings|
+4. Mappings				|ft-metapost-mappings|
+
+==============================================================================
+							*ft-metapost-intro*
+							*ft-metafont-intro*
+Introduction ~
+This filetype plugin provides extensive support for editing METAFONT and
+MetaPost documents, including syntax coloring, indentation, and completion.
+
+Defining indentation rules for METAFONT and MetaPost code is tricky and
+somewhat subjective, because the syntax is quite liberal. The plugin uses some
+heuristics that work well most of the time, but in particular cases you may
+want to to override the automatic rules, so that the manually defined
+indentation is preserved by commands like `gg=G`.
+
+This can be achieved by appending `%>`, `%<`, `%=` or `%!` to a line to
+explicitly control the indentation of the next line. The `<` and `>` symbols
+may be repeated many times: for instance, `%>>` will cause the next line to be
+indented twice. Of course, `%<` means that the next line should be
+de-indented; `%=` sets the indentation of the next line to be equal to the
+indentation of the current line; and `%!` means that the indentation of the
+next line should not change from whatever it has been manually set.
+
+For example, this is the default indentation of a simple macro:
+>
+   def foo =
+       makepen(
+           subpath(T-n,t) of r
+           shifted .5down
+           --subpath(t,T) of r shifted .5up -- cycle
+       )
+       withcolor black
+   enddef
+<
+By adding the special comments, the indentation can be adjusted arbitrarily:
+>
+   def foo =
+       makepen(
+           subpath(T-n,t) of r  %>
+               shifted .5down   %>
+                   --subpath(t,T) of r shifted .5up -- cycle   %<<<
+       )
+       withcolor black
+   enddef
+<
+							*ft-metapost-commands*
+Commands ~
+					*:FixBeginfigs*
+Renumber beginfig() blocks in the current buffer so that the n-th figure has
+number n. MetaPost only.
+
+							*ft-metapost-settings*
+							*ft-metafont-settings*
+Settings ~
+					*'g:mf_other_macros'*
+Highlight some other basic macro names, e.g., from cmbase, logo, etc. This is
+set to 1 by default in METAFONT buffers, and it is set to 0 by default in
+MetaPost buffers.
+
+					*'g:mf_plain_macros'*
+Highlight keywords defined by plain.mf. This is set to 1 by default in
+METAFONT buffers, and it is set to 0 by default in MetaPost buffers.
+
+					*'g:mf_plain_modes'*
+Highlight keywords defined by modes.mf. This is set to 1 by default in
+METAFONT buffers, and it is set to 0 by default in MetaPost buffers.
+
+					*'g:mp_close_tag'*
+Define additional keywords that end indented blocks. For instance, if you
+define:
+>
+	g:mp_end_tag = ['\<endfoo\>']
+<
+any line starting with `endfoo` will be de-indented compared to its previous
+line.
+>
+	g:mp_close_tag = []
+<
+					*'b:mp_metafun'*
+					*'g:mp_metafun'*
+If set to 1, highlight ConTeXt's MetaFun keywords. MetaPost only.
+>
+	g:mp_metafun = 0
+<
+					*'g:mp_mfplain_macros'*
+Highlight keywords defined by mfplain.mp. MetaPost only.
+>
+	g:mp_mfplain_macros = 1
+<
+					*'g:mp_open_tag'*
+Define additional keywords that start indented blocks. For instance, if you
+define:
+>
+	g:mp_open_tag = ['\<beginfoo\>']
+<
+the line following `beginfoo` will be indented.
+>
+	g:mp_open_tag = []
+<
+					*'g:mp_other_macros'*
+Highlight keywords defined by all base macro packages (boxes, rboxes, format,
+graph, marith, sarith, string, TEX). This option affects only MetaPost
+buffers.
+>
+	g:mp_other_macros = 1
+<
+					*'g:mp_plain_macros'*
+Highlight keywords defined by plain.mp. MetaPost only.
+>
+	g:mp_plain_macros = 1
+<
+					*'g:no_mp_maps'*
+					*'g:no_mf_maps'*
+When set, do not define any mapping in buffers with the corresponding
+filetype.
+>
+	g:no_mp_maps = 0
+	g:no_mf_maps = 0
+<
+							*ft-metapost-mappings*
+							*ft-metafont-mappings*
+Mappings ~
+
+]]			[count] vardefs, macros or figures forward.
+
+[[			[count] vardefs, macros or figures backward.
+
+][			[count] end of vardefs, macros or figures forward.
+
+[]			[count] end of vardefs, macros or figures backward.
+
+]}			[count] end of blocks (fi, endfor, endgroup) forward.
+
+[{			[count] begin of blocks (if, for, begingroup) backward.
+
+ vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -69,6 +69,9 @@
 'autowriteall'	options.txt	/*'autowriteall'*
 'aw'	options.txt	/*'aw'*
 'awa'	options.txt	/*'awa'*
+'b:context_ignore_makefile'	ft_context.txt	/*'b:context_ignore_makefile'*
+'b:context_include'	ft_context.txt	/*'b:context_include'*
+'b:mp_metafun'	ft_mp.txt	/*'b:mp_metafun'*
 'background'	options.txt	/*'background'*
 'backspace'	options.txt	/*'backspace'*
 'backup'	options.txt	/*'backup'*
@@ -299,6 +302,20 @@
 'fs'	options.txt	/*'fs'*
 'fsync'	options.txt	/*'fsync'*
 'ft'	options.txt	/*'ft'*
+'g:context_ignore_makefile'	ft_context.txt	/*'g:context_ignore_makefile'*
+'g:context_include'	ft_context.txt	/*'g:context_include'*
+'g:mf_other_macros'	ft_mp.txt	/*'g:mf_other_macros'*
+'g:mf_plain_macros'	ft_mp.txt	/*'g:mf_plain_macros'*
+'g:mf_plain_modes'	ft_mp.txt	/*'g:mf_plain_modes'*
+'g:mp_close_tag'	ft_mp.txt	/*'g:mp_close_tag'*
+'g:mp_metafun'	ft_mp.txt	/*'g:mp_metafun'*
+'g:mp_mfplain_macros'	ft_mp.txt	/*'g:mp_mfplain_macros'*
+'g:mp_open_tag'	ft_mp.txt	/*'g:mp_open_tag'*
+'g:mp_other_macros'	ft_mp.txt	/*'g:mp_other_macros'*
+'g:mp_plain_macros'	ft_mp.txt	/*'g:mp_plain_macros'*
+'g:no_context_maps'	ft_context.txt	/*'g:no_context_maps'*
+'g:no_mf_maps'	ft_mp.txt	/*'g:no_mf_maps'*
+'g:no_mp_maps'	ft_mp.txt	/*'g:no_mp_maps'*
 'gcr'	options.txt	/*'gcr'*
 'gd'	options.txt	/*'gd'*
 'gdefault'	options.txt	/*'gdefault'*
@@ -1301,7 +1318,6 @@
 +balloon_eval	various.txt	/*+balloon_eval*
 +balloon_eval_term	various.txt	/*+balloon_eval_term*
 +browse	various.txt	/*+browse*
-+builtin_terms	various.txt	/*+builtin_terms*
 +byte_offset	various.txt	/*+byte_offset*
 +channel	various.txt	/*+channel*
 +cindent	various.txt	/*+cindent*
@@ -2036,12 +2052,17 @@ 90.5	usr_90.txt	/*90.5*
 :Cfilter	quickfix.txt	/*:Cfilter*
 :Clear	terminal.txt	/*:Clear*
 :CompilerSet	usr_51.txt	/*:CompilerSet*
+:ConTeXt	ft_context.txt	/*:ConTeXt*
+:ConTeXtJobsStatus	ft_context.txt	/*:ConTeXtJobsStatus*
+:ConTeXtLog	ft_context.txt	/*:ConTeXtLog*
+:ConTeXtStopJobs	ft_context.txt	/*:ConTeXtStopJobs*
 :Continue	terminal.txt	/*:Continue*
 :DiffOrig	diff.txt	/*:DiffOrig*
 :DoMatchParen	pi_paren.txt	/*:DoMatchParen*
 :Evaluate	terminal.txt	/*:Evaluate*
 :Explore	pi_netrw.txt	/*:Explore*
 :Finish	terminal.txt	/*:Finish*
+:FixBeginfigs	ft_mp.txt	/*:FixBeginfigs*
 :GLVS	pi_getscript.txt	/*:GLVS*
 :Gdb	terminal.txt	/*:Gdb*
 :GetLatestVimScripts_dat	pi_getscript.txt	/*:GetLatestVimScripts_dat*
@@ -6293,6 +6314,7 @@ conceal	syntax.txt	/*conceal*
 confirm()	builtin.txt	/*confirm()*
 connection-refused	message.txt	/*connection-refused*
 console-menus	gui.txt	/*console-menus*
+context.vim	ft_context.txt	/*context.vim*
 control	intro.txt	/*control*
 conversion-server	mbyte.txt	/*conversion-server*
 convert-to-HTML	syntax.txt	/*convert-to-HTML*
@@ -6937,6 +6959,11 @@ ft-clojure-indent	indent.txt	/*ft-clojur
 ft-clojure-syntax	syntax.txt	/*ft-clojure-syntax*
 ft-cobol-syntax	syntax.txt	/*ft-cobol-syntax*
 ft-coldfusion-syntax	syntax.txt	/*ft-coldfusion-syntax*
+ft-context	ft_context.txt	/*ft-context*
+ft-context-commands	ft_context.txt	/*ft-context-commands*
+ft-context-intro	ft_context.txt	/*ft-context-intro*
+ft-context-mappings	ft_context.txt	/*ft-context-mappings*
+ft-context-settings	ft_context.txt	/*ft-context-settings*
 ft-cpp-syntax	syntax.txt	/*ft-cpp-syntax*
 ft-csh-syntax	syntax.txt	/*ft-csh-syntax*
 ft-css-omni	insert.txt	/*ft-css-omni*
@@ -6996,6 +7023,15 @@ ft-markdown-syntax	syntax.txt	/*ft-markd
 ft-masm-syntax	syntax.txt	/*ft-masm-syntax*
 ft-mathematica-syntax	syntax.txt	/*ft-mathematica-syntax*
 ft-matlab-indent	indent.txt	/*ft-matlab-indent*
+ft-metafont	ft_mp.txt	/*ft-metafont*
+ft-metafont-intro	ft_mp.txt	/*ft-metafont-intro*
+ft-metafont-mappings	ft_mp.txt	/*ft-metafont-mappings*
+ft-metafont-settings	ft_mp.txt	/*ft-metafont-settings*
+ft-metapost	ft_mp.txt	/*ft-metapost*
+ft-metapost-commands	ft_mp.txt	/*ft-metapost-commands*
+ft-metapost-intro	ft_mp.txt	/*ft-metapost-intro*
+ft-metapost-mappings	ft_mp.txt	/*ft-metapost-mappings*
+ft-metapost-settings	ft_mp.txt	/*ft-metapost-settings*
 ft-mma-syntax	syntax.txt	/*ft-mma-syntax*
 ft-moo-syntax	syntax.txt	/*ft-moo-syntax*
 ft-msql-syntax	syntax.txt	/*ft-msql-syntax*
@@ -7074,6 +7110,8 @@ ft-yaml-syntax	syntax.txt	/*ft-yaml-synt
 ft-zimbu-plugin	filetype.txt	/*ft-zimbu-plugin*
 ft-zsh-syntax	syntax.txt	/*ft-zsh-syntax*
 ft_ada.txt	ft_ada.txt	/*ft_ada.txt*
+ft_context.txt	ft_context.txt	/*ft_context.txt*
+ft_mp.txt	ft_mp.txt	/*ft_mp.txt*
 ft_ps1.txt	ft_ps1.txt	/*ft_ps1.txt*
 ft_raku.txt	ft_raku.txt	/*ft_raku.txt*
 ft_rust.txt	ft_rust.txt	/*ft_rust.txt*
@@ -8320,6 +8358,7 @@ message.txt	message.txt	/*message.txt*
 messages	message.txt	/*messages*
 meta	intro.txt	/*meta*
 method	eval.txt	/*method*
+mf.vim	ft_mp.txt	/*mf.vim*
 min()	builtin.txt	/*min()*
 missing-options	vi_diff.txt	/*missing-options*
 mkdir()	builtin.txt	/*mkdir()*
@@ -8353,6 +8392,7 @@ mouse_lnum-variable	eval.txt	/*mouse_lnu
 mouse_win-variable	eval.txt	/*mouse_win-variable*
 mouse_winid-variable	eval.txt	/*mouse_winid-variable*
 movement	intro.txt	/*movement*
+mp.vim	ft_mp.txt	/*mp.vim*
 ms-dos	os_msdos.txt	/*ms-dos*
 msdos	os_msdos.txt	/*msdos*
 msql.vim	syntax.txt	/*msql.vim*
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -46,7 +46,7 @@ TERMCAP defined.
 A number of builtin terminals are available.  Since patch 9.0.0280 there is no
 difference between Vim versions.  You can see a list of available builtin
 terminals in the error message you get for `:set term=xxx` (when not running
-the GUI).  Also see |+builtin_terms|.
+the GUI).  Also see |++builtin_terms|.
 
 If the termcap code is included Vim will try to get the strings for the
 terminal you are using from the termcap file and the builtin termcaps.  Both
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -38,6 +38,8 @@ browser use: https://github.com/vim/vim/
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+*.sil detection with FTsil() (lacygoill, Aug 25)
+
 Further Vim9 improvements, possibly after launch:
 - Use Vim9 for more runtime files.
 - Check performance with callgrind and kcachegrind.
@@ -182,6 +184,10 @@ Patches considered for including:
 - allow for nesting of timeout, sketch in #10595
 - Add setcmdline()  #10869
 
+Cleanup:
+- Remove OLD_DIGRAPHS ?
+- Remove FEAT_FOOTER ?
+
 Add 'splitscroll'  #10682  Useful?  Any trouble? Null Chilly says it's OK.
     suggestion: names instead of numbers for the option value
     problem depending on whether window is focused or not
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -374,7 +374,8 @@ N  *+eval*		expression evaluation |eval.
 T  *+ex_extra*		always on now, used to be for Vim's extra Ex commands
 N  *+extra_search*	|'hlsearch'| and |'incsearch'| options.
 -  *+farsi*		Removed: |farsi| language
-N  *+file_in_path*	|gf|, |CTRL-W_f| and |<cfile>|
+T  *+file_in_path*	|gf|, |CTRL-W_f| and |<cfile>|  Always enabled since
+			9.0.265
 N  *+find_in_path*	include file searches: |[I|, |:isearch|,
 			|CTRL-W_CTRL-I|, |:checkpath|, etc.
 N  *+folding*		|folding|
--- a/runtime/indent/context.vim
+++ b/runtime/indent/context.vim
@@ -1,36 +1,65 @@
-" ConTeXt indent file
-" Language: ConTeXt typesetting engine
-" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
-" Last Change:  2016 Oct 15
+vim9script
+
+# Language:           ConTeXt typesetting engine
+# Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
+# Former Maintainers: Nikolai Weibull <now@bitwi.se>
+# Latest Revision:    2022 Aug 12
 
 if exists("b:did_indent")
   finish
 endif
 
-if !get(b:, 'context_metapost', get(g:, 'context_metapost', 1))
-  finish
-endif
-
-" Load MetaPost indentation script
+# Load MetaPost indentation script (this will also set b:did_indent)
 runtime! indent/mp.vim
 
-let s:keepcpo= &cpo
-set cpo&vim
+setlocal indentexpr=ConTeXtIndent()
+
+b:undo_indent = "setl indentexpr<"
 
-setlocal indentexpr=GetConTeXtIndent()
+def PrevNotComment(l: number): number
+  var prevlnum = prevnonblank(l)
+
+  while prevlnum > 0 && getline(prevlnum) =~# '^\s*%'
+    prevlnum = prevnonblank(prevlnum - 1)
+  endwhile
 
-let b:undo_indent = "setl indentexpr<"
+  return prevlnum
+enddef
 
-function! GetConTeXtIndent()
-  " Use MetaPost rules inside MetaPost graphic environments
+def FindPair(pstart: string, pmid: string, pend: string): number
+  cursor(v:lnum, 1)
+  return indent(searchpair(pstart, pmid, pend, 'bWn',
+    'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'))
+enddef
+
+def ConTeXtIndent(): number
+  # Use MetaPost rules inside MetaPost graphic environments
   if len(synstack(v:lnum, 1)) > 0 &&
-        \ synIDattr(synstack(v:lnum, 1)[0], "name") ==# 'contextMPGraphic'
-    return GetMetaPostIndent()
+    synIDattr(synstack(v:lnum, 1)[0], "name") ==# 'contextMPGraphic'
+    return g:MetaPostIndent()
   endif
+
+  const prevlnum = PrevNotComment(v:lnum - 1)
+  const prevind  = indent(prevlnum)
+  const prevline = getline(prevlnum)
+  const currline = getline(v:lnum)
+
+  # If the current line starts with ], match indentation.
+  if currline =~# '^\s*\]'
+    return FindPair('\[', '', '\]')
+  endif
+
+  # If the current line starts with }, match indentation.
+  if currline =~# '^\s*}'
+    return FindPair('{', '', '}')
+  endif
+
+  # If the previous line ends with [ or { (possibly followed by a comment) then indent.
+  if prevline =~# '[{[]\s*\%(%.*\)\=$'
+    return prevind + shiftwidth()
+  endif
+
   return -1
-endfunc
+enddef
 
-let &cpo = s:keepcpo
-unlet s:keepcpo
-
-" vim:sw=2
+# vim: sw=2 fdm=marker
--- a/runtime/indent/mf.vim
+++ b/runtime/indent/mf.vim
@@ -1,6 +1,6 @@
 " METAFONT indent file
 " Language:    METAFONT
 " Maintainer:  Nicola Vitacolonna <nvitacolonna@gmail.com>
-" Last Change: 2016 Oct 1
+" Latest Revision:    2022 Aug 12
 
 runtime! indent/mp.vim
--- a/runtime/indent/mp.vim
+++ b/runtime/indent/mp.vim
@@ -1,360 +1,320 @@
-" MetaPost indent file
-" Language:           MetaPost
-" Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
-" Former Maintainers: Eugene Minkovskii <emin@mccme.ru>
-" Last Change:        2016 Oct 2, 4:13pm
-" Version: 0.2
+vim9script
+
+# MetaPost indent file
+# Language:           MetaPost
+# Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
+# Former Maintainers: Eugene Minkovskii <emin@mccme.ru>
+# Latest Revision:    2022 Aug 12
 
 if exists("b:did_indent")
   finish
 endif
-let b:did_indent = 1
 
-setlocal indentexpr=GetMetaPostIndent()
-setlocal indentkeys+==end,=else,=fi,=fill,0),0]
-
-let b:undo_indent = "setl indentkeys< indentexpr<"
+b:did_indent = 1
 
-" Only define the function once.
-if exists("*GetMetaPostIndent")
-  finish
-endif
-let s:keepcpo= &cpo
-set cpo&vim
+setlocal indentexpr=g:MetaPostIndent()
+setlocal indentkeys+==end,=else,=fi,=fill,0),0]
+setlocal nolisp
+setlocal nosmartindent
+
+b:undo_indent = "setl indentexpr< indentkeys< lisp< smartindent<"
 
-function GetMetaPostIndent()
-  let ignorecase_save = &ignorecase
-  try
-    let &ignorecase = 0
-    return GetMetaPostIndentIntern()
-  finally
-    let &ignorecase = ignorecase_save
-  endtry
-endfunc
+# Regexps {{{
+# Expressions starting indented blocks
+const MP_OPEN_TAG = [
+  '\<if\>',
+  '\<else\%[if]\>',
+  '\<for\%(\|ever\|suffixes\)\>',
+  '\<begingroup\>',
+  '\<\%(\|var\|primary\|secondary\|tertiary\)def\>',
+  '^\s*\<begin\%(fig\|graph\|glyph\|char\|logochar\)\>',
+  '[([{]',
+  ]->extend(get(g:, "mp_open_tag", []))->join('\|')
 
-" Regexps {{{
-" Note: the next three variables are made global so that a user may add
-" further keywords.
-"
-" Example:
-"
-"    Put these in ~/.vim/after/indent/mp.vim
-"
-"    let g:mp_open_tag .= '\|\<begintest\>'
-"    let g:mp_close_tag .= '\|\<endtest\>'
-
-" Expressions starting indented blocks
-let g:mp_open_tag = ''
-      \ . '\<if\>'
-      \ . '\|\<else\%[if]\>'
-      \ . '\|\<for\%(\|ever\|suffixes\)\>'
-      \ . '\|\<begingroup\>'
-      \ . '\|\<\%(\|var\|primary\|secondary\|tertiary\)def\>'
-      \ . '\|^\s*\<begin\%(fig\|graph\|glyph\|char\|logochar\)\>'
-      \ . '\|[([{]'
+# Expressions ending indented blocks
+const MP_CLOSE_TAG = [
+  '\<fi\>',
+  '\<else\%[if]\>',
+  '\<end\%(\|for\|group\|def\|fig\|char\|glyph\|graph\)\>',
+  '[)\]}]'
+  ]->extend(get(g:, "mp_close_tag", []))->join('\|')
 
-" Expressions ending indented blocks
-let g:mp_close_tag = ''
-      \ . '\<fi\>'
-      \ . '\|\<else\%[if]\>'
-      \ . '\|\<end\%(\|for\|group\|def\|fig\|char\|glyph\|graph\)\>'
-      \ . '\|[)\]}]'
+# Statements that may span multiple lines and are ended by a semicolon. To
+# keep this list short, statements that are unlikely to be very long or are
+# not very common (e.g., keywords like `interim` or `showtoken`) are not
+# included.
+#
+# The regex for assignments and equations (the last branch) is tricky, because
+# it must not match things like `for i :=`, `if a=b`, `def...=`, etc... It is
+# not perfect, but it works reasonably well.
+const MP_STATEMENT = [
+  '\<\%(\|un\|cut\)draw\%(dot\)\=\>',
+  '\<\%(\|un\)fill\%[draw]\>',
+  '\<draw\%(dbl\)\=arrow\>',
+  '\<clip\>',
+  '\<addto\>',
+  '\<save\>',
+  '\<setbounds\>',
+  '\<message\>',
+  '\<errmessage\>',
+  '\<errhelp\>',
+  '\<fontmapline\>',
+  '\<pickup\>',
+  '\<show\>',
+  '\<special\>',
+  '\<write\>',
+  '\%(^\|;\)\%([^;=]*\%(' .. MP_OPEN_TAG .. '\)\)\@!.\{-}:\==',
+  ]->join('\|')
 
-" Statements that may span multiple lines and are ended by a semicolon. To
-" keep this list short, statements that are unlikely to be very long or are
-" not very common (e.g., keywords like `interim` or `showtoken`) are not
-" included.
-"
-" The regex for assignments and equations (the last branch) is tricky, because
-" it must not match things like `for i :=`, `if a=b`, `def...=`, etc... It is
-" not perfect, but it works reasonably well.
-let g:mp_statement = ''
-      \ . '\<\%(\|un\|cut\)draw\>'
-      \ . '\|\<\%(\|un\)fill\%[draw]\>'
-      \ . '\|\<draw\%(dbl\)\=arrow\>'
-      \ . '\|\<clip\>'
-      \ . '\|\<addto\>'
-      \ . '\|\<save\>'
-      \ . '\|\<setbounds\>'
-      \ . '\|\<message\>'
-      \ . '\|\<errmessage\>'
-      \ . '\|\<errhelp\>'
-      \ . '\|\<fontmapline\>'
-      \ . '\|\<pickup\>'
-      \ . '\|\<show\>'
-      \ . '\|\<special\>'
-      \ . '\|\<write\>'
-      \ . '\|\%(^\|;\)\%([^;=]*\%('.g:mp_open_tag.'\)\)\@!.\{-}:\=='
+# A line ends with zero or more spaces, possibly followed by a comment.
+const EOL = '\s*\%($\|%\)'
+# }}}
+
+# Auxiliary functions {{{
+# Returns true if (0-based) position immediately preceding `pos` in `line` is
+# inside a string or a comment; returns false otherwise.
 
-" A line ends with zero or more spaces, possibly followed by a comment.
-let s:eol = '\s*\%($\|%\)'
-" }}}
-
-" Auxiliary functions {{{
-" Returns 1 if (0-based) position immediately preceding `pos` in `line` is
-" inside a string or a comment; returns 0 otherwise.
+# This is the function that is called more often when indenting, so it is
+# critical that it is efficient. The method we use is significantly faster
+# than using syntax attributes, and more general (it does not require
+# syntax_items). It is also faster than using a single regex matching an even
+# number of quotes. It helps that MetaPost strings cannot span more than one
+# line and cannot contain escaped quotes.
+def IsCommentOrString(line: string, pos: number): bool
+  var in_string = 0
+  var q = stridx(line, '"')
+  var c = stridx(line, '%')
 
-" This is the function that is called more often when indenting, so it is
-" critical that it is efficient. The method we use is significantly faster
-" than using syntax attributes, and more general (it does not require
-" syntax_items). It is also faster than using a single regex matching an even
-" number of quotes. It helps that MetaPost strings cannot span more than one
-" line and cannot contain escaped quotes.
-function! s:CommentOrString(line, pos)
-  let in_string = 0
-  let q = stridx(a:line, '"')
-  let c = stridx(a:line, '%')
-  while q >= 0 && q < a:pos
+  while q >= 0 && q < pos
     if c >= 0 && c < q
-      if in_string " Find next percent symbol
-        let c = stridx(a:line, '%', q + 1)
-      else " Inside comment
-        return 1
+      if in_string # Find next percent symbol
+        c = stridx(line, '%', q + 1)
+      else # Inside comment
+        return true
       endif
     endif
-    let in_string = 1 - in_string
-    let q = stridx(a:line, '"', q + 1) " Find next quote
+    in_string = 1 - in_string
+    q = stridx(line, '"', q + 1) # Find next quote
   endwhile
-  return in_string || (c >= 0 && c <= a:pos)
-endfunction
+
+  return in_string || (c >= 0 && c <= pos)
+enddef
 
-" Find the first non-comment non-blank line before the current line.
-function! s:PrevNonBlankNonComment(lnum)
-  let l:lnum = prevnonblank(a:lnum - 1)
-  while getline(l:lnum) =~# '^\s*%'
-    let l:lnum = prevnonblank(l:lnum - 1)
+# Find the first non-comment non-blank line before the given line.
+def PrevNonBlankNonComment(lnum: number): number
+  var nr = prevnonblank(lnum - 1)
+  while getline(nr) =~# '^\s*%'
+    nr = prevnonblank(nr - 1)
   endwhile
-  return l:lnum
-endfunction
+  return nr
+enddef
 
-" Returns true if the last tag appearing in the line is an open tag; returns
-" false otherwise.
-function! s:LastTagIsOpen(line)
-  let o = s:LastValidMatchEnd(a:line, g:mp_open_tag, 0)
-  if o == - 1 | return v:false | endif
-  return s:LastValidMatchEnd(a:line, g:mp_close_tag, o) < 0
-endfunction
+# Returns true if the last tag appearing in the line is an open tag; returns
+# false otherwise.
+def LastTagIsOpen(line: string): bool
+  var o = LastValidMatchEnd(line, MP_OPEN_TAG, 0)
+  if o == - 1
+    return false
+  endif
+  return LastValidMatchEnd(line, MP_CLOSE_TAG, o) < 0
+enddef
 
-" A simple, efficient and quite effective heuristics is used to test whether
-" a line should cause the next line to be indented: count the "opening tags"
-" (if, for, def, ...) in the line, count the "closing tags" (endif, endfor,
-" ...) in the line, and compute the difference. We call the result the
-" "weight" of the line. If the weight is positive, then the next line should
-" most likely be indented. Note that `else` and `elseif` are both opening and
-" closing tags, so they "cancel out" in almost all cases, the only exception
-" being a leading `else[if]`, which is counted as an opening tag, but not as
-" a closing tag (so that, for instance, a line containing a single `else:`
-" will have weight equal to one, not zero). We do not treat a trailing
-" `else[if]` in any special way, because lines ending with an open tag are
-" dealt with separately before this function is called (see
-" GetMetaPostIndentIntern()).
-"
-" Example:
-"
-"     forsuffixes $=a,b: if x.$ = y.$ : draw else: fill fi
-"       % This line will be indented because |{forsuffixes,if,else}| > |{else,fi}| (3 > 2)
-"     endfor
-
-function! s:Weight(line)
-  let [o, i] = [0, s:ValidMatchEnd(a:line, g:mp_open_tag, 0)]
+# A simple, efficient and quite effective heuristics is used to test whether
+# a line should cause the next line to be indented: count the "opening tags"
+# (if, for, def, ...) in the line, count the "closing tags" (endif, endfor,
+# ...) in the line, and compute the difference. We call the result the
+# "weight" of the line. If the weight is positive, then the next line should
+# most likely be indented. Note that `else` and `elseif` are both opening and
+# closing tags, so they "cancel out" in almost all cases, the only exception
+# being a leading `else[if]`, which is counted as an opening tag, but not as
+# a closing tag (so that, for instance, a line containing a single `else:`
+# will have weight equal to one, not zero). We do not treat a trailing
+# `else[if]` in any special way, because lines ending with an open tag are
+# dealt with separately before this function is called (see MetaPostIndent()).
+#
+# Example:
+#
+#     forsuffixes $=a,b: if x.$ = y.$ : draw else: fill fi
+#       % This line will be indented because |{forsuffixes,if,else}| > |{else,fi}| (3 > 2)
+#     endfor
+def Weight(line: string): number
+  var o = 0
+  var i = ValidMatchEnd(line, MP_OPEN_TAG, 0)
   while i > 0
-    let o += 1
-    let i = s:ValidMatchEnd(a:line, g:mp_open_tag, i)
+    o += 1
+    i = ValidMatchEnd(line, MP_OPEN_TAG, i)
   endwhile
-  let [c, i] = [0, matchend(a:line, '^\s*\<else\%[if]\>')] " Skip a leading else[if]
-  let i = s:ValidMatchEnd(a:line, g:mp_close_tag, i)
+  var c = 0
+  i = matchend(line, '^\s*\<else\%[if]\>')  # Skip a leading else[if]
+  i = ValidMatchEnd(line, MP_CLOSE_TAG, i)
   while i > 0
-    let c += 1
-    let i = s:ValidMatchEnd(a:line, g:mp_close_tag, i)
+    c += 1
+    i = ValidMatchEnd(line, MP_CLOSE_TAG, i)
   endwhile
   return o - c
-endfunction
+enddef
 
-" Similar to matchend(), but skips strings and comments.
-" line: a String
-function! s:ValidMatchEnd(line, pat, start)
-  let i = matchend(a:line, a:pat, a:start)
-  while i > 0 && s:CommentOrString(a:line, i)
-    let i = matchend(a:line, a:pat, i)
+# Similar to matchend(), but skips strings and comments.
+# line: a String
+def ValidMatchEnd(line: string, pat: string, start: number): number
+  var i = matchend(line, pat, start)
+  while i > 0 && IsCommentOrString(line, i)
+    i = matchend(line, pat, i)
   endwhile
   return i
-endfunction
+enddef
 
-" Like s:ValidMatchEnd(), but returns the end position of the last (i.e.,
-" rightmost) match.
-function! s:LastValidMatchEnd(line, pat, start)
-  let last_found = -1
-  let i = matchend(a:line, a:pat, a:start)
+# Like s:ValidMatchEnd(), but returns the end position of the last (i.e.,
+# rightmost) match.
+def LastValidMatchEnd(line: string, pat: string, start: number): number
+  var last_found = -1
+  var i = matchend(line, pat, start)
   while i > 0
-    if !s:CommentOrString(a:line, i)
-      let last_found = i
+    if !IsCommentOrString(line, i)
+      last_found = i
     endif
-    let i = matchend(a:line, a:pat, i)
+    i = matchend(line, pat, i)
   endwhile
   return last_found
-endfunction
-
-function! s:DecreaseIndentOnClosingTag(curr_indent)
-  let cur_text = getline(v:lnum)
-  if cur_text =~# '^\s*\%('.g:mp_close_tag.'\)'
-    return max([a:curr_indent - shiftwidth(), 0])
-  endif
-  return a:curr_indent
-endfunction
-" }}}
+enddef
 
-" Main function {{{
-"
-" Note: Every rule of indentation in MetaPost is very subjective. We might get
-" creative, but things get murky very soon (there are too many corner cases).
-" So, we provide a means for the user to decide what to do when this script
-" doesn't get it. We use a simple idea: use '%>', '%<' and '%=' to explicitly
-" control indentation. The '<' and '>' symbols may be repeated many times
-" (e.g., '%>>' will cause the next line to be indented twice).
-"
-" By using '%>...', '%<...' and '%=', the indentation the user wants is
-" preserved by commands like gg=G, even if it does not follow the rules of
-" this script.
-"
-" Example:
-"
-"    def foo =
-"        makepen(
-"            subpath(T-n,t) of r  %>
-"                shifted .5down   %>
-"                    --subpath(t,T) of r shifted .5up -- cycle   %<<<
-"        )
-"        withcolor black
-"    enddef
-"
-" The default indentation of the previous example would be:
-"
-"    def foo =
-"        makepen(
-"            subpath(T-n,t) of r
-"            shifted .5down
-"            --subpath(t,T) of r shifted .5up -- cycle
-"        )
-"        withcolor black
-"    enddef
-"
-" Personally, I prefer the latter, but anyway...
-function! GetMetaPostIndentIntern()
-  " Do not touch indentation inside verbatimtex/btex.. etex blocks.
+def DecreaseIndentOnClosingTag(curr_indent: number): number
+  var cur_text = getline(v:lnum)
+  if cur_text =~# '^\s*\%(' .. MP_CLOSE_TAG .. '\)'
+    return max([curr_indent - shiftwidth(), 0])
+  endif
+  return curr_indent
+enddef
+# }}}
+
+# Main function {{{
+def g:MetaPostIndent(): number
+  # Do not touch indentation inside verbatimtex/btex.. etex blocks.
   if synIDattr(synID(v:lnum, 1, 1), "name") =~# '^mpTeXinsert$\|^tex\|^Delimiter'
     return -1
   endif
 
-  " This is the reference line relative to which the current line is indented
-  " (but see below).
-  let lnum = s:PrevNonBlankNonComment(v:lnum)
+  # At the start of a MetaPost block inside ConTeXt, do not touch indentation
+  if synIDattr(synID(prevnonblank(v:lnum - 1), 1, 1), "name") == "contextBlockDelim"
+    return -1
+  endif
 
-  " At the start of the file use zero indent.
+  var lnum = PrevNonBlankNonComment(v:lnum)
+
+  # At the start of the file use zero indent.
   if lnum == 0
     return 0
   endif
 
-  let prev_text = getline(lnum)
+  var prev_text = getline(lnum)
 
-  " User-defined overrides take precedence over anything else.
-  " See above for an example.
-  let j = match(prev_text, '%[<>=]')
+  # Every rule of indentation in MetaPost is very subjective. We might get
+  # creative, but things get murky very soon (there are too many corner
+  # cases). So, we provide a means for the user to decide what to do when this
+  # script doesn't get it. We use a simple idea: use '%>', '%<', '%=', and
+  # '%!', to explicitly control indentation. The '<' and '>' symbols may be
+  # repeated many times (e.g., '%>>' will cause the next line to be indented
+  # twice).
+  #
+  # User-defined overrides take precedence over anything else.
+  var j = match(prev_text, '%[<>=!]')
   if j > 0
-    let i = strlen(matchstr(prev_text, '%>\+', j)) - 1
+    var i = strlen(matchstr(prev_text, '%>\+', j)) - 1
     if i > 0
       return indent(lnum) + i * shiftwidth()
     endif
 
-    let i = strlen(matchstr(prev_text, '%<\+', j)) - 1
+    i = strlen(matchstr(prev_text, '%<\+', j)) - 1
     if i > 0
       return max([indent(lnum) - i * shiftwidth(), 0])
     endif
 
-    if match(prev_text, '%=', j)
+    if match(prev_text, '%=', j) > -1
       return indent(lnum)
     endif
+
+    if match(prev_text, '%!', j) > -1
+      return -1
+    endif
   endif
 
-  " If the reference line ends with an open tag, indent.
-  "
-  " Example:
-  "
-  " if c:
-  "     0
-  " else:
-  "     1
-  " fi if c2: % Note that this line has weight equal to zero.
-  "     ...   % This line will be indented
-  if s:LastTagIsOpen(prev_text)
-    return s:DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth())
+  # If the reference line ends with an open tag, indent.
+  #
+  # Example:
+  #
+  # if c:
+  #     0
+  # else:
+  #     1
+  # fi if c2: % Note that this line has weight equal to zero.
+  #     ...   % This line will be indented
+  if LastTagIsOpen(prev_text)
+    return DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth())
   endif
 
-  " Lines with a positive weight are unbalanced and should likely be indented.
-  "
-  " Example:
-  "
-  " def f = enddef for i = 1 upto 5: if x[i] > 0: 1 else: 2 fi
-  "     ... % This line will be indented (because of the unterminated `for`)
-  if s:Weight(prev_text) > 0
-    return s:DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth())
+  # Lines with a positive weight are unbalanced and should likely be indented.
+  #
+  # Example:
+  #
+  # def f = enddef for i = 1 upto 5: if x[i] > 0: 1 else: 2 fi
+  #     ... % This line will be indented (because of the unterminated `for`)
+  if Weight(prev_text) > 0
+    return DecreaseIndentOnClosingTag(indent(lnum) + shiftwidth())
   endif
 
-  " Unterminated statements cause indentation to kick in.
-  "
-  " Example:
-  "
-  " draw unitsquare
-  "     withcolor black; % This line is indented because of `draw`.
-  " x := a + b + c
-  "     + d + e;         % This line is indented because of `:=`.
-  "
-  let i = s:LastValidMatchEnd(prev_text, g:mp_statement, 0)
-  if i >= 0 " Does the line contain a statement?
-    if s:ValidMatchEnd(prev_text, ';', i) < 0 " Is the statement unterminated?
+  # Unterminated statements cause indentation to kick in.
+  #
+  # Example:
+  #
+  # draw unitsquare
+  #     withcolor black; % This line is indented because of `draw`.
+  # x := a + b + c
+  #     + d + e;         % This line is indented because of `:=`.
+  #
+  var i = LastValidMatchEnd(prev_text, MP_STATEMENT, 0)
+  if i >= 0 # Does the line contain a statement?
+    if ValidMatchEnd(prev_text, ';', i) < 0 # Is the statement unterminated?
       return indent(lnum) + shiftwidth()
     else
-      return s:DecreaseIndentOnClosingTag(indent(lnum))
+      return DecreaseIndentOnClosingTag(indent(lnum))
     endif
   endif
 
-  " Deal with the special case of a statement spanning multiple lines. If the
-  " current reference line L ends with a semicolon, search backwards for
-  " another semicolon or a statement keyword. If the latter is found first,
-  " its line is used as the reference line for indenting the current line
-  " instead of L.
-  "
-  "  Example:
-  "
-  "  if cond:
-  "    draw if a: z0 else: z1 fi
-  "        shifted S
-  "        scaled T;      % L
-  "
-  "    for i = 1 upto 3:  % <-- Current line: this gets the same indent as `draw ...`
-  "
-  " NOTE: we get here only if L does not contain a statement (among those
-  " listed in g:mp_statement).
-  if s:ValidMatchEnd(prev_text, ';'.s:eol, 0) >= 0 " L ends with a semicolon
-    let stm_lnum = s:PrevNonBlankNonComment(lnum)
+  # Deal with the special case of a statement spanning multiple lines. If the
+  # current reference line L ends with a semicolon, search backwards for
+  # another semicolon or a statement keyword. If the latter is found first,
+  # its line is used as the reference line for indenting the current line
+  # instead of L.
+  #
+  #  Example:
+  #
+  #  if cond:
+  #    draw if a: z0 else: z1 fi
+  #        shifted S
+  #        scaled T;      % L
+  #
+  #    for i = 1 upto 3:  % <-- Current line: this gets the same indent as `draw ...`
+  #
+  # NOTE: we get here only if L does not contain a statement (among those
+  # listed in g:MP_STATEMENT).
+  if ValidMatchEnd(prev_text, ';' .. EOL, 0) >= 0 # L ends with a semicolon
+    var stm_lnum = PrevNonBlankNonComment(lnum)
     while stm_lnum > 0
-      let prev_text = getline(stm_lnum)
-      let sc_pos = s:LastValidMatchEnd(prev_text, ';', 0)
-      let stm_pos = s:ValidMatchEnd(prev_text, g:mp_statement, sc_pos)
+      prev_text = getline(stm_lnum)
+      var sc_pos = LastValidMatchEnd(prev_text, ';', 0)
+      var stm_pos = ValidMatchEnd(prev_text, MP_STATEMENT, sc_pos)
       if stm_pos > sc_pos
-        let lnum = stm_lnum
+        lnum = stm_lnum
         break
       elseif sc_pos > stm_pos
         break
       endif
-      let stm_lnum = s:PrevNonBlankNonComment(stm_lnum)
+      stm_lnum = PrevNonBlankNonComment(stm_lnum)
     endwhile
   endif
 
-  return s:DecreaseIndentOnClosingTag(indent(lnum))
-endfunction
-" }}}
+  return DecreaseIndentOnClosingTag(indent(lnum))
+enddef
+# }}}
 
-let &cpo = s:keepcpo
-unlet s:keepcpo
-
-" vim:sw=2:fdm=marker
+# vim: sw=2 fdm=marker
--- a/src/po/it.po
+++ b/src/po/it.po
@@ -14,8 +14,8 @@
 msgid ""
 msgstr ""
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-06-16 21:37+0200\n"
-"PO-Revision-Date: 2022-06-16 23:00+0100\n"
+"POT-Creation-Date: 2022-08-25 09:28+0200\n"
+"PO-Revision-Date: 2022-08-25 10:10+0100\n"
 "Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
 "Language-Team: Italian\n"
 "Language: it\n"
@@ -384,7 +384,6 @@ msgstr ""
 "\n"
 "\tImpostata l'ultima volta da "
 
-#.
 msgid "&Ok"
 msgstr "&OK"
 
@@ -2841,7 +2840,6 @@ msgstr "Compressi %s: %ld di %ld nodi; n
 msgid "Reading back spell file..."
 msgstr "Rilettura file ortografico..."
 
-#.
 msgid "Performing soundfolding..."
 msgstr "Eseguo soundfolding..."
 
@@ -5088,6 +5086,9 @@ msgstr "E486: Espressione non trovata: %
 msgid "E487: Argument must be positive"
 msgstr "E487: L'argomento dev'essere positivo"
 
+msgid "E487: Argument must be positive: %s"
+msgstr "E487: L'argomento dev'essere positivo: %s"
+
 msgid "E488: Trailing characters"
 msgstr "E488: Caratteri in più alla fine"
 
@@ -6168,8 +6169,8 @@ msgid "E859: Failed to convert returned 
 msgstr ""
 "E859: Conversione non riuscita dell'oggetto python risultato a un valore vim"
 
-msgid "E860: Need 'id' and 'type' with 'both'"
-msgstr "E860: Servono 'id' e 'type' specificando 'both'"
+msgid "E860: Need 'id' and 'type' or 'types' with 'both'"
+msgstr "E860: Servono 'id' e 'type' o 'types' specificando 'both'"
 
 msgid "E861: Cannot open a second popup with a terminal"
 msgstr "E861: Non posso aprire una seconda finestra dinamica con un terminale"
@@ -6667,11 +6668,11 @@ msgstr "E1006: %s è usato come argomento"
 msgid "E1007: Mandatory argument after optional argument"
 msgstr "E1007: Argomento obbligatorio dopo un argomento opzionale"
 
-msgid "E1008: Missing <type>"
-msgstr "E1008: Manca <type>"
-
-msgid "E1009: Missing > after type"
-msgstr "E1009: Manca > dopo tipo"
+msgid "E1008: Missing <type> after %s"
+msgstr "E1008: Manca <type> dopo %s"
+
+msgid "E1009: Missing > after type: %s"
+msgstr "E1009: Manca > dopo 'type': %s"
 
 msgid "E1010: Type not recognized: %s"
 msgstr "E1010: Tipo non riconosciuto: %s"
@@ -7556,10 +7557,32 @@ msgstr "E1288: Non riesco ad annullare i
 msgid "E1289: Could not check for pending SIGALRM: %s"
 msgstr "E1289: Non riesco a controllare se in attesa di SIGALRM: %s"
 
+msgid "E1290: substitute nesting too deep"
+msgstr "E1290: nidificazione della sostituzione troppo estesa"
+
+msgid "E1291: Invalid argument: %ld"
+msgstr "E1291: Argomento non valido: %ld"
+
+msgid "E1292: Command-line window is already open"
+msgstr "E1292: Finestra della riga-di-comando già aperta"
+
+msgid "E1293: Cannot use a negative id after adding a textprop with text"
+msgstr "E1293: Non posso usare un id negativo dopo aver aggiunto del testo "
+"a una 'textprop'"
+
+msgid "E1294: Can only use text_align when column is zero"
+msgstr "E1294: Si può usare 'text_align' solo quando la colonna è zero"
+
+msgid "E1295: Cannot specify both 'type' and 'types'"
+msgstr "E1295: Non si può specificare sia 'type' che 'types'"
+
+msgid "E1296: Can only use left padding when column is zero"
+msgstr "E1296: Si può usare il riempimento a sinistra solo quando la colonna "
+"è zero"
+
 msgid "--No lines in buffer--"
 msgstr "--File vuoto--"
 
-#.
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "raggiunta la CIMA nella ricerca, continuo dal FONDO"
 
@@ -7858,9 +7881,6 @@ msgstr "Edita file di testo"
 msgid "Text;editor;"
 msgstr "Testo;editor;"
 
-msgid "gvim"
-msgstr "gvim"
-
 msgid "Vim"
 msgstr "Vim"