]> granicus.if.org Git - vim/commitdiff
Update runtime files
authorBram Moolenaar <Bram@vim.org>
Sun, 16 Oct 2022 12:11:12 +0000 (13:11 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 16 Oct 2022 12:11:12 +0000 (13:11 +0100)
40 files changed:
.github/CODEOWNERS
runtime/autoload/dist/vimindent.vim
runtime/autoload/netrw.vim
runtime/doc/builtin.txt
runtime/doc/indent.txt
runtime/doc/index.txt
runtime/doc/intro.txt
runtime/doc/options.txt
runtime/doc/os_haiku.txt
runtime/doc/popup.txt
runtime/doc/quickref.txt
runtime/doc/repeat.txt
runtime/doc/rileft.txt
runtime/doc/syntax.txt
runtime/doc/tags
runtime/doc/terminal.txt
runtime/doc/textprop.txt
runtime/doc/todo.txt
runtime/doc/userfunc.txt
runtime/doc/usr_41.txt
runtime/doc/usr_52.txt
runtime/doc/various.txt
runtime/filetype.vim
runtime/ftplugin/abaqus.vim
runtime/ftplugin/lua.vim
runtime/ftplugin/markdown.vim
runtime/ftplugin/poefilter.vim [new file with mode: 0644]
runtime/ftplugin/ssa.vim [new file with mode: 0644]
runtime/indent/testdir/vim.in
runtime/indent/testdir/vim.ok
runtime/indent/vim.vim
runtime/optwin.vim
runtime/synmenu.vim
runtime/syntax/c.vim
runtime/syntax/markdown.vim
runtime/syntax/poefilter.vim [new file with mode: 0644]
runtime/syntax/sed.vim
runtime/syntax/ssa.vim [new file with mode: 0644]
runtime/tutor/tutor.es
runtime/tutor/tutor.es.utf-8

index b33c37bff50fd0cb0fb0b485813a87304f393d5c..e840ac2d07efa61f3428399e56d97a5d3b73eebd 100644 (file)
@@ -171,6 +171,7 @@ runtime/ftplugin/pbtxt.vim          @lakshayg
 runtime/ftplugin/pdf.vim               @tpope
 runtime/ftplugin/perl.vim              @petdance @dkearns
 runtime/ftplugin/pod.vim               @petdance @dkearns
+runtime/ftplugin/poefilter.vim         @ObserverOfTime
 runtime/ftplugin/postscr.vim           @mrdubya
 runtime/ftplugin/ps1.vim               @heaths
 runtime/ftplugin/ps1xml.vim            @heaths
@@ -192,6 +193,7 @@ runtime/ftplugin/sdoc.vim           @gpanders
 runtime/ftplugin/sh.vim                        @dkearns
 runtime/ftplugin/solution.vim          @dkearns
 runtime/ftplugin/spec.vim              @ignatenkobrain
+runtime/ftplugin/ssa.vim               @ObserverOfTime
 runtime/ftplugin/swayconfig.vim                @jamespeapen
 runtime/ftplugin/systemverilog.vim     @Kocha
 runtime/ftplugin/tap.vim               @petdance
@@ -397,6 +399,7 @@ runtime/syntax/perl.vim                     @petdance
 runtime/syntax/php.vim                 @TysonAndre
 runtime/syntax/plsql.vim               @lee-lindley
 runtime/syntax/pod.vim                 @petdance
+runtime/syntax/poefilter.vim           @ObserverOfTime
 runtime/syntax/postscr.vim             @mrdubya
 runtime/syntax/privoxy.vim             @dkearns
 runtime/syntax/prolog.vim              @XVilka
@@ -424,12 +427,14 @@ runtime/syntax/sass.vim                   @tpope
 runtime/syntax/scala.vim               @derekwyatt
 runtime/syntax/scss.vim                        @tpope
 runtime/syntax/sdoc.vim                        @gpanders
+runtime/syntax/sed.vim                 @dkearns
 runtime/syntax/sh.vim                  @cecamp
 runtime/syntax/sm.vim                  @cecamp
 runtime/syntax/spec.vim                        @ignatenkobrain
-runtime/syntax/srt.vim                 @ObserverOfTime
 runtime/syntax/sqloracle.vim           @chrisbra
 runtime/syntax/squirrel.vim            @zenmatic
+runtime/syntax/srt.vim                 @ObserverOfTime
+runtime/syntax/ssa.vim                 @ObserverOfTime
 runtime/syntax/sshconfig.vim           @Jakuje
 runtime/syntax/sshdconfig.vim          @Jakuje
 runtime/syntax/sudoers.vim             @e-kwsm
index 00977dc3d87e1d67ade069ea232a2cf55c25f8bb..24e2c939641981e948ad109d0020c76b881e4548 100644 (file)
@@ -2,7 +2,7 @@ vim9script
 
 # Language:     Vim script
 # Maintainer:   github user lacygoill
-# Last Change:  2022 Sep 24
+# Last Change:  2022 Oct 15
 
 # NOTE: Whenever you change the code, make sure the tests are still passing:
 #
@@ -156,7 +156,7 @@ const ASSIGNS_HEREDOC: string = $'^\%({COMMENT}\)\@!.*\%({HEREDOC_OPERATOR}\)\s\
 
 # CD_COMMAND {{{3
 
-const CD_COMMAND: string = $'[lt]\=cd!\=\s\+-{END_OF_COMMAND}'
+const CD_COMMAND: string = $'\<[lt]\=cd!\=\s\+-{END_OF_COMMAND}'
 
 # HIGHER_ORDER_COMMAND {{{3
 
@@ -178,7 +178,7 @@ const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%(' .. patt
 
 # MAPPING_COMMAND {{{3
 
-const MAPPING_COMMAND: string = '\%(\<sil\%[ent]!\=\s\+\)\=[nvxsoilct]\=\%(nore\|un\)map!\=\s'
+const MAPPING_COMMAND: string = '\%(\<sil\%[ent]!\=\s\+\)\=\<[nvxsoilct]\=\%(nore\|un\)map!\=\s'
 
 # NORMAL_COMMAND {{{3
 
@@ -222,7 +222,7 @@ END
 
 const ENDS_BLOCK_OR_CLAUSE: string = '^\s*\%(' .. patterns->join('\|') .. $'\){END_OF_COMMAND}'
     .. $'\|^\s*cat\%[ch]\%(\s\+\({PATTERN_DELIMITER}\).*\1\)\={END_OF_COMMAND}'
-    .. $'\|^\s*elseif\=\s\+\%({OPERATOR}\)\@!'
+    .. $'\|^\s*elseif\=\>\%({OPERATOR}\)\@!'
 
 # STARTS_CURLY_BLOCK {{{3
 
@@ -354,7 +354,7 @@ const LINE_CONTINUATION_AT_SOL: string = '^\s*\%('
 const RANGE_AT_SOL: string = '^\s*:\S'
 # }}}1
 # Interface {{{1
-export def Expr(lnum: number): number # {{{2
+export def Expr(lnum = v:lnum): number # {{{2
     # line which is indented
     var line_A: dict<any> = {text: getline(lnum), lnum: lnum}
     # line above, on which we'll base the indent of line A
@@ -409,6 +409,7 @@ export def Expr(lnum: number): number # {{{2
         line_A->CacheBracketBlock()
     endif
     if line_A.lnum->IsInside('BracketBlock')
+        var is_in_curly_block: bool = IsInCurlyBlock()
         for block: dict<any> in b:vimindent.block_stack
             if line_A.lnum <= block.startlnum
                 continue
@@ -416,8 +417,7 @@ export def Expr(lnum: number): number # {{{2
             if !block->has_key('startindent')
                 block.startindent = Indent(block.startlnum)
             endif
-            if !block.is_curly_block
-                    && !b:vimindent.block_stack[0].is_curly_block
+            if !is_in_curly_block
                 return BracketBlockIndent(line_A, block)
             endif
         endfor
@@ -520,7 +520,7 @@ enddef
 
 def g:GetVimIndent(): number # {{{2
     # for backward compatibility
-    return Expr(v:lnum)
+    return Expr()
 enddef
 # }}}1
 # Core {{{1
@@ -997,6 +997,11 @@ def IsRightBelow(lnum: number, syntax: string): bool # {{{3
         && lnum > b:vimindent.endlnum
 enddef
 
+def IsInCurlyBlock(): bool # {{{3
+    return b:vimindent.block_stack
+        ->indexof((_, block: dict<any>): bool => block.is_curly_block) >= 0
+enddef
+
 def IsInThisBlock(line_A: dict<any>, lnum: number): bool # {{{3
     var pos: list<number> = getcurpos()
     cursor(lnum, [lnum, '$']->col())
index 7d1a35c1a192f1d37d846f3a66fc8677fe584c2e..29310aabd41d31b56d0ca7f2893f111442601a27 100644 (file)
@@ -1791,8 +1791,10 @@ fun! s:NetrwOptionsRestore(vt)
 "  call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
   if !exists("{a:vt}netrw_optionsave")
 "   call Decho("case ".a:vt."netrw_optionsave : doesn't exist",'~'.expand("<slnum>"))
-"   call Decho("..doing filetype detect anyway")
-   filetype detect
+   if !isdirectory(expand('%'))
+"    call Decho("..doing filetype detect anyway")
+     filetype detect
+   endif
 "   call Decho("..settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
 "   call Decho("..ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("<slnum>"))
 "   call Dret("s:NetrwOptionsRestore : ".a:vt."netrw_optionsave doesn't exist")
@@ -1904,9 +1906,11 @@ fun! s:NetrwOptionsRestore(vt)
   " were having their filetype detect-generated settings overwritten by
   " NetrwOptionRestore.
   if &ft != "netrw"
-"   call Decho("before: filetype detect  (ft=".&ft.")",'~'.expand("<slnum>"))
-   filetype detect
-"   call Decho("after : filetype detect  (ft=".&ft.")",'~'.expand("<slnum>"))
+    if !isdirectory(expand('%'))
+"     call Decho("before: filetype detect  (ft=".&ft.")",'~'.expand("<slnum>"))
+      filetype detect
+"     call Decho("after : filetype detect  (ft=".&ft.")",'~'.expand("<slnum>"))
+    endif
   endif
 "  call Decho("(s:NetrwOptionsRestore) lines=".&lines)
 "  call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("<slnum>"))
index c2283358b8f4aeef36b4fab0f01bb02b9982e476..d1d18c5c78351ef181816a4942d22c8a9afc13eb 100644 (file)
@@ -1,4 +1,4 @@
-*builtin.txt*  For Vim version 9.0.  Last change: 2022 Oct 10
+*builtin.txt*  For Vim version 9.0.  Last change: 2022 Oct 14
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -5404,7 +5404,8 @@ listener_add({callback} [, {buf}])                        *listener_add()*
                                the change; one if unknown or the whole line
                                was affected; this is a byte index, first
                                character has a value of one.
-               When lines are inserted the values are:
+               When lines are inserted (not when a line is split, e.g. by
+               typing CR in Insert mode) the values are:
                    lnum        line above which the new line is added
                    end         equal to "lnum"
                    added       number of lines inserted
index 38c173bce2de11208cdf5c1a5c52c81827ecb98d..8cae93ab834b0e99e00a9cd4982da8d07fbca985 100644 (file)
@@ -1,4 +1,4 @@
-*indent.txt*    For Vim version 9.0.  Last change: 2022 May 21
+*indent.txt*    For Vim version 9.0.  Last change: 2022 Oct 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -982,9 +982,12 @@ indentation: >
 
 PYTHON                                                 *ft-python-indent*
 
-The amount of indent can be set for the following situations.  The examples
-given are the defaults.  Note that the dictionary values are set to an
-expression, so that you can change the value of 'shiftwidth' later.
+The amount of indent can be set with the `g:python_indent` |Dictionary|, which
+needs to be created before adding the items: >
+       let g:python_indent = {}
+The examples given are the defaults.  Note that the dictionary values are set
+to an expression, so that you can change the value of 'shiftwidth' later
+without having to update these values.
 
 Indent after an open paren: >
        let g:python_indent.open_paren = 'shiftwidth() * 2'
index 4c0d653c75efd072ed906186d8a2df33f9fddc4f..9de498b373649c5eedbf04651ceb3e17ce9e6f7a 100644 (file)
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 9.0.  Last change: 2022 Jun 11
+*index.txt*     For Vim version 9.0.  Last change: 2022 Oct 15
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 7813177c26f20e731c675448305cb564d3f49582..5cbaf6733f8877da6442d739277240bfb5b75207 100644 (file)
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 9.0.  Last change: 2022 Sep 12
+*intro.txt*     For Vim version 9.0.  Last change: 2022 Oct 12
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -122,10 +122,10 @@ http://www.vim.org/maillist.php
 Bug reports:                           *bugs* *bug-reports* *bugreport.vim*
 
 There are three ways to report bugs:
-1. Open an issue on GitHub: https://github.com/vim/vim/issues
-   The text will be forwarded to the vim-dev maillist.
-2. For issues with runtime files, look in the header for an email address or
+1. For issues with runtime files, look in the header for an email address or
    any other way to report it to the maintainer.
+2. Open an issue on GitHub: https://github.com/vim/vim/issues
+   The text will be forwarded to the vim-dev maillist.
 3. Send bug reports to: Vim Developers <vim-dev@vim.org>
    This is a maillist, you need to become a member first and many people will
    see the message.  If you don't want that, e.g. because it is a security
index 9ecb64e59aef69024bcf92325d67756e8422eff1..5beb6a283452e5d14380ff3b79cde55a2a2675a2 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 9.0.  Last change: 2022 Oct 03
+*options.txt*  For Vim version 9.0.  Last change: 2022 Oct 15
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -7534,7 +7534,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        When on, splitting a window will put the new window below the current
        one. |:split|
 
-                       *'splitkeep'* *'spk'
+                       *'splitkeep'* *'spk'*
 'splitkeep' 'spk'      string  (default "cursor")
                        global
        The value of this option determines the scroll behavior when opening,
@@ -7548,7 +7548,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        For the "screen" and "topline" values, the cursor position will be
        changed when necessary. In this case, the jumplist will be populated
        with the previous cursor position. For "screen", the text cannot always
-       be kept on the same screen line when 'wrap' is enabled.
+       be kept on the same screen line when 'wrap' is enabled.
 
                        *'splitright'* *'spr'* *'nosplitright'* *'nospr'*
 'splitright' 'spr'     boolean (default off)
index be08b4a319db0b261eb09507b9a494831600de95..1a808625f43e15c772689f99fd43a9072261db0e 100644 (file)
@@ -47,7 +47,7 @@ features you can enable/disable.
 
 Haiku uses "ncurses6" as its terminal library, therefore you need to have
 "ncurses6_devel" package installed from HaikuDepot in order to configure
-the Haiku build.  Just append "--with-tlib=ncurses6" to ./configure command
+the Haiku build.  Just append "--with-tlib=ncurses" to ./configure command.
 
 Now you should use "make" to compile Vim, then "make install" to install it.
 For seamless integration into Haiku, the GUI-less vim binary should be
@@ -56,12 +56,14 @@ additionally installed over the GUI version.  Typical build commands are:
   ./configure --prefix=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY` \
     --datarootdir=`finddir B_SYSTEM_NONPACKAGED_DATA_DIRECTORY` \
     --mandir=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`/documentation/man \
+    --with-tlib=ncurses \
   make clean
   make install
 
   ./configure --prefix=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`  \
     --datarootdir=`finddir B_SYSTEM_NONPACKAGED_DATA_DIRECTORY` \
     --mandir=`finddir B_SYSTEM_NONPACKAGED_DIRECTORY`/documentation/man \
+    --with-tlib=ncurses \
     --disable-gui
   make clean
   make install
index 59896ecfcf203664a6ff7a03b0cef3f3187a5f19..f611fd977b7b7ee36d1ef209382590e75458a787 100644 (file)
@@ -1,4 +1,4 @@
-*popup.txt*  For Vim version 9.0.  Last change: 2022 Jun 16
+*popup.txt*  For Vim version 9.0.  Last change: 2022 Oct 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -366,7 +366,6 @@ popup_findpreview()                                 *popup_findpreview()*
                Get the |window-ID| for the popup preview window.
                Return zero if there is none.
 
-
 popup_getoptions({id})                                 *popup_getoptions()*
                Return the {options} for popup {id} in a Dict.
                A zero value means the option was not set.  For "zindex" the
index fab98302fd4d683ca7777b2b64324a736152d0ff..370e1f2faecc3d1ae68dd8e1661fd87fd589b554 100644 (file)
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 9.0.  Last change: 2022 Oct 02
+*quickref.txt*  For Vim version 9.0.  Last change: 2022 Oct 15
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -785,6 +785,7 @@ Short explanation of each option:           *option-list*
 'lines'                            number of lines in the display
 'linespace'      'lsp'     number of pixel lines to use between characters
 'lisp'                     automatic indenting for Lisp
+'lispoptions'    'lop'     changes how Lisp indenting is done
 'lispwords'      'lw'      words that change how lisp indenting works
 'list'                     show <Tab> and <EOL>
 'listchars'      'lcs'     characters for displaying in list mode
index 059c6393d249bbc3601f7e76ff0e9892db89fbb3..0f79afdf4bdf942e667bff932c10831b6b6d56a0 100644 (file)
@@ -628,6 +628,11 @@ When Vim starts up, after processing your .vimrc, it scans all directories in
 directories are added to 'runtimepath'.  Then all the plugins are loaded.
 See |packload-two-steps| for how these two steps can be useful.
 
+To allow for calling into package functionality while parsing your .vimrc,
+|:colorscheme| and |autoload| will both automatically search under 'packpath'
+as well in addition to 'runtimepath'.  See the documentation for each for
+details.
+
 In the example Vim will find "pack/foo/start/foobar/plugin/foo.vim" and adds
 "~/.vim/pack/foo/start/foobar" to 'runtimepath'.
 
index 31a382b6c5b9fa5dd7e13243837d2da50e86ae55..623ac387b44667136a3a821622b0444077e9ce79 100644 (file)
@@ -1,4 +1,4 @@
-*rileft.txt*    For Vim version 9.0.  Last change: 2022 Apr 03
+*rileft.txt*    For Vim version 9.0.  Last change: 2022 Oct 12
 
 
                  VIM REFERENCE MANUAL    by Avner Lottem
index 1775af73b3143c27674964e0959322b217edc1d1..89ac893fe1c5bc5d93ac1d6a51658a880117940e 100644 (file)
@@ -1,4 +1,4 @@
-*syntax.txt*   For Vim version 9.0.  Last change: 2022 Oct 03
+*syntax.txt*   For Vim version 9.0.  Last change: 2022 Oct 14
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3021,16 +3021,25 @@ satisfied with it for my own projects.
 SED                                            *sed.vim* *ft-sed-syntax*
 
 To make tabs stand out from regular blanks (accomplished by using Todo
-highlighting on the tabs), define "highlight_sedtabs" by putting >
-
-       :let highlight_sedtabs = 1
+highlighting on the tabs), define "g:sed_highlight_tabs" by putting >
 
+       :let g:sed_highlight_tabs = 1
+<
 in the vimrc file.  (This special highlighting only applies for tabs
 inside search patterns, replacement texts, addresses or text included
 by an Append/Change/Insert command.)  If you enable this option, it is
 also a good idea to set the tab width to one character; by doing that,
 you can easily count the number of tabs in a string.
 
+GNU sed allows comments after text on the same line.  BSD sed only allows
+comments where "#" is the first character of the line.  To enforce BSD-style
+comments, i.e. mark end-of-line comments as errors, use: >
+
+       :let g:sed_dialect = "bsd"
+<
+Note that there are other differences between GNU sed and BSD sed which are
+not (yet) affected by this setting.
+
 Bugs:
 
   The transform command (y) is treated exactly like the substitute
index 639938f6f07ebfab3ea7927a18bd16cef56271c6..7c25a9aa2384306007de51a92206a89331f71e1e 100644 (file)
@@ -451,6 +451,7 @@ $quote      eval.txt        /*$quote*
 'lines'        options.txt     /*'lines'*
 'linespace'    options.txt     /*'linespace'*
 'lisp' options.txt     /*'lisp'*
+'lispoptions'  options.txt     /*'lispoptions'*
 'lispwords'    options.txt     /*'lispwords'*
 'list' options.txt     /*'list'*
 'listchars'    options.txt     /*'listchars'*
@@ -458,6 +459,7 @@ $quote      eval.txt        /*$quote*
 'lmap' options.txt     /*'lmap'*
 'lnr'  options.txt     /*'lnr'*
 'loadplugins'  options.txt     /*'loadplugins'*
+'lop'  options.txt     /*'lop'*
 'lpl'  options.txt     /*'lpl'*
 'lrm'  options.txt     /*'lrm'*
 'ls'   options.txt     /*'ls'*
@@ -954,6 +956,7 @@ $quote      eval.txt        /*$quote*
 'spelloptions' options.txt     /*'spelloptions'*
 'spellsuggest' options.txt     /*'spellsuggest'*
 'spf'  options.txt     /*'spf'*
+'spk'  options.txt     /*'spk'*
 'spl'  options.txt     /*'spl'*
 'splitbelow'   options.txt     /*'splitbelow'*
 'splitkeep'    options.txt     /*'splitkeep'*
@@ -5547,6 +5550,7 @@ TerminalWinOpen   autocmd.txt     /*TerminalWinOpen*
 TextChanged    autocmd.txt     /*TextChanged*
 TextChangedI   autocmd.txt     /*TextChangedI*
 TextChangedP   autocmd.txt     /*TextChangedP*
+TextChangedT   autocmd.txt     /*TextChangedT*
 TextYankPost   autocmd.txt     /*TextYankPost*
 Transact-SQL   ft_sql.txt      /*Transact-SQL*
 U      undo.txt        /*U*
@@ -5574,7 +5578,6 @@ VimResume autocmd.txt     /*VimResume*
 VimSuspend     autocmd.txt     /*VimSuspend*
 Vimball-copyright      pi_vimball.txt  /*Vimball-copyright*
 Virtual-Replace-mode   insert.txt      /*Virtual-Replace-mode*
-VisVim if_ole.txt      /*VisVim*
 Visual visual.txt      /*Visual*
 Visual-mode    visual.txt      /*Visual-mode*
 W      motion.txt      /*W*
@@ -9034,6 +9037,7 @@ popup_dialog()    popup.txt       /*popup_dialog()*
 popup_dialog-example   popup.txt       /*popup_dialog-example*
 popup_filter_menu()    popup.txt       /*popup_filter_menu()*
 popup_filter_yesno()   popup.txt       /*popup_filter_yesno()*
+popup_findecho()       popup.txt       /*popup_findecho()*
 popup_findinfo()       popup.txt       /*popup_findinfo()*
 popup_findpreview()    popup.txt       /*popup_findpreview()*
 popup_getoptions()     popup.txt       /*popup_getoptions()*
index 4d02558e4811fccdf8213768d582405709378362..3acc51382de6f37143972925aa30793deb216700 100644 (file)
@@ -1,4 +1,4 @@
-*terminal.txt* For Vim version 9.0.  Last change: 2022 Jun 09
+*terminal.txt* For Vim version 9.0.  Last change: 2022 Oct 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index 4aa00acaee1d4965ae4dae55ccf00188cbd58519..2ecf4af2e9102b5d388600af24aabd164d3476b8 100644 (file)
@@ -1,4 +1,4 @@
-*textprop.txt*  For Vim version 9.0.  Last change: 2022 Sep 21
+*textprop.txt*  For Vim version 9.0.  Last change: 2022 Oct 13
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -172,6 +172,9 @@ prop_add({lnum}, {col}, {props})
                                   wrap      wrap the text to the next line
                                   truncate  truncate the text to make it fit
                                When omitted "truncate" is used.
+                               Note that this applies to the individual text
+                               property, the 'wrap' option sets the overall
+                               behavior
                All fields except "type" are optional.
 
                It is an error when both "length" and "end_lnum" or "end_col"
index 0e125204c602a1d4f9bced58316cf7a0fef47934..d6562d5a9c4a2e0b9f237fe91b3ca712601051aa 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 9.0.  Last change: 2022 Oct 03
+*todo.txt*      For Vim version 9.0.  Last change: 2022 Oct 16
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -39,22 +39,12 @@ browser use: https://github.com/vim/vim/issues/1234
 -------------------- Known bugs and current work -----------------------
 
 'smoothscroll':
+- CTRL-E and gj in long line with 'scrolloff' 5 not working well yet.
 - computing 'scrolloff' position row use w_skipcol
 
-Add a string to the 'display' option ("smoothscroll" ?) to make CTRL-E and
-CTRL-Y scroll one screen line, also if this means the first line doesn't start
-with the first character (like what happens with a last line that doesn't
-fit).  Display "<<<" at the start of the first visible line (like "@@@" is
-displayed in the last line). (Arseny Nasokin,  #5154)
-Neovim PR: https://github.com/neovim/neovim/pull/11014
+Check textprop right/above/below with 'number' set and "n" in 'cpo'.
 
-Use :defer command:
-    - Use "D" flag of writefile() and mkdir() in tests.
-       (testdir/test_p*.vim done)
-
-Fix for powershell: #11257
-
-Change boolean 'splitscroll' into string 'splitkeep'. #11258
+Don't do anything for ":!". #11372
 
 
 Further Vim9 improvements, possibly after launch:
@@ -70,7 +60,8 @@ Further Vim9 improvements, possibly after launch:
 Popup windows:
 - Add a function to redraw a specific popup window.  Esp. to be used when
   editing the command line, when screen updating doesn't happen. (Shougo)
-  #10210  Probably need to update all popup windows (they may overlap)
+  #10210  Example that shows the need on the issue.
+  Probably need to update all popup windows (they may overlap)
   If the display is scrolled need to redraw everything later.
 - Add a flag to make a popup window focusable?
     CTRL-W P cycle over any preview window or focusable popup, end up back in
@@ -174,7 +165,10 @@ Terminal emulator window:
   conversions.
 
 Autoconf: must use autoconf 2.69, later version generates lots of warnings
-- try using autoconf 2.71 and fix all "obsolete" warnings
+- try using autoconf 2.71 and fix all "obsolete" warnings  #11322
+
+Problem with Visual highlight when 'linebreak' and 'showbreak' are set.
+#11272
 
 Can deref_func_name() and deref_function_name() be merged?
 
@@ -196,10 +190,17 @@ feature is supported or not.  Replaces the xterm mechanism to request each
 entry separately. #6609
 Multiplexers (screen, tmux) can request it to the underlying terminal, and
 pass it on with modifications.
+How to get all the text quickly (also over ssh)?  Can we use a side channel?
 
 Using "A" and "o" in manually created fold (in empty buffer) does not behave
 consistenly (James McCoy, #10698)
 
+In a timer callback, when using ":echo" and then input() the message is
+overwritten.  Could use ":echowin" and call redraw_cmd() in get_user_input().
+#11299
+
+Syntax include problem: #11277.  Related to Patch 8.2.2761
+
 To avoid flicker: add an option that when a screen clear is requested, instead
 of clearing it draws everything and uses "clear to end of line" for every line.
 Resetting 't_ut' already causes this?
@@ -233,11 +234,10 @@ MS-Windows: did path modifier :p:8 stop working?  #8600
 Version of getchar() that does not move the cursor - #10603 Use a separate
 argument for the new flag.
 
-Add "lastline" entry to 'fillchars' to specify a character instead of '@'.
-#10963
-
 test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows.
 
+Can we add highlighting to ":echowindow"?
+
 Information for a specific terminal (e.g. gnome, tmux, konsole, alacritty) is
 spread out.  Make a section with copy/paste examples of script and pointers to
 more information.
@@ -450,8 +450,6 @@ find them. (Max Kukartsev, #6218)
 
 Enable 'termbidi' if $VTE_VERSION >= 5703 ?
 
-Sound: support on Mac?  Or does libcanberra work there?
-
 Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509)
 
 "--cleanFOO" does not result in an error. (#5537)
@@ -601,6 +599,11 @@ negative. (see #4326)
 tab page. (Ingo Karkat, #4324)
 :call settabwinvar(1, 1, '&cmdheight', 2) also doesn't work well.
 
+When opening a file, allow for specifying the initial column position:
+    vim +12:5 file.txt   line 12 column 5
+    :edit +12:5 file.txt
+Should probably use the column as the character index.
+
 This modeline throws unexpected errors: (#4165)
     vim: syn=nosyntax
 
@@ -3074,9 +3077,6 @@ Macintosh:
     line is too short.  Add a word in 'scrollopt' to allow moving the cursor
     to longer line that is visible.  A similar thing is done for the GUI when
     using the horizontal scrollbar.
-7   VisVim can only open one file.  Hard to solve: each opened file is passed
-    with a separate invocation, would need to use timestamps to know the
-    invocations belong together.
 8   When giving a ":bwipeout" command a file-changed dialog may popup for this
     buffer, which is pointless.  (Mike Williams)
 8   On MS-Windows ":make" doesn't show output while it is working.  Use the
index 806d8f76b85ddbf855ab72d6a69803e6d82060cb..46bd0c85544cf1e3c00d6846dafd0c921e102689 100644 (file)
@@ -482,6 +482,10 @@ then define the function like this: >
           echo "Done!"
        endfunction
 
+If the file doesn't exist, Vim will also search in 'packpath' (under "start")
+to allow calling packages' functions from your .vimrc when the packages have
+not been added to 'runtimepath' yet (see |packages|).
+
 The file name and the name used before the # in the function must match
 exactly, and the defined function must have the name exactly as it will be
 called.  In Vim9 script the "g:" prefix must be used: >
index 97e1d5ce915873af13eeaefd3f8fd81fad5575e1..1d5c7e58aa672b2f2b23ce2e35fbf61d033a2077 100644 (file)
@@ -1,4 +1,4 @@
-*usr_41.txt*   For Vim version 9.0.  Last change: 2022 Jun 23
+*usr_41.txt*   For Vim version 9.0.  Last change: 2022 Oct 07
 
                     VIM USER MANUAL - by Bram Moolenaar
 
index 46f01089dc451e491b8a5d39e67a9df50aeef37c..787dd91e6a3f66cd457eb7591c719a7fdcfe5b81 100644 (file)
@@ -159,6 +159,7 @@ relative path: >
 
 This will search for the script "monthlib.vim" in the autoload directories of
 'runtimepath'.  With Unix one of the directories often is "~/.vim/autoload".
+It will also search under 'packpath', under "start".
 
 The main advantage of this is that this script can be easily shared with other
 scripts.  You do need to make sure that the script name is unique, since Vim
index 6a6c3b666bc5eb15111d0d323cb2cdbf493c1baa..6f24515d7d21f1756ce3391e80acb57b691bb3f9 100644 (file)
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 9.0.  Last change: 2022 Sep 19
+*various.txt*   For Vim version 9.0.  Last change: 2022 Oct 13
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
index d36078223f6934e6b01f05584615f07e961a35b8..eb4a5d76b5009deebf555336659584c90f1fd58b 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Sep 27
+" Last Change: 2022 Oct 12
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
index 3faeff621a2eae90a631f81ed601be9846b43760..5931cd921de0029a01219d4cbd8aa8e3432e0799 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:     Abaqus finite element input file (www.abaqus.com)
 " Maintainer:   Carl Osterwisch <costerwi@gmail.com>
-" Last Change:  2022 Aug 03
+" Last Change:  2022 Oct 08
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin") | finish | endif
@@ -66,25 +66,44 @@ if exists("loaded_matchit") && !exists("b:match_words")
 endif
 
 if !exists("no_plugin_maps") && !exists("no_abaqus_maps")
-  " Define keys used to move [count] keywords backward or forward.
-  noremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR>
-  noremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR>
+  " Map [[ and ]] keys to move [count] keywords backward or forward
+  nnoremap <silent><buffer> ]] :call <SID>Abaqus_NextKeyword(1)<CR>
+  nnoremap <silent><buffer> [[ :call <SID>Abaqus_NextKeyword(-1)<CR>
+  function! <SID>Abaqus_NextKeyword(direction)
+    .mark '
+    if a:direction < 0
+      let flags = 'b'
+    else
+      let flags = ''
+    endif
+    let l:count = abs(a:direction) * v:count1
+    while l:count > 0 && search("^\\*\\a", flags)
+      let l:count -= 1
+    endwhile
+  endfunction
 
-  " Define key to toggle commenting of the current line or range
+  " Map \\ to toggle commenting of the current line or range
   noremap <silent><buffer> <LocalLeader><LocalLeader>
       \ :call <SID>Abaqus_ToggleComment()<CR>j
   function! <SID>Abaqus_ToggleComment() range
-      if strpart(getline(a:firstline), 0, 2) == "**"
-         " Un-comment all lines in range
-         silent execute a:firstline . ',' . a:lastline . 's/^\*\*//'
-      else
-         " Comment all lines in range
-         silent execute a:firstline . ',' . a:lastline . 's/^/**/'
-      endif
+    if strpart(getline(a:firstline), 0, 2) == "**"
+      " Un-comment all lines in range
+      silent execute a:firstline . ',' . a:lastline . 's/^\*\*//'
+    else
+      " Comment all lines in range
+      silent execute a:firstline . ',' . a:lastline . 's/^/**/'
+    endif
+  endfunction
+
+  " Map \s to swap first two comma separated fields
+  noremap <silent><buffer> <LocalLeader>s :call <SID>Abaqus_Swap()<CR>
+  function! <SID>Abaqus_Swap() range
+    silent execute a:firstline . ',' . a:lastline . 's/\([^*,]*\),\([^,]*\)/\2,\1/'
   endfunction
 
   let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]"
       \ . "|unmap <buffer> <LocalLeader><LocalLeader>"
+      \ . "|unmap <buffer> <LocalLeader>s"
 endif
 
 " Undo must be done in nocompatible mode for <LocalLeader>.
index aaa61f71d92ec9536edacbc250e86728227a04cc..c28b8aecf8ae20706764cf7945354b32b8dae3f1 100644 (file)
@@ -3,7 +3,8 @@
 " Maintainer:          Doug Kearns <dougkearns@gmail.com>
 " Previous Maintainer: Max Ischenko <mfi@ukr.net>
 " Contributor:         Dorai Sitaram <ds26@gte.com>
-" Last Change:         2022 Sep 05
+"                      C.D. MacEachern <craig.daniel.maceachern@gmail.com>
+" Last Change:         2022 Oct 15
 
 if exists("b:did_ftplugin")
   finish
@@ -19,9 +20,11 @@ setlocal formatoptions-=t formatoptions+=croql
 
 let &l:define = '\<function\|\<local\%(\s\+function\)\='
 
+" TODO: handle init.lua
+setlocal includeexpr=substitute(v:fname,'\\.','/','g')
 setlocal suffixesadd=.lua
 
-let b:undo_ftplugin = "setlocal cms< com< def< fo< sua<"
+let b:undo_ftplugin = "setlocal cms< com< def< fo< inex< sua<"
 
 if exists("loaded_matchit") && !exists("b:match_words")
   let b:match_ignorecase = 0
index fc1d9e068b79ae8830c48cd17be693bc15f6b6c3..2b963f139d3cbb72a33d8fbe883143489a9bf668 100644 (file)
@@ -1,7 +1,7 @@
 " Vim filetype plugin
-" Language:            Markdown
-" Maintainer:          Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:         2019 Dec 05
+" Language:     Markdown
+" Maintainer:   Tim Pope <https://github.com/tpope/vim-markdown>
+" Last Change:  2022 Oct 13
 
 if exists("b:did_ftplugin")
   finish
@@ -9,18 +9,33 @@ endif
 
 runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
 
+let s:keepcpo= &cpo
+set cpo&vim
+
 setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=<!--%s-->
 setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
-setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:
+setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:\\&^.\\{4\\}
 
 if exists('b:undo_ftplugin')
-  let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
+  let b:undo_ftplugin .= "|setl cms< com< fo< flp< et< ts< sts< sw<"
 else
-  let b:undo_ftplugin = "setl cms< com< fo< flp<"
+  let b:undo_ftplugin = "setl cms< com< fo< flp< et< ts< sts< sw<"
+endif
+
+if get(g:, 'markdown_recommended_style', 1)
+  setlocal expandtab tabstop=4 softtabstop=4 shiftwidth=4
+endif
+
+if !exists("g:no_plugin_maps") && !exists("g:no_markdown_maps")
+  nnoremap <silent><buffer> [[ :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
+  nnoremap <silent><buffer> ]] :<C-U>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
+  xnoremap <silent><buffer> [[ :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "bsW")<CR>
+  xnoremap <silent><buffer> ]] :<C-U>exe "normal! gv"<Bar>call search('\%(^#\{1,5\}\s\+\S\\|^\S.*\n^[=-]\+$\)', "sW")<CR>
+  let b:undo_ftplugin .= '|sil! nunmap <buffer> [[|sil! nunmap <buffer> ]]|sil! xunmap <buffer> [[|sil! xunmap <buffer> ]]'
 endif
 
 function! s:NotCodeBlock(lnum) abort
-  return synIDattr(synID(v:lnum, 1, 1), 'name') !=# 'markdownCode'
+  return synIDattr(synID(a:lnum, 1, 1), 'name') !=# 'markdownCode'
 endfunction
 
 function! MarkdownFold() abort
@@ -64,11 +79,14 @@ function! MarkdownFoldText() abort
   return hash_indent.' '.title.' '.linecount
 endfunction
 
-if has("folding") && exists("g:markdown_folding")
+if has("folding") && get(g:, "markdown_folding", 0)
   setlocal foldexpr=MarkdownFold()
   setlocal foldmethod=expr
   setlocal foldtext=MarkdownFoldText()
-  let b:undo_ftplugin .= " foldexpr< foldmethod< foldtext<"
+  let b:undo_ftplugin .= "|setl foldexpr< foldmethod< foldtext<"
 endif
 
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
 " vim:set sw=2:
diff --git a/runtime/ftplugin/poefilter.vim b/runtime/ftplugin/poefilter.vim
new file mode 100644 (file)
index 0000000..92c2def
--- /dev/null
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language:    PoE item filter
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Last Change: 2022 Oct 07
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = 1
+
+setlocal comments=:# commentstring=#\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
diff --git a/runtime/ftplugin/ssa.vim b/runtime/ftplugin/ssa.vim
new file mode 100644 (file)
index 0000000..04cc7a9
--- /dev/null
@@ -0,0 +1,13 @@
+" Vim filetype plugin
+" Language:    SubStation Alpha
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Last Change: 2022 Oct 10
+
+if exists('b:did_ftplugin')
+  finish
+endif
+let b:did_ftplugin = 1
+
+setlocal comments=:;,:!: commentstring=;\ %s
+
+let b:undo_ftplugin = 'setl com< cms<'
index 87c044a9bdff4bf2dd7ec757f5ed67d7b0fb770b..55acf6fde1f89b47b4ed0e558fac17733c5c0da2 100644 (file)
@@ -869,3 +869,21 @@ echo
 })
 enddef
 " END_INDENT
+
+" START_INDENT
+echo {
+k: () => {
+if true
+echo
+popup_setoptions(id,
+{title: 'title'})
+endif
+}
+}
+" END_INDENT
+
+" START_INDENT
+if true
+elseif
+endif
+" END_INDENT
index 2326934f96dd3f0c06add993189ba2b3a81db0a0..c6ba084305d8f4cb34db9c54fb077f30c157b4fc 100644 (file)
@@ -849,7 +849,7 @@ endfor
     echo []
        + []
        + [{a: 1,
-           b: 2}]
+       b: 2}]
 }
 " END_INDENT
 
@@ -869,3 +869,21 @@ def Foo()
        })
 enddef
 " END_INDENT
+
+" START_INDENT
+echo {
+    k: () => {
+       if true
+           echo
+           popup_setoptions(id,
+               {title: 'title'})
+       endif
+    }
+}
+" END_INDENT
+
+" START_INDENT
+if true
+elseif
+endif
+" END_INDENT
index 2f59dfc8679e8c95d9d4f7e7e79e4d60ee27323f..2cb32372d60a44a2b5b937a61fe656a23992a995 100644 (file)
@@ -3,7 +3,7 @@ vim9script
 # Vim indent file
 # Language:    Vim script
 # Maintainer:  Bram Moolenaar <Bram@vim.org>
-# Last Change: 2022 Sep 27
+# Last Change: 2022 Oct 5
 
 # Only load this indent file when no other was loaded.
 if exists('b:did_indent')
@@ -15,7 +15,7 @@ b:undo_indent = 'setlocal indentkeys< indentexpr<'
 
 import autoload '../autoload/dist/vimindent.vim'
 
-setlocal indentexpr=vimindent.Expr(v:lnum)
+setlocal indentexpr=vimindent.Expr()
 setlocal indentkeys+==endif,=enddef,=endfu,=endfor,=endwh,=endtry,=},=else,=cat,=finall,=END,0\\
 execute('setlocal indentkeys+=0=\"\\\ ,0=#\\\ ')
 setlocal indentkeys-=0#
index 0649a1e768338cde2aa3ab3c754213e79797adb4..360cde5ab552bf278cf3cc32269f4414d0fee7a4 100644 (file)
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Oct 02
+" Last Change: 2022 Oct 15
 
 " If there already is an option window, jump to that one.
 let buf = bufnr('option-window')
@@ -956,6 +956,8 @@ if has("lispindent")
   call <SID>BinOptionL("lisp")
   call <SID>AddOption("lispwords", gettext("words that change how lisp indenting works"))
   call <SID>OptionL("lw")
+  call <SID>AddOption("lispoptions", gettext("options for Lisp indenting"))
+  call <SID>OptionL("lop")
 endif
 
 
index 947b16cdcad9b77717f5a73fae0426dff77429ce..9d7da7dee3c8dc7107ee2759241723d9b84f923e 100644 (file)
@@ -2,7 +2,7 @@
 " This file is normally sourced from menu.vim.
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Feb 04
+" Last Change: 2022 Oct 04
 
 " Define the SetSyn function, used for the Syntax menu entries.
 " Set 'filetype' and also 'syntax' if it is manually selected.
index 890e9ae1a7098ed9689c86bffe9d744c1d4b2d9f..50878a78ea543e793e299602c051e37f0c03a2d5 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    C
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2022 Apr 24
+" Last Change: 2022 Oct 05
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
index 17b61c2fa48cdc0559bdc4cc1c07254b531ad1ab..44187ff18ca44a788502547c973361964df02aae 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:     Markdown
-" Maintainer:   Tim Pope <vimNOSPAM@tpope.org>
+" Maintainer:   Tim Pope <https://github.com/tpope/vim-markdown>
 " Filenames:    *.markdown
-" Last Change:  2020 Jan 14
+" Last Change:  2022 Oct 13
 
 if exists("b:current_syntax")
   finish
@@ -12,6 +12,12 @@ if !exists('main_syntax')
   let main_syntax = 'markdown'
 endif
 
+if has('folding')
+  let s:foldmethod = &l:foldmethod
+  let s:foldtext = &l:foldtext
+endif
+let s:iskeyword = &l:iskeyword
+
 runtime! syntax/html.vim
 unlet! b:current_syntax
 
@@ -26,17 +32,33 @@ for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
   if s:type =~ '\.'
     let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
   endif
-  exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
+  syn case match
+  exe 'syn include @markdownHighlight_'.tr(s:type,'.','_').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
   unlet! b:current_syntax
   let s:done_include[matchstr(s:type,'[^.]*')] = 1
 endfor
 unlet! s:type
 unlet! s:done_include
 
+syn spell toplevel
+if exists('s:foldmethod') && s:foldmethod !=# &l:foldmethod
+  let &l:foldmethod = s:foldmethod
+  unlet s:foldmethod
+endif
+if exists('s:foldtext') && s:foldtext !=# &l:foldtext
+  let &l:foldtext = s:foldtext
+  unlet s:foldtext
+endif
+if s:iskeyword !=# &l:iskeyword
+  let &l:iskeyword = s:iskeyword
+endif
+unlet s:iskeyword
+
 if !exists('g:markdown_minlines')
   let g:markdown_minlines = 50
 endif
 execute 'syn sync minlines=' . g:markdown_minlines
+syn sync linebreaks=1
 syn case ignore
 
 syn match markdownValid '[<>]\c[a-z/$!]\@!' transparent contains=NONE
@@ -52,16 +74,16 @@ syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHea
 
 syn match markdownHeadingRule "^[=-]\+$" contained
 
-syn region markdownH1 matchgroup=markdownH1Delimiter start="##\@!"      end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
-syn region markdownH2 matchgroup=markdownH2Delimiter start="###\@!"     end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
-syn region markdownH3 matchgroup=markdownH3Delimiter start="####\@!"    end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
-syn region markdownH4 matchgroup=markdownH4Delimiter start="#####\@!"   end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
-syn region markdownH5 matchgroup=markdownH5Delimiter start="######\@!"  end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
-syn region markdownH6 matchgroup=markdownH6Delimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH1 matchgroup=markdownH1Delimiter start=" \{,3}#\s"      end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH2 matchgroup=markdownH2Delimiter start=" \{,3}##\s"     end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH3 matchgroup=markdownH3Delimiter start=" \{,3}###\s"    end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH4 matchgroup=markdownH4Delimiter start=" \{,3}####\s"   end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH5 matchgroup=markdownH5Delimiter start=" \{,3}#####\s"  end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
+syn region markdownH6 matchgroup=markdownH6Delimiter start=" \{,3}######\s" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
 
 syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock
 
-syn region markdownCodeBlock start="    \|\t" end="$" contained
+syn region markdownCodeBlock start="^\n\( \{4,}\|\t\)" end="^\ze \{,3}\S.*$" keepend
 
 " TODO: real nesting
 syn match markdownListMarker "\%(\t\| \{0,4\}\)[-*+]\%(\s\+\S\)\@=" contained
@@ -79,7 +101,7 @@ syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+
 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained
 syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
 
-syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\%(\_[^][]\|\[\_[^][]*\]\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
+syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^][]*\%(\[\_[^][]*\]\_[^][]*\)*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
 syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
 syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
 syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
@@ -88,31 +110,38 @@ let s:concealends = ''
 if has('conceal') && get(g:, 'markdown_syntax_conceal', 1) == 1
   let s:concealends = ' concealends'
 endif
-exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
-exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\w\@<!_\S\@=" end="\S\@<=_\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
-exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" skip="\\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
-exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\w\@<!__\S\@=" end="\S\@<=__\w\@!" skip="\\_" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
-exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
-exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\w\@<!___\S\@=" end="\S\@<=___\w\@!" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\*\S\@=" end="\S\@<=\*\|^$" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\w\@<!_\S\@=" end="\S\@<=_\w\@!\|^$" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\*\*\S\@=" end="\S\@<=\*\*\|^$" skip="\\\*" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
+exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\w\@<!__\S\@=" end="\S\@<=__\w\@!\|^$" skip="\\_" contains=markdownLineStart,markdownItalic,@Spell' . s:concealends
+exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\*\*\*\S\@=" end="\S\@<=\*\*\*\|^$" skip="\\\*" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\w\@<!___\S\@=" end="\S\@<=___\w\@!\|^$" skip="\\_" contains=markdownLineStart,@Spell' . s:concealends
+exe 'syn region markdownStrike matchgroup=markdownStrikeDelimiter start="\~\~\S\@=" end="\S\@<=\~\~\|^$" contains=markdownLineStart,@Spell' . s:concealends
 
 syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart
 syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart
-syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*````*.*$" end="^\s*````*\ze\s*$" keepend
+syn region markdownCodeBlock matchgroup=markdownCodeDelimiter start="^\s*\z(`\{3,\}\).*$" end="^\s*\z1\ze\s*$" keepend
+syn region markdownCodeBlock matchgroup=markdownCodeDelimiter start="^\s*\z(\~\{3,\}\).*$" end="^\s*\z1\ze\s*$" keepend
 
 syn match markdownFootnote "\[^[^\]]\+\]"
 syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"
 
