diff options
-rw-r--r-- | .github/CODEOWNERS | 4 | ||||
-rw-r--r-- | runtime/autoload/zig/fmt.vim | 100 | ||||
-rw-r--r-- | runtime/doc/eval.txt | 9 | ||||
-rw-r--r-- | runtime/doc/options.txt | 82 | ||||
-rw-r--r-- | runtime/doc/quickfix.txt | 15 | ||||
-rw-r--r-- | runtime/doc/tags | 48 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 10 | ||||
-rw-r--r-- | runtime/doc/vim9.txt | 6 | ||||
-rw-r--r-- | runtime/doc/vim9class.txt | 45 | ||||
-rw-r--r-- | runtime/ftplugin/readline.vim | 25 | ||||
-rw-r--r-- | runtime/syntax/fstab.vim | 279 |
11 files changed, 526 insertions, 97 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fdb67ccf17..d0d9ce5c13 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -51,6 +51,7 @@ runtime/compiler/dartanalyser.vim @dkearns runtime/compiler/dartdevc.vim @dkearns runtime/compiler/dartdoc.vim @dkearns runtime/compiler/dartfmt.vim @dkearns +runtime/compiler/dotnet.vim @nickspoons runtime/compiler/eruby.vim @dkearns runtime/compiler/fbc.vim @dkearns runtime/compiler/gawk.vim @dkearns @@ -181,6 +182,7 @@ runtime/ftplugin/python.vim @tpict runtime/ftplugin/qb64.vim @dkearns runtime/ftplugin/r.vim @jalvesaq runtime/ftplugin/racket.vim @benknoble +runtime/ftplugin/readline.vim @dkearns runtime/ftplugin/rhelp.vim @jalvesaq runtime/ftplugin/rmd.vim @jalvesaq runtime/ftplugin/rnoweb.vim @jalvesaq @@ -394,6 +396,7 @@ runtime/syntax/n1ql.vim @pr3d4t0r runtime/syntax/netrw.vim @cecamp runtime/syntax/nginx.vim @chr4 runtime/syntax/ninja.vim @nico +runtime/syntax/nix.vim @equill runtime/syntax/nroff.vim @jmarshall runtime/syntax/nsis.vim @k-takata runtime/syntax/openvpn.vim @ObserverOfTime @@ -464,6 +467,7 @@ runtime/syntax/vdf.vim @ObserverOfTime runtime/syntax/vim.vim @cecamp runtime/syntax/vroom.vim @dbarnett runtime/syntax/wast.vim @rhysd +runtime/syntax/wdl.vim @zenmatic runtime/syntax/wget.vim @dkearns runtime/syntax/wget2.vim @dkearns runtime/syntax/xbl.vim @dkearns diff --git a/runtime/autoload/zig/fmt.vim b/runtime/autoload/zig/fmt.vim new file mode 100644 index 0000000000..b78c1994dd --- /dev/null +++ b/runtime/autoload/zig/fmt.vim @@ -0,0 +1,100 @@ +" Adapted from fatih/vim-go: autoload/go/fmt.vim +" +" Copyright 2011 The Go Authors. All rights reserved. +" Use of this source code is governed by a BSD-style +" license that can be found in the LICENSE file. +" +" Upstream: https://github.com/ziglang/zig.vim + +function! zig#fmt#Format() abort + " Save cursor position and many other things. + let view = winsaveview() + + if !executable('zig') + echohl Error | echomsg "no zig binary found in PATH" | echohl None + return + endif + + let cmdline = 'zig fmt --stdin --ast-check' + let current_buf = bufnr('') + + " The formatted code is output on stdout, the errors go on stderr. + if exists('*systemlist') + silent let out = systemlist(cmdline, current_buf) + else + silent let out = split(system(cmdline, current_buf)) + endif + if len(out) == 1 + if out[0] == "error: unrecognized parameter: '--ast-check'" + let cmdline = 'zig fmt --stdin' + if exists('*systemlist') + silent let out = systemlist(cmdline, current_buf) + else + silent let out = split(system(cmdline, current_buf)) + endif + endif + endif + let err = v:shell_error + + + if err == 0 + " remove undo point caused via BufWritePre. + try | silent undojoin | catch | endtry + + " Replace the file content with the formatted version. + if exists('*deletebufline') + call deletebufline(current_buf, len(out), line('$')) + else + silent execute ':' . len(out) . ',' . line('$') . ' delete _' + endif + call setline(1, out) + + " No errors detected, close the loclist. + call setloclist(0, [], 'r') + lclose + elseif get(g:, 'zig_fmt_parse_errors', 1) + let errors = s:parse_errors(expand('%'), out) + + call setloclist(0, [], 'r', { + \ 'title': 'Errors', + \ 'items': errors, + \ }) + + let max_win_height = get(g:, 'zig_fmt_max_window_height', 5) + " Prevent the loclist from becoming too long. + let win_height = min([max_win_height, len(errors)]) + " Open the loclist, but only if there's at least one error to show. + execute 'silent! lwindow ' . win_height + endif + + call winrestview(view) + + if err != 0 + echohl Error | echomsg "zig fmt returned error" | echohl None + return + endif + + " Run the syntax highlighter on the updated content and recompute the folds if + " needed. + syntax sync fromstart +endfunction + +" parse_errors parses the given errors and returns a list of parsed errors +function! s:parse_errors(filename, lines) abort + " list of errors to be put into location list + let errors = [] + for line in a:lines + let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)') + if !empty(tokens) + call add(errors,{ + \"filename": a:filename, + \"lnum": tokens[2], + \"col": tokens[3], + \"text": tokens[4], + \ }) + endif + endfor + + return errors +endfunction +" vim: sw=2 ts=2 et diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index b2863d02f4..98c48699cc 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 9.0. Last change: 2022 Dec 03 +*eval.txt* For Vim version 9.0. Last change: 2022 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -163,9 +163,10 @@ Note that " " and "0" are also non-empty strings, thus considered to be TRUE. A List, Dictionary or Float is not a Number or String, thus evaluate to FALSE. *E611* *E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910* - *E913* *E974* *E975* *E976* -|List|, |Dictionary|, |Funcref|, |Job|, |Channel| and |Blob| types are not -automatically converted. + *E913* *E974* *E975* *E976* *E1319* *E1320* *E1321* *E1322* + *E1323* *E1324* +|List|, |Dictionary|, |Funcref|, |Job|, |Channel|, |Blob|, |Class| and +|object| types are not automatically converted. *E805* *E806* *E808* When mixing Number and Float the Number is converted to Float. Otherwise diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 73409b7893..e95f63f751 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 9.0. Last change: 2022 Nov 30 +*options.txt* For Vim version 9.0. Last change: 2022 Dec 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -7117,45 +7117,49 @@ A jump table for the options with a short description can be found at |Q_op|. messages, for example with CTRL-G, and to avoid some other messages. It is a list of flags: flag meaning when present ~ - f use "(3 of 5)" instead of "(file 3 of 5)" - i use "[noeol]" instead of "[Incomplete last line]" - l use "999L, 888B" instead of "999 lines, 888 bytes" - m use "[+]" instead of "[Modified]" - n use "[New]" instead of "[New File]" - r use "[RO]" instead of "[readonly]" - w use "[w]" instead of "written" for file write message + f use "(3 of 5)" instead of "(file 3 of 5)" *shm-f* + i use "[noeol]" instead of "[Incomplete last line]" *shm-i* + l use "999L, 888B" instead of "999 lines, 888 bytes" *shm-l* + m use "[+]" instead of "[Modified]" *shm-m* + n use "[New]" instead of "[New File]" *shm-n* + r use "[RO]" instead of "[readonly]" *shm-r* + w use "[w]" instead of "written" for file write message *shm-w* and "[a]" instead of "appended" for ':w >> file' command - x use "[dos]" instead of "[dos format]", "[unix]" instead of - "[unix format]" and "[mac]" instead of "[mac format]". - a all of the above abbreviations - - o overwrite message for writing a file with subsequent message - for reading a file (useful for ":wn" or when 'autowrite' on) - O message for reading a file overwrites any previous message. - Also for quickfix message (e.g., ":cn"). - s don't give "search hit BOTTOM, continuing at TOP" or "search - hit TOP, continuing at BOTTOM" messages; when using the search - count do not show "W" after the count message (see S below) - t truncate file message at the start if it is too long to fit - on the command-line, "<" will appear in the left most column. - Ignored in Ex mode. - T truncate other messages in the middle if they are too long to - fit on the command line. "..." will appear in the middle. - Ignored in Ex mode. - W don't give "written" or "[w]" when writing a file - A don't give the "ATTENTION" message when an existing swap file - is found. - I don't give the intro message when starting Vim |:intro|. - c don't give |ins-completion-menu| messages. For example, - "-- XXX completion (YYY)", "match 1 of 2", "The only match", - "Pattern not found", "Back at original", etc. - C don't give messages while scanning for ins-completion items, - for instance "scanning tags" - q use "recording" instead of "recording @a" - F don't give the file info when editing a file, like `:silent` - was used for the command; note that this also affects messages - from autocommands - S do not show search count message when searching, e.g. + x use "[dos]" instead of "[dos format]", "[unix]" *shm-x* + instead of "[unix format]" and "[mac]" instead of "[mac + format]". + a all of the above abbreviations *shm-a* + + o overwrite message for writing a file with subsequent *shm-o* + message for reading a file (useful for ":wn" or when + 'autowrite' on) + O message for reading a file overwrites any previous *smh-O* + message. Also for quickfix message (e.g., ":cn"). + s don't give "search hit BOTTOM, continuing at TOP" or *shm-s* + "search hit TOP, continuing at BOTTOM" messages; when using + the search count do not show "W" after the count message (see + S below) + t truncate file message at the start if it is too long *shm-t* + to fit on the command-line, "<" will appear in the left most + column. Ignored in Ex mode. + T truncate other messages in the middle if they are too *shm-T* + long to fit on the command line. "..." will appear in the + middle. Ignored in Ex mode. + W don't give "written" or "[w]" when writing a file *shm-W* + A don't give the "ATTENTION" message when an existing *shm-A* + swap file is found. + I don't give the intro message when starting Vim, *shm-I* + see |:intro|. + c don't give |ins-completion-menu| messages. For *shm-c* + example, "-- XXX completion (YYY)", "match 1 of 2", "The only + match", "Pattern not found", "Back at original", etc. + C don't give messages while scanning for ins-completion *shm-C* + items, for instance "scanning tags" + q use "recording" instead of "recording @a" *shm-q* + F don't give the file info when editing a file, like *shm-F* + `:silent` was used for the command; note that this also + affects messages from autocommands + S do not show search count message when searching, e.g. *shm-S* "[1/5]" This gives you the opportunity to avoid that a change between buffers diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index 032e9a7960..7dc4fa3035 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1273,6 +1273,21 @@ not "b:current_compiler". What the command actually does is the following: For writing a compiler plugin, see |write-compiler-plugin|. +DOTNET *compiler-dotnet* + +The .NET CLI compiler outputs both errors and warnings by default. The output +may be limited to include only errors, by setting the g:dotnet_errors_only +variable to |v:true|. + +The associated project name is included in each error and warning. To supress +the project name, set the g:dotnet_show_project_file variable to |v:false|. + +Example: limit output to only display errors, and suppress the project name: > + let dotnet_errors_only = v:true + let dotnet_show_project_file = v:false + compiler dotnet +< + GCC *quickfix-gcc* *compiler-gcc* There's one variable you can set for the GCC compiler: diff --git a/runtime/doc/tags b/runtime/doc/tags index 2fe27d4d65..9178c773b5 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -3988,6 +3988,7 @@ CTRL-{char} intro.txt /*CTRL-{char}* Channel eval.txt /*Channel* Channels eval.txt /*Channels* Chinese mbyte.txt /*Chinese* +Class vim9class.txt /*Class* Cmd-event autocmd.txt /*Cmd-event* CmdUndefined autocmd.txt /*CmdUndefined* Cmdline cmdline.txt /*Cmdline* @@ -4368,7 +4369,20 @@ E1311 map.txt /*E1311* E1312 windows.txt /*E1312* E1313 eval.txt /*E1313* E1314 vim9class.txt /*E1314* +E1315 vim9class.txt /*E1315* +E1316 vim9class.txt /*E1316* +E1317 vim9class.txt /*E1317* +E1318 vim9class.txt /*E1318* +E1319 eval.txt /*E1319* E132 userfunc.txt /*E132* +E1320 eval.txt /*E1320* +E1321 eval.txt /*E1321* +E1322 eval.txt /*E1322* +E1323 eval.txt /*E1323* +E1324 eval.txt /*E1324* +E1325 vim9class.txt /*E1325* +E1326 vim9class.txt /*E1326* +E1327 vim9class.txt /*E1327* E133 userfunc.txt /*E133* E134 change.txt /*E134* E135 autocmd.txt /*E135* @@ -5427,6 +5441,7 @@ OS390-bugs os_390.txt /*OS390-bugs* OS390-has-ebcdic os_390.txt /*OS390-has-ebcdic* OS390-limitations os_390.txt /*OS390-limitations* OS390-open-source os_390.txt /*OS390-open-source* +Object vim9class.txt /*Object* OffTheSpot mbyte.txt /*OffTheSpot* OnTheSpot mbyte.txt /*OnTheSpot* Operator-pending intro.txt /*Operator-pending* @@ -6264,6 +6279,7 @@ cino-w indent.txt /*cino-w* cino-{ indent.txt /*cino-{* cino-} indent.txt /*cino-}* cinoptions-values indent.txt /*cinoptions-values* +class vim9class.txt /*class* class-member vim9class.txt /*class-member* class-method vim9class.txt /*class-method* clear-undo undo.txt /*clear-undo* @@ -6322,6 +6338,7 @@ compile-changes-8 version8.txt /*compile-changes-8* compile-changes-9 version9.txt /*compile-changes-9* compiler-compaqada ft_ada.txt /*compiler-compaqada* compiler-decada ft_ada.txt /*compiler-decada* +compiler-dotnet quickfix.txt /*compiler-dotnet* compiler-gcc quickfix.txt /*compiler-gcc* compiler-gnat ft_ada.txt /*compiler-gnat* compiler-hpada ft_ada.txt /*compiler-hpada* @@ -8878,6 +8895,14 @@ nr2char() builtin.txt /*nr2char()* nroff.vim syntax.txt /*nroff.vim* null vim9.txt /*null* null-variable eval.txt /*null-variable* +null_blob vim9.txt /*null_blob* +null_channel vim9.txt /*null_channel* +null_dict vim9.txt /*null_dict* +null_function vim9.txt /*null_function* +null_job vim9.txt /*null_job* +null_list vim9.txt /*null_list* +null_partial vim9.txt /*null_partial* +null_string vim9.txt /*null_string* number_relativenumber options.txt /*number_relativenumber* numbered-function eval.txt /*numbered-function* numbermax-variable eval.txt /*numbermax-variable* @@ -8887,6 +8912,7 @@ o insert.txt /*o* o_CTRL-V motion.txt /*o_CTRL-V* o_V motion.txt /*o_V* o_v motion.txt /*o_v* +object vim9class.txt /*object* object-motions motion.txt /*object-motions* object-select motion.txt /*object-select* objects index.txt /*objects* @@ -9545,6 +9571,27 @@ shellescape() builtin.txt /*shellescape()* shift intro.txt /*shift* shift-left-right change.txt /*shift-left-right* shiftwidth() builtin.txt /*shiftwidth()* +shm-A options.txt /*shm-A* +shm-C options.txt /*shm-C* +shm-F options.txt /*shm-F* +shm-I options.txt /*shm-I* +shm-S options.txt /*shm-S* +shm-T options.txt /*shm-T* +shm-W options.txt /*shm-W* +shm-a options.txt /*shm-a* +shm-c options.txt /*shm-c* +shm-f options.txt /*shm-f* +shm-i options.txt /*shm-i* +shm-l options.txt /*shm-l* +shm-m options.txt /*shm-m* +shm-n options.txt /*shm-n* +shm-o options.txt /*shm-o* +shm-q options.txt /*shm-q* +shm-r options.txt /*shm-r* +shm-s options.txt /*shm-s* +shm-t options.txt /*shm-t* +shm-w options.txt /*shm-w* +shm-x options.txt /*shm-x* short-name-changed version4.txt /*short-name-changed* showing-menus gui.txt /*showing-menus* sign-column sign.txt /*sign-column* @@ -9583,6 +9630,7 @@ slice() builtin.txt /*slice()* slow-fast-terminal term.txt /*slow-fast-terminal* slow-start starting.txt /*slow-start* slow-terminal term.txt /*slow-terminal* +smh-O options.txt /*smh-O* socket-interface channel.txt /*socket-interface* sort() builtin.txt /*sort()* sorting change.txt /*sorting* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 39961a177c..4474632c34 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.0. Last change: 2022 Dec 05 +*todo.txt* For Vim version 9.0. Last change: 2022 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -54,6 +54,14 @@ Upcoming larger works: Further Vim9 improvements, possibly after launch: - implement :class and :interface: See |vim9-classes| #11544 + make default constructor use "this.member = void" + make public / default read access / private work for members. + string value of class and object in echo_string_core() + object empty(), len() - can class define a method? + tv_equal() should compare values, not identity. + garbage collection: set_ref_in_item(): Mark items in class as used ? + type() should return different type for each class? + how about lock/unlock? - implement :type - implement :enum - Use Vim9 for more runtime files. diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index a70b8a42c5..e13feee467 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 9.0. Last change: 2022 Dec 03 +*vim9.txt* For Vim version 9.0. Last change: 2022 Dec 08 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1023,7 +1023,9 @@ always converted to string: > Simple types are Number, Float, Special and Bool. For other types |string()| should be used. - *false* *true* *null* *E1034* + *false* *true* *null* *null_blob* *null_channel* + *null_dict* *null_function* *null_job* *null_list* + *null_partial* *null_string* *E1034* In Vim9 script one can use the following predefined values: > true false diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt index b018a105c3..7785fbe130 100644 --- a/runtime/doc/vim9class.txt +++ b/runtime/doc/vim9class.txt @@ -1,4 +1,4 @@ -*vim9class.txt* For Vim version 9.0. Last change: 2022 Dec 04 +*vim9class.txt* For Vim version 9.0. Last change: 2022 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -96,7 +96,7 @@ Let's start with a simple example: a class that stores a text position: > this.col = col enddef endclass - +< *object* *Object* You can create an object from this class with the new() method: > var pos = TextPosition.new(1, 1) @@ -104,7 +104,7 @@ You can create an object from this class with the new() method: > The object members "lnum" and "col" can be accessed directly: > echo $'The text position is ({pos.lnum}, {pos.col})' - +< *E1317* *E1327* If you have been using other object-oriented languages you will notice that in Vim the object members are consistently referred to with the "this." prefix. This is different from languages like Java and TypeScript. This @@ -329,14 +329,14 @@ The interface name can be used as a type: > ============================================================================== -5. More class details *Vim9-class* +5. More class details *Vim9-class* *Class* *class* Defining a class ~ *:class* *:endclass* *:abstract* A class is defined between `:class` and `:endclass`. The whole class is defined in one script file. It is not possible to add to a class later. -A class can only be defined in a |Vim9| script file. *E1315* +A class can only be defined in a |Vim9| script file. *E1316* A class cannot be defined inside a function. It is possible to define more than one class in a script file. Although it @@ -361,7 +361,7 @@ these variants: > *E1314* The class name should be CamelCased. It must start with an uppercase letter. That avoids clashing with builtin types. - + *E1315* After the class name these optional items can be used. Each can appear only once. They can appear in any order, although this order is recommended: > extends ClassName @@ -377,6 +377,20 @@ named interface. This avoids the need for separately specifying the interface, which is often done in many languages, especially Java. +Items in a class ~ + *E1318* *E1325* *E1326* +Inside a class, in betweeen `:class` and `:endclass`, these items can appear: +- An object member declaration: > + this._memberName: memberType + this.memberName: memberType + public this.memberName: memberType +- A constructor method: > + def new(arguments) + def newName(arguments) +- An object method: > + def SomeMethod(arguments) + + Defining an interface ~ *:interface* *:endinterface* An interface is defined between `:interface` and `:endinterface`. It may be @@ -417,11 +431,28 @@ members, in the order they were specified. Thus if your class looks like: > Then The default constructor will be: > - def new(this.name, this.age, this.gender) + def new(this.name = void, this.age = void, this.gender = void) enddef All object members will be used, also private access ones. +The "= void" default values make the arguments optional. Thus you can also +call `new()` without any arguments. Since "void" isn't an actual value, no +assignment will happen and the default value for the object members will be +used. This is a more useful example, with default values: > + + class TextPosition + this.lnum: number = 1 + this.col: number = 1 + endclass + +If you want the constructor to have mandatory arguments, you need to write it +yourself. For example, if for the AutoNew class above you insist on getting +the name, you can define the constructor like this: > + + def new(this.name, this.age = void, this.gender = void) + enddef + Multiple constructors ~ diff --git a/runtime/ftplugin/readline.vim b/runtime/ftplugin/readline.vim index e9ef93ec7f..eba7122347 100644 --- a/runtime/ftplugin/readline.vim +++ b/runtime/ftplugin/readline.vim @@ -1,7 +1,8 @@ " Vim filetype plugin file -" Language: readline(3) configuration file -" Previous Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: readline(3) configuration file +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Last Change: 2022 Dec 09 if exists("b:did_ftplugin") finish @@ -11,9 +12,25 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim +setlocal comments=:# +setlocal commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + let b:undo_ftplugin = "setl com< cms< fo<" -setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_ignorecase = 0 + let b:match_words = '$if:$else:$endif' + let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words" +endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Readline Intialization Files (inputrc .inputrc)\tinputrc;*.inputrc\n" .. + \ "All Files (*.*)\t*.*\n" + let b:undo_ftplugin ..= " | unlet! b:browsefilter" +endif let &cpo = s:cpo_save unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet: diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim index 318488713b..6a3c375b94 100644 --- a/runtime/syntax/fstab.vim +++ b/runtime/syntax/fstab.vim @@ -2,8 +2,8 @@ " Language: fstab file " Maintainer: Radu Dineiu <radu.dineiu@gmail.com> " URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim -" Last Change: 2020 Dec 30 -" Version: 1.4 +" Last Change: 2022 Dec 10 +" Version: 1.5 " " Credits: " David Necas (Yeti) <yeti@physics.muni.cz> @@ -56,71 +56,120 @@ syn keyword fsMountPointKeyword contained none swap " Type syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown syn match fsTypeUnknown /\s\+\zs\w\+/ contained -syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 cfs cgroup cifs coda configfs cpuset cramfs devfs devpts devtmpfs e2compr efs ext2 ext2fs ext3 ext4 fdesc ffs filecore fuse fuseblk fusectl hfs hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfsd nilfs2 none ntfs null nwfs overlay ovlfs pipefs portal proc procfs pstore ptyfs qnx4 reiserfs ramfs romfs securityfs shm smbfs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs udf ufs umap umsdos union usbfs userfs vfat vs3fs vxfs wrapfs wvfs xenfs xfs zisofs +syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs " Options " ------- " Options: General syn cluster fsOptionsCluster contains=fsOperator,fsOptionsGeneral,fsOptionsKeywords,fsTypeUnknown syn match fsOptionsNumber /\d\+/ +syn match fsOptionsNumberSigned /[-+]\?\d\+/ syn match fsOptionsNumberOctal /[0-8]\+/ syn match fsOptionsString /[a-zA-Z0-9_-]\+/ +syn keyword fsOptionsTrueFalse true false syn keyword fsOptionsYesNo yes no +syn keyword fsOptionsYN y n +syn keyword fsOptions01 0 1 syn cluster fsOptionsCheckCluster contains=fsOptionsExt2Check,fsOptionsFatCheck syn keyword fsOptionsSize 512 1024 2048 syn keyword fsOptionsGeneral async atime auto bind current defaults dev devgid devmode devmtime devuid dirsync exec force fstab kudzu loop mand move noatime noauto noclusterr noclusterw nodev nodevmtime nodiratime noexec nomand norelatime nosuid nosymfollow nouser owner rbind rdonly relatime remount ro rq rw suid suiddir supermount sw sync union update user users wxallowed xx nofail failok syn match fsOptionsGeneral /_netdev/ +syn match fsOptionsKeywords contained /\<cache=/ nextgroup=fsOptionsCache +syn keyword fsOptionsCache yes no none strict loose fscache mmap + +syn match fsOptionsKeywords contained /\<dax=/ nextgroup=fsOptionsDax +syn keyword fsOptionsDax inode never always + +syn match fsOptionsKeywords contained /\<errors=/ nextgroup=fsOptionsErrors +syn keyword fsOptionsErrors contained continue panic withdraw remount-ro recover zone-ro zone-offline repair + +syn match fsOptionsKeywords contained /\<\%(sec\)=/ nextgroup=fsOptionsSecurityMode +syn keyword fsOptionsSecurityMode contained none krb5 krb5i ntlm ntlmi ntlmv2 ntlmv2i ntlmssp ntlmsspi sys lkey lkeyi lkeyp spkm spkmi spkmp + " Options: adfs syn match fsOptionsKeywords contained /\<\%([ug]id\|o\%(wn\|th\)mask\)=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<ftsuffix=/ nextgroup=fsOptions01 " Options: affs -syn match fsOptionsKeywords contained /\<\%(set[ug]id\|mode\|reserved\)=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<mode=/ nextgroup=fsOptionsString +syn match fsOptionsKeywords contained /\<\%(set[ug]id\|reserved\)=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<\%(prefix\|volume\|root\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<bs=/ nextgroup=fsOptionsSize -syn keyword fsOptionsKeywords contained protect usemp verbose +syn keyword fsOptionsKeywords contained protect usemp verbose nofilenametruncate mufs " Options: btrfs -syn match fsOptionsKeywords contained /\<\%(subvol\|subvolid\|subvolrootid\|device\|compress\|compress-force\|fatal_errors\)=/ nextgroup=fsOptionsString +syn match fsOptionsKeywords contained /\<\%(subvol\|subvolid\|subvolrootid\|device\|compress\|compress-force\|check_int_print_mask\|space_cache\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<\%(max_inline\|alloc_start\|thread_pool\|metadata_ratio\|check_int_print_mask\)=/ nextgroup=fsOptionsNumber -syn keyword fsOptionsKeywords contained degraded nodatasum nodatacow nobarrier ssd ssd_spread noacl notreelog flushoncommit space_cache nospace_cache clear_cache user_subvol_rm_allowed autodefrag inode_cache enospc_debug recovery check_int check_int_data skip_balance discard +syn match fsOptionsKeywords contained /\<discard=/ nextgroup=fsOptionsBtrfsDiscard +syn keyword fsOptionsBtrfsDiscard sync async +syn match fsOptionsKeywords contained /\<fatal_errors=/ nextgroup=fsOptionsBtrfsFatalErrors +syn keyword fsOptionsBtrfsFatalErrors bug panic +syn match fsOptionsKeywords contained /\<fragment=/ nextgroup=fsOptionsBtrfsFragment +syn keyword fsOptionsBtrfsFragment data metadata all +syn keyword fsOptionsKeywords contained degraded datasum nodatasum datacow nodatacow barrier nobarrier ssd ssd_spread nossd nossd_spread noacl treelog notreelog flushoncommit noflushoncommit space_cache nospace_cache clear_cache user_subvol_rm_allowed autodefrag noautodefrag inode_cache noinode_cache enospc_debug noenospc_debug recovery check_int check_int_data skip_balance discard nodiscard compress compress-force nologreplay rescan_uuid_tree rescue usebackuproot " Options: cd9660 syn keyword fsOptionsKeywords contained extatt gens norrip nostrictjoilet +" Options: ceph +syn match fsOptionsKeywords contained /\<\%(mon_addr\|fsid\|rasize\|mount_timeout\|caps_max\)=/ nextgroup=fsOptionsString +syn keyword fsOptionsKeywords contained rbytes norbytes nocrc dcache nodcache noasyncreaddir noquotadf nocopyfrom +syn match fsOptionsKeywords contained /\<recover_session=/ nextgroup=fsOptionsCephRecoverSession +syn keyword fsOptionsCephRecoverSession contained no clean + +" Options: cifs +syn match fsOptionsKeywords contained /\<\%(user\|password\|credentials\|servernetbiosname\|servern\|netbiosname\|file_mode\|dir_mode\|ip\|domain\|prefixpath\)=/ nextgroup=fsOptionsString +syn match fsOptionsKeywords contained /\<\%(cruid\|backupuid\|backupgid\)=/ nextgroup=fsOptionsNumber +syn keyword fsOptionsKeywords contained forceuid forcegid guest setuids nosetuids perm noperm dynperm strictcache rwpidforward mapchars nomapchars cifsacl nocase ignorecase nobrl sfu serverino noserverino nounix fsc multiuser posixpaths noposixpaths + " Options: devpts " -- everything already defined +" Options: ecryptfs +syn match fsOptionsKeywords contained /\<\%(ecryptfs_\%(sig\|fnek_sig\|cipher\|key_bytes\)\|key\)=/ nextgroup=fsOptionsString +syn keyword fsOptionsKeywords contained ecryptfs_passthrough no_sig_cache ecryptfs_encrypted_view ecryptfs_xattr +syn match fsOptionsKeywords contained /\<ecryptfs_enable_filename_crypto=/ nextgroup=fsOptionsYN +syn match fsOptionsKeywords contained /\<verbosity=/ nextgroup=fsOptions01 + +" Options: erofs +syn match fsOptionsKeywords contained /\<cache_strategy=/ nextgroup=fsOptionsEroCacheStrategy +syn keyword fsOptionsEroCacheStrategy contained disabled readahead readaround + " Options: ext2 syn match fsOptionsKeywords contained /\<check=*/ nextgroup=@fsOptionsCheckCluster -syn match fsOptionsKeywords contained /\<errors=/ nextgroup=fsOptionsExt2Errors syn match fsOptionsKeywords contained /\<\%(res[gu]id\|sb\)=/ nextgroup=fsOptionsNumber syn keyword fsOptionsExt2Check contained none normal strict -syn keyword fsOptionsExt2Errors contained continue panic -syn match fsOptionsExt2Errors contained /\<remount-ro\>/ +syn match fsOptionsErrors contained /\<remount-ro\>/ syn keyword fsOptionsKeywords contained acl bsddf minixdf debug grpid bsdgroups minixdf nocheck nogrpid oldalloc orlov sysvgroups nouid32 nobh user_xattr nouser_xattr " Options: ext3 syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt3Journal syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt3Data +syn match fsOptionsKeywords contained /\<data_err=/ nextgroup=fsOptionsExt3DataErr syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<jqfmt=/ nextgroup=fsOptionsExt3Jqfmt +syn match fsOptionsKeywords contained /\<\%(usrjquota\|grpjquota\)=/ nextgroup=fsOptionsString syn keyword fsOptionsExt3Journal contained update inum syn keyword fsOptionsExt3Data contained journal ordered writeback +syn keyword fsOptionsExt3DataErr contained ignore abort +syn keyword fsOptionsExt3Jqfmt contained vfsold vfsv0 vfsv1 syn keyword fsOptionsKeywords contained noload user_xattr nouser_xattr acl " Options: ext4 syn match fsOptionsKeywords contained /\<journal=/ nextgroup=fsOptionsExt4Journal syn match fsOptionsKeywords contained /\<data=/ nextgroup=fsOptionsExt4Data -syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptionsExt4Barrier +syn match fsOptionsKeywords contained /\<barrier=/ nextgroup=fsOptions01 syn match fsOptionsKeywords contained /\<journal_dev=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<resuid=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<resgid=/ nextgroup=fsOptionsNumber syn match fsOptionsKeywords contained /\<sb=/ nextgroup=fsOptionsNumber -syn match fsOptionsKeywords contained /\<commit=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<\%(commit\|inode_readahead_blks\|stripe\|max_batch_time\|min_batch_time\|init_itable\|max_dir_size_kb\)=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<journal_ioprio=/ nextgroup=fsOptionsExt4JournalIoprio syn keyword fsOptionsExt4Journal contained update inum syn keyword fsOptionsExt4Data contained journal ordered writeback -syn match fsOptionsExt4Barrier /[0-1]/ -syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh +syn keyword fsOptionsExt4JournalIoprio contained 0 1 2 3 4 5 6 7 +syn keyword fsOptionsKeywords contained noload extents orlov oldalloc user_xattr nouser_xattr acl noacl reservation noreservation bsddf minixdf check=none nocheck debug grpid nogroupid sysvgroups bsdgroups quota noquota grpquota usrquota bh nobh journal_checksum nojournal_checksum journal_async_commit delalloc nodelalloc auto_da_alloc noauto_da_alloc noinit_itable block_validity noblock_validity dioread_lock dioread_nolock i_version nombcache prjquota " Options: fat syn match fsOptionsKeywords contained /\<blocksize=/ nextgroup=fsOptionsSize @@ -135,39 +184,124 @@ syn keyword fsOptionsConv contained b t a binary text auto syn keyword fsOptionsFatType contained 12 16 32 syn keyword fsOptionsKeywords contained quiet sys_immutable showexec dots nodots +" Options: fuse +syn match fsOptionsKeywords contained /\<\%(fd\|user_id\|group_id\|blksize\)=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<\%(rootmode\)=/ nextgroup=fsOptionsString + " Options: hfs -syn match fsOptionsKeywords contained /\<\%(creator|type\)=/ nextgroup=fsOptionsString +syn match fsOptionsKeywords contained /\<\%(creator\|type\)=/ nextgroup=fsOptionsString syn match fsOptionsKeywords contained /\<\%(dir\|file\|\)_umask=/ nextgroup=fsOptionsNumberOctal syn match fsOptionsKeywords contained /\<\%(session\|part\)=/ nextgroup=fsOptionsNumber +" Options: hfsplus +syn match fsOptionsKeywords contained /\<nls=/ nextgroup=fsOptionsString +syn keyword fsOptionsKeywords contained decompose nodecompose + +" Options: f2fs +syn match fsOptionsKeywords contained /\<background_gc=/ nextgroup=fsOptionsF2fsBackgroundGc +syn keyword fsOptionsF2fsBackgroundGc contained on off sync +syn match fsOptionsKeywords contained /\<active_logs=/ nextgroup=fsOptionsF2fsActiveLogs +syn keyword fsOptionsF2fsActiveLogs contained 2 4 6 +syn match fsOptionsKeywords contained /\<alloc_mode=/ nextgroup=fsOptionsF2fsAllocMode +syn keyword fsOptionsF2fsAllocMode contained reuse default +syn match fsOptionsKeywords contained /\<fsync_mode=/ nextgroup=fsOptionsF2fsFsyncMode +syn keyword fsOptionsF2fsFsyncMode contained posix strict nobarrier +syn match fsOptionsKeywords contained /\<compress_mode=/ nextgroup=fsOptionsF2fsCompressMode +syn keyword fsOptionsF2fsCompressMode contained fs user +syn match fsOptionsKeywords contained /\<discard_unit=/ nextgroup=fsOptionsF2fsDiscardUnit +syn keyword fsOptionsF2fsDiscardUnit contained block segment section +syn match fsOptionsKeywords contained /\<memory=/ nextgroup=fsOptionsF2fsMemory +syn keyword fsOptionsF2fsMemory contained normal low +syn match fsOptionsKeywords contained /\<\%(inline_xattr_size\|reserve_root\|fault_injection\|fault_type\|io_bits\|compress_log_size\)=/ nextgroup=fsOptionsNumber +syn match fsOptionsKeywords contained /\<\%(prjjquota\|test_dummy_encryption\|checkpoint\|compress_algorithm\|compress_extension\|nocompress_extension\)=/ nextgroup=fsOptionsString +syn keyword fsOptionsKeyWords contained gc_merge nogc_merge disable_roll_forward no_heap disable_ext_identify inline_xattr noinline_xattr inline_data noinline_data inline_dentry noinline_dentry flush_merge fastboot extent_cache noextent_cache data_flush offusrjquota offgrpjquota offprjjquota test_dummy_encryption checkpoint_merge nocheckpoint_merge compress_chksum compress_cache inlinecrypt atgc + " Options: ffs syn keyword fsOptionsKeyWords contained noperm softdep +" Options: gfs2 |