Mercurial > vim
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"