-if main_syntax ==# 'markdown'
-  let s:done_include = {}
-  for s:type in g:markdown_fenced_languages
-    if has_key(s:done_include, matchstr(s:type,'[^.]*'))
-      continue
-    endif
-    exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*````*\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*````*\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') . s:concealends
-    let s:done_include[matchstr(s:type,'[^.]*')] = 1
-  endfor
-  unlet! s:type
-  unlet! s:done_include
+let s:done_include = {}
+for s:type in g:markdown_fenced_languages
+  if has_key(s:done_include, matchstr(s:type,'[^.]*'))
+    continue
+  endif
+  exe 'syn region markdownHighlight_'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*\z(`\{3,\}\)\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*\z1\ze\s*$" keepend contains=@markdownHighlight_'.tr(matchstr(s:type,'[^=]*$'),'.','_') . s:concealends
+  exe 'syn region markdownHighlight_'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*\z(\~\{3,\}\)\s*\%({.\{-}\.\)\='.matchstr(s:type,'[^=]*').'}\=\S\@!.*$" end="^\s*\z1\ze\s*$" keepend contains=@markdownHighlight_'.tr(matchstr(s:type,'[^=]*$'),'.','_') . s:concealends
+  let s:done_include[matchstr(s:type,'[^.]*')] = 1
+endfor
+unlet! s:type
+unlet! s:done_include
+
+if get(b:, 'markdown_yaml_head', get(g:, 'markdown_yaml_head', main_syntax ==# 'markdown'))
+  syn include @markdownYamlTop syntax/yaml.vim
+  unlet! b:current_syntax
+  syn region markdownYamlHead start="\%^---$" end="^\%(---\|\.\.\.\)\s*$" keepend contains=@markdownYamlTop,@Spell
 endif
 
 syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"
@@ -156,6 +185,8 @@ hi def link markdownBold                  htmlBold
 hi def link markdownBoldDelimiter         markdownBold
 hi def link markdownBoldItalic            htmlBoldItalic
 hi def link markdownBoldItalicDelimiter   markdownBoldItalic
+hi def link markdownStrike                htmlStrike
+hi def link markdownStrikeDelimiter       markdownStrike
 hi def link markdownCodeDelimiter         Delimiter
 
 hi def link markdownEscape                Special
diff --git a/runtime/syntax/poefilter.vim b/runtime/syntax/poefilter.vim
new file mode 100644 (file)
index 0000000..f7e9203
--- /dev/null
@@ -0,0 +1,167 @@
+" Vim syntax file
+" Language:    PoE item filter
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Filenames:   *.filter
+" Last Change: 2022 Oct 07
+
+if exists('b:current_syntax')
+    finish
+endif
+
+let s:cpo_save = &cpoptions
+set cpoptions&vim
+
+" Comment
+syn keyword poefilterTodo TODO NOTE XXX contained
+syn match poefilterCommentTag /\[[0-9A-Z\[\]]\+\]/ contained
+syn match poefilterComment /#.*$/ contains=poefilterTodo,poefilterCommentTag,@Spell
+
+" Blocks
+syn keyword poefilterBlock Show Hide
+
+" Conditions
+syn keyword poefilterCondition
+            \ AlternateQuality
+            \ AnyEnchantment
+            \ BlightedMap
+            \ Corrupted
+            \ ElderItem
+            \ ElderMap
+            \ FracturedItem
+            \ Identified
+            \ Mirrored
+            \ Replica
+            \ Scourged
+            \ ShapedMap
+            \ ShaperItem
+            \ SynthesisedItem
+            \ UberBlightedMap
+            \ skipwhite nextgroup=poefilterBoolean
+syn keyword poefilterCondition
+            \ ArchnemesisMod
+            \ BaseType
+            \ Class
+            \ EnchantmentPassiveNode
+            \ HasEnchantment
+            \ HasExplicitMod
+            \ ItemLevel
+            \ SocketGroup
+            \ Sockets
+            \ skipwhite nextgroup=poefilterOperator,poefilterString
+syn keyword poefilterCondition
+            \ AreaLevel
+            \ BaseArmour
+            \ BaseDefencePercentile
+            \ BaseEnergyShield
+            \ BaseEvasion
+            \ BaseWard
+            \ CorruptedMods
+            \ DropLevel
+            \ EnchantmentPassiveNum
+            \ GemLevel
+            \ HasEaterOfWorldsImplicit
+            \ HasSearingExarchImplicit
+            \ Height
+            \ LinkedSockets
+            \ MapTier
+            \ Quality
+            \ StackSize
+            \ Width
+            \ skipwhite nextgroup=poefilterOperator,poefilterNumber
+syn keyword poefilterCondition
+            \ GemQualityType
+            \ skipwhite nextgroup=poefilterString,poefilterQuality
+syn keyword poefilterCondition
+            \ HasInfluence
+            \ skipwhite nextgroup=poefilterString,poefilterInfluence
+syn keyword poefilterCondition
+            \ Rarity
+            \ skipwhite nextgroup=poefilterString,poefilterRarity
+
+" Actions
+syn keyword poefilterAction
+            \ PlayAlertSound
+            \ PlayAlertSoundPositional
+            \ skipwhite nextgroup=poefilterNumber,poefilterDisable
+syn keyword poefilterAction
+            \ CustomAlertSound
+            \ CustomAlertSoundOptional
+            \ skipwhite nextgroup=poefilterString
+syn keyword poefilterAction
+            \ DisableDropSound
+            \ EnableDropSound
+            \ DisableDropSoundIfAlertSound
+            \ EnableDropSoundIfAlertSound
+            \ skipwhite nextgroup=poefilterBoolean
+syn keyword poefilterAction
+            \ MinimapIcon
+            \ SetBackgroundColor
+            \ SetBorderColor
+            \ SetFontSize
+            \ SetTextColor
+            \ skipwhite nextgroup=poefilterNumber
+syn keyword poefilterAction
+            \ PlayEffect
+            \ skipwhite nextgroup=poefilterColour
+
+" Operators
+syn match poefilterOperator /!\|[<>=]=\?/ contained
+            \ skipwhite nextgroup=poefilterString,poefilterNumber,
+            \ poefilterQuality,poefilterRarity,poefilterInfluence
+
+" Arguments
+syn match poefilterString /[-a-zA-Z0-9:,']/ contained contains=@Spell
+            \ skipwhite nextgroup=poefilterString,poefilterNumber,
+            \ poefilterQuality,poefilterRarity,poefilterInfluence
+syn region poefilterString matchgroup=poefilterQuote keepend
+            \ start=/"/ end=/"/ concealends contained contains=@Spell
+            \ skipwhite nextgroup=poefilterString,poefilterNumber,
+            \ poefilterQuality,poefilterRarity,poefilterInfluence
+syn match poefilterNumber /-1\|0\|[1-9][0-9]*/ contained
+            \ skipwhite nextgroup=poefilterString,poefilterNumber,
+            \ poefilterQuality,poefilterRarity,poefilterInfluence,poefilterColour
+syn keyword poefilterBoolean True False contained
+
+" Special arguments (conditions)
+syn keyword poefilterQuality Superior Divergent Anomalous Phantasmal
+            \ contained skipwhite nextgroup=poefilterString,poefilterQuality
+syn keyword poefilterRarity Normal Magic Rare Unique
+            \ contained skipwhite nextgroup=poefilterString,poefilterRarity
+syn keyword poefilterInfluence Shaper Elder
+            \ Crusader Hunter Redeemer Warlord None
+            \ contained skipwhite nextgroup=poefilterString,poefilterInfluence
+
+" Special arguments (actions)
+syn keyword poefilterColour Red Green Blue Brown
+            \ White Yellow Cyan Grey Orange Pink Purple
+            \ contained skipwhite nextgroup=poefilterShape,poefilterTemp
+syn keyword poefilterShape Circle Diamond Hecagon Square Star Triangle
+            \ Cross Moon Raindrop Kite Pentagon UpsideDownHouse contained
+syn keyword poefilterDisable None contained
+syn keyword poefilterTemp Temp contained
+
+" Colours
+
+hi def link poefilterAction Statement
+hi def link poefilterBlock Structure
+hi def link poefilterBoolean Boolean
+hi def link poefilterColour Special
+hi def link poefilterComment Comment
+hi def link poefilterCommentTag SpecialComment
+hi def link poefilterCondition Conditional
+hi def link poefilterDisable Constant
+hi def link poefilterInfluence Special
+hi def link poefilterNumber Number
+hi def link poefilterOperator Operator
+hi def link poefilterQuality Special
+hi def link poefilterQuote Delimiter
+hi def link poefilterRarity Special
+hi def link poefilterShape Special
+hi def link poefilterString String
+hi def link poefilterTemp StorageClass
+hi def link poefilterTodo Todo
+
+let b:current_syntax = 'poefilter'
+
+let &cpoptions = s:cpo_save
+unlet s:cpo_save
index 63b39db81faef046c55243b4c563bac21317718d..d1f631df4b889c28b3c85df8becab06798d3e3f1 100644 (file)
@@ -1,30 +1,42 @@
 " Vim syntax file
-" Language:    sed
-" Maintainer:  Haakon Riiser <hakonrk@fys.uio.no>
-" URL:         http://folk.uio.no/hakonrk/vim/syntax/sed.vim
-" Last Change: 2010 May 29
+" Language:            sed
+" Maintainer:          Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
+" Contributor:         Jack Haden-Enneking
+" Last Change:         2022 Oct 15
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
-    finish
+  finish
 endif
 
+syn keyword sedTodo    contained TODO FIXME XXX
+
 syn match sedError     "\S"
 
 syn match sedWhitespace "\s\+" contained
 syn match sedSemicolon ";"
 syn match sedAddress   "[[:digit:]$]"
 syn match sedAddress   "\d\+\~\d\+"
-syn region sedAddress   matchgroup=Special start="[{,;]\s*/\(\\/\)\="lc=1 skip="[^\\]\(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
-syn region sedAddress   matchgroup=Special start="^\s*/\(\\/\)\=" skip="[^\\]\(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
-syn match sedComment   "^\s*#.*$"
-syn match sedFunction  "[dDgGhHlnNpPqQx=]\s*\($\|;\)" contains=sedSemicolon,sedWhitespace
+syn region sedAddress  matchgroup=Special start="[{,;]\s*/\%(\\/\)\="lc=1 skip="[^\\]\%(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
+syn region sedAddress  matchgroup=Special start="^\s*/\%(\\/\)\=" skip="[^\\]\%(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
+syn match sedFunction  "[dDgGhHlnNpPqQx=]\s*\%($\|;\)" contains=sedSemicolon,sedWhitespace
+if exists("g:sed_dialect") && g:sed_dialect ==? "bsd"
+  syn match sedComment "^\s*#.*$" contains=sedTodo
+else
+  syn match sedFunction        "[dDgGhHlnNpPqQx=]\s*\ze#" contains=sedSemicolon,sedWhitespace
+  syn match sedComment "#.*$" contains=sedTodo
+endif
 syn match sedLabel     ":[^;]*"
-syn match sedLineCont  "^\(\\\\\)*\\$" contained
-syn match sedLineCont  "[^\\]\(\\\\\)*\\$"ms=e contained
+syn match sedLineCont  "^\%(\\\\\)*\\$" contained
+syn match sedLineCont  "[^\\]\%(\\\\\)*\\$"ms=e contained
 syn match sedSpecial   "[{},!]"
-if exists("highlight_sedtabs")
-    syn match sedTab   "\t" contained
+
+" continue to silently support the old name
+let s:highlight_tabs = v:false
+if exists("g:highlight_sedtabs") || get(g:, "sed_highlight_tabs", 0)
+  let s:highlight_tabs = v:true
+  syn match sedTab     "\t" contained
 endif
 
 " Append/Change/Insert
@@ -34,39 +46,39 @@ syn region sedBranch        matchgroup=sedFunction start="[bt]" matchgroup=sedSemicolon
 syn region sedRW       matchgroup=sedFunction start="[rw]" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace
 
 " Substitution/transform with various delimiters
-syn region sedFlagwrite            matchgroup=sedFlag start="w" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace contained
-syn match sedFlag          "[[:digit:]gpI]*w\=" contains=sedFlagwrite contained
+syn region sedFlagWrite            matchgroup=sedFlag start="w" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace contained
+syn match sedFlag          "[[:digit:]gpI]*w\=" contains=sedFlagWrite contained
 syn match sedRegexpMeta            "[.*^$]" contained
 syn match sedRegexpMeta            "\\." contains=sedTab contained
 syn match sedRegexpMeta            "\[.\{-}\]" contains=sedTab contained
 syn match sedRegexpMeta            "\\{\d\*,\d*\\}" contained
-syn match sedRegexpMeta            "\\(.\{-}\\)" contains=sedTab contained
-syn match sedReplaceMeta    "&\|\\\($\|.\)" contains=sedTab contained
+syn match sedRegexpMeta            "\\%(.\{-}\\)" contains=sedTab contained
+syn match sedReplaceMeta    "&\|\\\%($\|.\)" contains=sedTab contained
 
 " Metacharacters: $ * . \ ^ [ ~
 " @ is used as delimiter and treated on its own below
-let __at = char2nr("@")
-let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64
+let s:at = char2nr("@")
+let s:i = char2nr(" ") " ASCII: 32, EBCDIC: 64
 if has("ebcdic")
-    let __sed_last = 255
+  let s:last = 255
 else
-    let __sed_last = 126
+  let s:last = 126
 endif
-let __sed_metacharacters = '$*.\^[~'
-while __sed_i <= __sed_last
-    let __sed_delimiter = escape(nr2char(__sed_i), __sed_metacharacters)
-       if __sed_i != __at
-           exe 'syn region sedAddress matchgroup=Special start=@\\'.__sed_delimiter.'\(\\'.__sed_delimiter.'\)\=@ skip=@[^\\]\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'I\=@ contains=sedTab'
-           exe 'syn region sedRegexp'.__sed_i  'matchgroup=Special start=@'.__sed_delimiter.'\(\\\\\|\\'.__sed_delimiter.'\)*@ skip=@[^\\'.__sed_delimiter.']\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'@me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement'.__sed_i
-           exe 'syn region sedReplacement'.__sed_i 'matchgroup=Special start=@'.__sed_delimiter.'\(\\\\\|\\'.__sed_delimiter.'\)*@ skip=@[^\\'.__sed_delimiter.']\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'@ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag'
-       endif
-    let __sed_i = __sed_i + 1
+let s:metacharacters = '$*.\^[~'
+while s:i <= s:last
+  let s:delimiter = escape(nr2char(s:i), s:metacharacters)
+  if s:i != s:at
+    exe 'syn region sedAddress matchgroup=Special start=@\\'.s:delimiter.'\%(\\'.s:delimiter.'\)\=@ skip=@[^\\]\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'[IM]\=@ contains=sedTab'
+    exe 'syn region sedRegexp'.s:i  'matchgroup=Special start=@'.s:delimiter.'\%(\\\\\|\\'.s:delimiter.'\)*@ skip=@[^\\'.s:delimiter.']\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'@me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement'.s:i
+    exe 'syn region sedReplacement'.s:i 'matchgroup=Special start=@'.s:delimiter.'\%(\\\\\|\\'.s:delimiter.'\)*@ skip=@[^\\'.s:delimiter.']\%(\\\\\)*\\'.s:delimiter.'@ end=@'.s:delimiter.'@ contains=sedTab,sedReplaceMeta keepend contained nextgroup=@sedFlags'
+  endif
+  let s:i = s:i + 1
 endwhile
-syn region sedAddress matchgroup=Special start=+\\@\(\\@\)\=+ skip=+[^\\]\(\\\\\)*\\@+ end=+@I\=+ contains=sedTab,sedRegexpMeta
-syn region sedRegexp64 matchgroup=Special start=+@\(\\\\\|\\@\)*+ skip=+[^\\@]\(\\\\\)*\\@+ end=+@+me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement64
-syn region sedReplacement64 matchgroup=Special start=+@\(\\\\\|\\@\)*+ skip=+[^\\@]\(\\\\\)*\\@+ end=+@+ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag
+syn region sedAddress matchgroup=Special start=+\\@\%(\\@\)\=+ skip=+[^\\]\%(\\\\\)*\\@+ end=+@I\=+ contains=sedTab,sedRegexpMeta
+syn region sedRegexp64 matchgroup=Special start=+@\%(\\\\\|\\@\)*+ skip=+[^\\@]\%(\\\\\)*\\@+ end=+@+me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement64
+syn region sedReplacement64 matchgroup=Special start=+@\%(\\\\\|\\@\)*+ skip=+[^\\@]\%(\\\\\)*\\@+ end=+@+ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag
 
-" Since the syntax for the substituion command is very similar to the
+" Since the syntax for the substitution command is very similar to the
 " syntax for the transform command, I use the same pattern matching
 " for both commands.  There is one problem -- the transform command
 " (y) does not allow any flags.  To save memory, I ignore this problem.
@@ -80,7 +92,7 @@ hi def link sedComment                Comment
 hi def link sedDelete          Function
 hi def link sedError           Error
 hi def link sedFlag            Type
-hi def link sedFlagwrite               Constant
+hi def link sedFlagWrite       Constant
 hi def link sedFunction                Function
 hi def link sedLabel           Label
 hi def link sedLineCont                Special
@@ -88,23 +100,24 @@ hi def link sedPutHoldspc  Function
 hi def link sedReplaceMeta     Special
 hi def link sedRegexpMeta      Special
 hi def link sedRW              Constant
-hi def link sedSemicolon               Special
+hi def link sedSemicolon       Special
 hi def link sedST              Function
 hi def link sedSpecial         Special
+hi def link sedTodo            Todo
 hi def link sedWhitespace      NONE
-if exists("highlight_sedtabs")
-hi def link sedTab             Todo
+if s:highlight_tabs
+  hi def link sedTab           Todo
 endif
-let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64
-while __sed_i <= __sed_last
-exe "hi def link sedRegexp".__sed_i            "Macro"
-exe "hi def link sedReplacement".__sed_i       "NONE"
-let __sed_i = __sed_i + 1
+let s:i = char2nr(" ") " ASCII: 32, EBCDIC: 64
+while s:i <= s:last
+  exe "hi def link sedRegexp".s:i      "Macro"
+  exe "hi def link sedReplacement".s:i "NONE"
+  let s:i = s:i + 1
 endwhile
 
-
-unlet __sed_i __sed_last __sed_delimiter __sed_metacharacters
+unlet s:i s:last s:delimiter s:metacharacters s:at
+unlet s:highlight_tabs
 
 let b:current_syntax = "sed"
 
-" vim: sts=4 sw=4 ts=8
+" vim: nowrap sw=2 sts=2 ts=8 noet:
diff --git a/runtime/syntax/ssa.vim b/runtime/syntax/ssa.vim
new file mode 100644 (file)
index 0000000..a5dbf37
--- /dev/null
@@ -0,0 +1,63 @@
+" Vim syntax file
+" Language:    SubStation Alpha
+" Maintainer:  ObserverOfTime <chronobserver@disroot.org>
+" Filenames:   *.ass,*.ssa
+" Last Change: 2022 Oct 10
+
+if exists('b:current_syntax')
+    finish
+endif
+
+" Comments
+syn keyword ssaTodo TODO FIXME NOTE XXX contained
+syn match ssaComment /^\(;\|!:\).*$/ contains=ssaTodo,@Spell
+syn match ssaTextComment /{[^}]*}/ contained contains=@Spell
+
+" Sections
+syn match ssaSection /^\[[a-zA-Z0-9+ ]\+\]$/
+
+" Headers
+syn match ssaHeader /^[^;!:]\+:/ skipwhite nextgroup=ssaField
+
+" Fields
+syn match ssaField /[^,]*/ contained skipwhite nextgroup=ssaDelimiter
+
+" Time
+syn match ssaTime /\d:\d\d:\d\d\.\d\d/ contained skipwhite nextgroup=ssaDelimiter
+
+" Delimiter
+syn match ssaDelimiter /,/ contained skipwhite nextgroup=ssaField,ssaTime,ssaText
+
+" Text
+syn match ssaText /\(^Dialogue:\(.*,\)\{9}\)\@<=.*$/ contained contains=@ssaTags,@Spell
+syn cluster ssaTags contains=ssaOverrideTag,ssaEscapeChar,ssaTextComment,ssaItalics,ssaBold,ssaUnderline,ssaStrikeout
+
+" Override tags
+syn match ssaOverrideTag /{\\[^}]\+}/ contained contains=@NoSpell
+
+" Special characters
+syn match ssaEscapeChar /\\[nNh{}]/ contained contains=@NoSpell
+
+" Markup
+syn region ssaItalics start=/{\\i1}/ end=/{\\i0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+syn region ssaBold start=/{\\b1}/ end=/{\\b0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+syn region ssaUnderline start=/{\\u1}/ end=/{\\u0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+syn region ssaStrikeout start=/{\\s1}/ end=/{\\s0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
+
+hi def link ssaDelimiter Delimiter
+hi def link ssaComment Comment
+hi def link ssaEscapeChar SpecialChar
+hi def link ssaField String
+hi def link ssaHeader Label
+hi def link ssaSection StorageClass
+hi def link ssaOverrideTag Special
+hi def link ssaTextComment Comment
+hi def link ssaTime Number
+hi def link ssaTodo Todo
+
+hi ssaBold cterm=bold gui=bold
+hi ssaItalics cterm=italic gui=italic
+hi ssaStrikeout cterm=strikethrough gui=strikethrough
+hi ssaUnderline cterm=underline gui=underline
+
+let b:current_syntax = 'srt'
index 7619fbc49c471ec717d0a3a50d125c3b0c8f79de..ed9397c02b8683fb0081ef084c62297ee9fa56b3 100644 (file)
@@ -91,7 +91,7 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar,
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                  Lección 1.4: EDITAR TEXTO - BORRAR
+                  Lección 1.4: EDITAR TEXTO - INSERTAR
 
          ** Pulse  i  para insertar texto. **
 
@@ -248,9 +248,12 @@ Ahora contin
   Una lista resumida de movimientos:
    w - hasta el comienzo de la siguiente palabra, EXCLUYENDO su primer
        carácter.
-   e - hasta el final de la palabra actual, INCLUYENDO su primer carácter.
+   e - hasta el final de la palabra actual, INCLUYENDO el último carácter.
    $ - hasta el final de la línea, INCLUYENDO el último carácter.
 
+ Por tanto, al escribir  de  borrará desde la posición del cursor, hasta
+ el final de la palabra.
+
 NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un
       operador, moverá el cursor como se especifica en la lista anterior.
 
@@ -262,7 +265,7 @@ NOTA: Pulsando 
 
   1. Mueva el cursor al comienzo de la línea marcada con --->.
 
-  2. Escriba 2w  para mover el cursor dos palabras hacia adelante.
+  2. Escriba  2w  para mover el cursor dos palabras hacia adelante.
 
   3. Escriba  3e  para mover el cursor al final de la tercera palabra hacia
      adelante.
@@ -271,7 +274,7 @@ NOTA: Pulsando 
 
   5. Repita el paso 2 y 3 con diferentes números.
 
----> Esto es solo una línea con palabra donde poder moverse.
+---> Esto es solo una línea con palabras donde poder moverse.
 
   6. Pase a la lección 2.5.
 
@@ -288,15 +291,15 @@ NOTA: Pulsando 
   anteriormente, añada un contador antes del movimiento para eliminar más:
         d   número   movimiento
 
-  1. Mueva el cursos a la primera palabra en MAYÚSCULAS en la línea
-     marcada con --->.
+  1. Mueva el cursor al inicio de la primera palabra en MAYÚSCULAS en la
+     línea marcada con --->.
 
   2. Escriba  d2w  para eliminar las dos palabras en MAYÚSCULAS.
 
   3. Repita los pasos 1 y 2 con diferentes contadores para eliminar
      las siguientes palabras en MAYÚSCULAS con un comando.
 
---->  esta ABC DE serie FGHI JK LMN OP de palabras ha sido Q RS TUV limpiada.
+--->  Esta ABC DE serie FGHI JK LMN OP de palabras ha sido Q RS TUV limpiada.
 
 
 
@@ -319,7 +322,7 @@ NOTA: Pulsando 
 
 --->  1)  Las rosas son rojas,
 --->  2)  El barro es divertido,
---->  3)  Las violetas son azules,
+--->  3)  La violeta es azul,
 --->  4)  Tengo un coche,
 --->  5)  Los relojes dan la hora,
 --->  6)  El azúcar es dulce
@@ -362,7 +365,7 @@ mencionados anteriormente.
   3. Para borrar desde el cursor hasta el final de una línea pulse:     d$
   4. Para borrar una línea entera pulse:                             dd
 
-  5. Para repetir un movimiento precédalo con un número:  2w
+  5. Para repetir un movimiento anteponga un número:  2w
   6. El formato para un comando de cambio es:
                operador  [número]  movimiento
      donde:
@@ -394,7 +397,7 @@ mencionados anteriormente.
   5. Repita los pasos 2 a 4 para poner todas las líneas en el orden correcto.
 
 ---> d) ¿Puedes aprenderla tú?
----> b) Las violetas son azules,
+---> b) La violeta es azul,
 ---> c) La inteligencia se aprende,
 ---> a) Las rosas son rojas,
      
@@ -426,7 +429,7 @@ NOTA: Recuerde que deber
                        Lección 3.3: EL COMANDO CAMBIAR
 
 
-     ** Para cambiar hasta el final de una línea, escriba  ce . **
+     ** Para cambiar hasta el final de una palabra, escriba  ce . **
 
   1. Mueva el cursor a la primera línea inferior marcada con --->.
 
@@ -477,7 +480,7 @@ NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe.
      escriba  p . Esto pega el texto después del cursor (si se borró una
      línea, al pegarla, esta se situará en la línea debajo del cursor).
 
-  2. Para sustituir el carácter bajo el cursor, pulse  r   y luego el
+  2. Para reemplazar el carácter bajo el cursor, pulse r   y luego el
      carácter que quiere que esté en ese lugar.
 
   3. El operador change le permite cambiar desde la posición del cursor
@@ -585,11 +588,11 @@ NOTA: 
 ---> Laas mejores épocas para ver laas flores son laas primaveras.
 
   4. Para cambiar cada ocurrencia de la cadena de caracteres entre dos líneas,
-     Pulse  :#,#s/viejo/nuevo/g  donde #,# son los números de línea del rango
+   Escriba  :#,#s/viejo/nuevo/g  donde #,# son los números de línea del rango
                                  de líneas donde se realizará la sustitución.
-     Pulse  :%s/old/new/g        para cambiar cada ocurrencia en todo el
+   Escriba  :%s/old/new/g        para cambiar cada ocurrencia en todo el
                                  archivo.
-     Pulse  :%s/old/new/gc       para encontrar cada ocurrencia en todo el 
+   Escriba  :%s/old/new/gc       para encontrar cada ocurrencia en todo el 
                                  archivo, pidiendo confirmación para 
                                  realizar la sustitución o no.
 
@@ -602,19 +605,19 @@ NOTA: 
      número  G  mueve el cursor a ese número de línea.
             gg  mueve el cursor a la primera línea del archivo.
 
-  2. Pulsando  /  seguido de una frase busca la frase hacia ADELANTE.
-     Pulsando  ?  seguido de una frase busca la frase hacia ATRÁS.
+  2. Escribiendo  /  seguido de una frase busca la frase hacia ADELANTE.
+     Escribiendo  ?  seguido de una frase busca la frase hacia ATRÁS.
      Después de una búsqueda pulse  n  para encontrar la aparición
      siguiente en la misma dirección o  N  para buscar en dirección opuesta.
 
   3. Pulsando  %  cuando el cursor esta sobre (,), [,], { o } localiza
      la pareja correspondiente.
 
-  4. Para cambiar viejo en el primer nuevo en una línea pulse  :s/viejo/nuevo
-     Para cambiar todos los viejo por nuevo en una línea pulse :s/viejo/nuevo/g
-     Para cambiar frases entre dos números de líneas pulse  :#,#s/viejo/nuevo/g
-     Para cambiar viejo por nuevo en todo el fichero pulse  :%s/viejo/nuevo/g
-     Para pedir confirmación en cada caso añada  'c'       :%s/viejo/nuevo/gc
+  4. Para cambiar viejo en el primer nuevo en una línea escriba  :s/viejo/nuevo
+   Para cambiar todos los viejo por nuevo en una línea escriba :s/viejo/nuevo/g
+   Para cambiar frases entre dos números de líneas escriba  :#,#s/viejo/nuevo/g
+   Para cambiar viejo por nuevo en todo el fichero escriba  :%s/viejo/nuevo/g
+   Para pedir confirmación en cada caso añada  'c'         :%s/viejo/nuevo/gc
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -631,7 +634,7 @@ NOTA: 
 
   3. Como ejemplo escriba   ls  después del ! y luego pulse <INTRO>. Esto
      le mostrará una lista de su directorio, igual que si estuviera en el
-     símbolo del sistema. Si  ls  no funciona utilice  !:dir   .
+     símbolo del sistema. Si  ls  no funciona utilice  :!dir   .
 
 NOTA: De esta manera es posible ejecutar cualquier comando externo,
       también incluyendo argumentos.
@@ -680,7 +683,7 @@ NOTA: Si saliera de Vim y volviera a entrar de nuevo con  vim TEST  , el
      :'<,'>
 
   4. Pulse  w TEST  , donde TEST es un nombre de archivo que aún no existe.
-     Verifique que  :'<,'>w TEST  antes de pulsar <INTRO>.
+     Verifique que ve  :'<,'>w TEST  antes de pulsar <INTRO>.
 
   5. Vim escribirá las líneas seleccionadas en el archivo TEST. Utilice
      :!dir  o  :!ls  para verlo. ¡No lo elimine todavía! Lo utilizaremos
@@ -759,7 +762,7 @@ NOTA: Tambi
 ---> Después de pulsar  o  el cursor se sitúa en la línea abierta en modo Insertar.
 
   4. Para abrir una línea por ENCIMA del cursor, simplemente pulse una O
-     mayúscula, en lugar de una o minúscula. Pruebe este en la línea siguiente.
+     mayúscula, en lugar de una o minúscula. Pruebe esto en la línea siguiente.
 
 ---> Abra una línea sobre esta pulsando O cuando el cursor está en esta línea.
 
@@ -893,7 +896,7 @@ NOTA:  Si quiere ignorar las may
        'hls' 'hlsearch'        resalta todas las coincidencias de la frases
      Puedes utilizar tanto los nombre largos o cortos de las opciones.
 
-  7. Añade "no" para inhabilitar una opción:   :set noic
+  7. Añada "no" para inhabilitar una opción:   :set noic
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  Lección 7: OBTENER AYUDA
index a04d453f764961a1e6a40d48b8b1eea29c4c3f01..d6187ff8dd36a92380571f8c4d9f6fc2cfe41a2c 100644 (file)
@@ -91,7 +91,7 @@ NOTA: A medida que vaya avanzando en este tutor no intente memorizar,
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-                  Lección 1.4: EDITAR TEXTO - BORRAR
+                  Lección 1.4: EDITAR TEXTO - INSERTAR
 
          ** Pulse  i  para insertar texto. **
 
@@ -248,9 +248,12 @@ Ahora continúe con la Lección 2.
   Una lista resumida de movimientos:
    w - hasta el comienzo de la siguiente palabra, EXCLUYENDO su primer
        carácter.
-   e - hasta el final de la palabra actual, INCLUYENDO su primer carácter.
+   e - hasta el final de la palabra actual, INCLUYENDO el último carácter.
    $ - hasta el final de la línea, INCLUYENDO el último carácter.
 
+ Por tanto, al escribir  de  borrará desde la posición del cursor, hasta
+ el final de la palabra.
+
 NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un
       operador, moverá el cursor como se especifica en la lista anterior.
 
@@ -262,7 +265,7 @@ NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un
 
   1. Mueva el cursor al comienzo de la línea marcada con --->.
 
-  2. Escriba 2w  para mover el cursor dos palabras hacia adelante.
+  2. Escriba  2w  para mover el cursor dos palabras hacia adelante.
 
   3. Escriba  3e  para mover el cursor al final de la tercera palabra hacia
      adelante.
@@ -271,7 +274,7 @@ NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un
 
   5. Repita el paso 2 y 3 con diferentes números.
 
----> Esto es solo una línea con palabra donde poder moverse.
+---> Esto es solo una línea con palabras donde poder moverse.
 
   6. Pase a la lección 2.5.
 
@@ -288,15 +291,15 @@ NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un
   anteriormente, añada un contador antes del movimiento para eliminar más:
         d   número   movimiento
 
-  1. Mueva el cursos a la primera palabra en MAYÚSCULAS en la línea
-     marcada con --->.
+  1. Mueva el cursor al inicio de la primera palabra en MAYÚSCULAS en la
+     línea marcada con --->.
 
   2. Escriba  d2w  para eliminar las dos palabras en MAYÚSCULAS.
 
   3. Repita los pasos 1 y 2 con diferentes contadores para eliminar
      las siguientes palabras en MAYÚSCULAS con un comando.
 
---->  esta ABC DE serie FGHI JK LMN OP de palabras ha sido Q RS TUV limpiada.
+--->  Esta ABC DE serie FGHI JK LMN OP de palabras ha sido Q RS TUV limpiada.
 
 
 
@@ -319,7 +322,7 @@ NOTA: Pulsando únicamente el movimiento estando en el modo Normal sin un
 
 --->  1)  Las rosas son rojas,
 --->  2)  El barro es divertido,
---->  3)  Las violetas son azules,
+--->  3)  La violeta es azul,
 --->  4)  Tengo un coche,
 --->  5)  Los relojes dan la hora,
 --->  6)  El azúcar es dulce
@@ -362,7 +365,7 @@ mencionados anteriormente.
   3. Para borrar desde el cursor hasta el final de una línea pulse:    d$
   4. Para borrar una línea entera pulse:                             dd
 
-  5. Para repetir un movimiento precédalo con un número:  2w
+  5. Para repetir un movimiento anteponga un número:  2w
   6. El formato para un comando de cambio es:
                operador  [número]  movimiento
      donde:
@@ -394,7 +397,7 @@ mencionados anteriormente.
   5. Repita los pasos 2 a 4 para poner todas las líneas en el orden correcto.
 
 ---> d) ¿Puedes aprenderla tú?
----> b) Las violetas son azules,
+---> b) La violeta es azul,
 ---> c) La inteligencia se aprende,
 ---> a) Las rosas son rojas,
      
@@ -426,7 +429,7 @@ NOTA: Recuerde que debería aprender practicando.
                        Lección 3.3: EL COMANDO CAMBIAR
 
 
-     ** Para cambiar hasta el final de una línea, escriba  ce . **
+     ** Para cambiar hasta el final de una palabra, escriba  ce . **
 
   1. Mueva el cursor a la primera línea inferior marcada con --->.
 
@@ -477,7 +480,7 @@ NOTA: Puede utilizar el retorno de carro para corregir errores mientras escribe.
      escriba  p . Esto pega el texto después del cursor (si se borró una
      línea, al pegarla, esta se situará en la línea debajo del cursor).
 
-  2. Para sustituir el carácter bajo el cursor, pulse r   y luego el
+  2. Para reemplazar el carácter bajo el cursor, pulse        r   y luego el
      carácter que quiere que esté en ese lugar.
 
   3. El operador change le permite cambiar desde la posición del cursor
@@ -585,11 +588,11 @@ NOTA: ¡Esto es muy útil en la detección de errores en un programa con
 ---> Laas mejores épocas para ver laas flores son laas primaveras.
 
   4. Para cambiar cada ocurrencia de la cadena de caracteres entre dos líneas,
-     Pulse  :#,#s/viejo/nuevo/g  donde #,# son los números de línea del rango
+   Escriba  :#,#s/viejo/nuevo/g  donde #,# son los números de línea del rango
                                  de líneas donde se realizará la sustitución.
-     Pulse  :%s/old/new/g        para cambiar cada ocurrencia en todo el
+   Escriba  :%s/old/new/g        para cambiar cada ocurrencia en todo el
                                  archivo.
-     Pulse  :%s/old/new/gc       para encontrar cada ocurrencia en todo el 
+   Escriba  :%s/old/new/gc       para encontrar cada ocurrencia en todo el 
                                  archivo, pidiendo confirmación para 
                                  realizar la sustitución o no.
 
@@ -602,19 +605,19 @@ NOTA: ¡Esto es muy útil en la detección de errores en un programa con
      número  G  mueve el cursor a ese número de línea.
             gg  mueve el cursor a la primera línea del archivo.
 
-  2. Pulsando  /  seguido de una frase busca la frase hacia ADELANTE.
-     Pulsando  ?  seguido de una frase busca la frase hacia ATRÁS.
+  2. Escribiendo  /  seguido de una frase busca la frase hacia ADELANTE.
+     Escribiendo  ?  seguido de una frase busca la frase hacia ATRÁS.
      Después de una búsqueda pulse  n  para encontrar la aparición
      siguiente en la misma dirección o  N  para buscar en dirección opuesta.
 
   3. Pulsando  %  cuando el cursor esta sobre (,), [,], { o } localiza
      la pareja correspondiente.
 
-  4. Para cambiar viejo en el primer nuevo en una línea pulse  :s/viejo/nuevo
-     Para cambiar todos los viejo por nuevo en una línea pulse :s/viejo/nuevo/g
-     Para cambiar frases entre dos números de líneas pulse  :#,#s/viejo/nuevo/g
-     Para cambiar viejo por nuevo en todo el fichero pulse  :%s/viejo/nuevo/g
-     Para pedir confirmación en cada caso añada  'c'     :%s/viejo/nuevo/gc
+  4. Para cambiar viejo en el primer nuevo en una línea escriba  :s/viejo/nuevo
+   Para cambiar todos los viejo por nuevo en una línea escriba :s/viejo/nuevo/g
+   Para cambiar frases entre dos números de líneas escriba  :#,#s/viejo/nuevo/g
+   Para cambiar viejo por nuevo en todo el fichero escriba  :%s/viejo/nuevo/g
+   Para pedir confirmación en cada caso añada  'c'       :%s/viejo/nuevo/gc
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -631,7 +634,7 @@ NOTA: ¡Esto es muy útil en la detección de errores en un programa con
 
   3. Como ejemplo escriba   ls  después del ! y luego pulse <INTRO>. Esto
      le mostrará una lista de su directorio, igual que si estuviera en el
-     símbolo del sistema. Si  ls  no funciona utilice !:dir   .
+     símbolo del sistema. Si  ls  no funciona utilice :!dir   .
 
 NOTA: De esta manera es posible ejecutar cualquier comando externo,
       también incluyendo argumentos.
@@ -680,7 +683,7 @@ NOTA: Si saliera de Vim y volviera a entrar de nuevo con  vim TEST  , el
      :'<,'>
 
   4. Pulse  w TEST  , donde TEST es un nombre de archivo que aún no existe.
-     Verifique que  :'<,'>w TEST  antes de pulsar <INTRO>.
+     Verifique que ve  :'<,'>w TEST  antes de pulsar <INTRO>.
 
   5. Vim escribirá las líneas seleccionadas en el archivo TEST. Utilice
      :!dir  o  :!ls  para verlo. ¡No lo elimine todavía! Lo utilizaremos
@@ -759,7 +762,7 @@ NOTA: También puede leer la salida de un comando externo. Por ejemplo,
 ---> Después de pulsar  o  el cursor se sitúa en la línea abierta en modo Insertar.
 
   4. Para abrir una línea por ENCIMA del cursor, simplemente pulse una O
-     mayúscula, en lugar de una o minúscula. Pruebe este en la línea siguiente.
+     mayúscula, en lugar de una o minúscula. Pruebe esto en la línea siguiente.
 
 ---> Abra una línea sobre esta pulsando O cuando el cursor está en esta línea.
 
@@ -893,7 +896,7 @@ NOTA:  Si quiere ignorar las mayúsculas y minúsculas, solo para un comando
        'hls' 'hlsearch'        resalta todas las coincidencias de la frases
      Puedes utilizar tanto los nombre largos o cortos de las opciones.
 
-  7. Añade "no" para inhabilitar una opción:   :set noic
+  7. Añada "no" para inhabilitar una opción:   :set noic
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  Lección 7: OBTENER AYUDA