]> granicus.if.org Git - vim/commitdiff
Update runtime files
authorBram Moolenaar <Bram@vim.org>
Mon, 9 Jan 2023 20:12:45 +0000 (20:12 +0000)
committerBram Moolenaar <Bram@vim.org>
Mon, 9 Jan 2023 20:12:45 +0000 (20:12 +0000)
13 files changed:
.github/CODEOWNERS
runtime/autoload/dist/vimindent.vim
runtime/doc/eval.txt
runtime/doc/index.txt
runtime/doc/map.txt
runtime/doc/options.txt
runtime/doc/tags
runtime/doc/term.txt
runtime/doc/todo.txt
runtime/doc/userfunc.txt
runtime/doc/vim9class.txt
runtime/syntax/editorconfig.vim [new file with mode: 0644]
runtime/syntax/vim.vim

index 735cce3ab67d2f286fcdc31e2d209d04b0f5786f..0963685ae7cfa963c6cd8933de06408a48e12593 100644 (file)
@@ -334,6 +334,7 @@ runtime/syntax/dot.vim                      @mmottl
 runtime/syntax/doxygen.vim             @frogonwheels
 runtime/syntax/dtd.vim                 @chrisbra
 runtime/syntax/dts.vim                 @zonque
+runtime/syntax/editorconfig.vim                @gpanders
 runtime/syntax/eiffel.vim              @jocelyn
 runtime/syntax/elmfilt.vim             @cecamp
 runtime/syntax/erlang.vim              @hcs42
@@ -374,6 +375,7 @@ runtime/syntax/indent.vim           @dkearns
 runtime/syntax/j.vim                   @glts
 runtime/syntax/jargon.vim              @h3xx
 runtime/syntax/java.vim                        @fleiner
+runtime/syntax/javascript.vim          @fleiner
 runtime/syntax/jsonc.vim               @izhakjakov
 runtime/syntax/julia.vim               @carlobaldassi
 runtime/syntax/kconfig.vim             @chrisbra
index 24e2c939641981e948ad109d0020c76b881e4548..898f22f65c2ae44826617934f826831579f59bcb 100644 (file)
@@ -2,7 +2,7 @@ vim9script
 
 # Language:     Vim script
 # Maintainer:   github user lacygoill
-# Last Change:  2022 Oct 15
+# Last Change:  2023 Jan 03
 
 # NOTE: Whenever you change the code, make sure the tests are still passing:
 #
@@ -201,6 +201,7 @@ const ENDS_BLOCK: string = '^\s*\%('
     .. '\|' .. 'endw\%[hile]'
     .. '\|' .. 'endt\%[ry]'
     .. '\|' .. 'enddef'
+    .. '\|' .. 'endclass'
     .. '\|' .. 'endf\%[unction]'
     .. '\|' .. 'aug\%[roup]\s\+[eE][nN][dD]'
     .. '\|' .. CLOSING_BRACKET
@@ -212,6 +213,7 @@ patterns =<< trim END
     en\%[dif]
     el\%[se]
     endfor\=
+    endclass
     endw\%[hile]
     endt\%[ry]
     fina\|finally\=
@@ -251,6 +253,7 @@ patterns =<< trim END
     el\%[se]
     elseif\=
     for
+    class
     wh\%[ile]
     try
     cat\%[ch]
@@ -278,6 +281,8 @@ const START_MIDDLE_END: dict<list<string>> = {
     endif: ['if', 'el\%[se]\|elseif\=', 'en\%[dif]'],
     for: ['for', '', 'endfor\='],
     endfor: ['for', '', 'endfor\='],
+    class: ['class', '', 'endclass'],
+    endclass: ['class', '', 'endclass'],
     while: ['wh\%[ile]', '', 'endw\%[hile]'],
     endwhile: ['wh\%[ile]', '', 'endw\%[hile]'],
     try: ['try', 'cat\%[ch]\|fina\|finally\=', 'endt\%[ry]'],
index 98c48699cc0bc9fc38811913b475ff6a8f717662..556b171561d856f4ddc60bd0da3399ec32c0b83d 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*     For Vim version 9.0.  Last change: 2022 Dec 11
+*eval.txt*     For Vim version 9.0.  Last change: 2023 Jan 03
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2970,6 +2970,8 @@ text...
                        deleted when the script ends).  Function-local
                        variables are automatically deleted when the function
                        ends.
+                       In |Vim9| script variables declared in a function or
+                       script cannot be removed.
 
 :unl[et] ${env-name} ...                       *:unlet-environment* *:unlet-$*
                        Remove environment variable {env-name}.
index 9de498b373649c5eedbf04651ceb3e17ce9e6f7a..c4363a89fcab2cc64f95e56090d7e44cfb7a7fde 100644 (file)
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 9.0.  Last change: 2022 Oct 15
+*index.txt*     For Vim version 9.0.  Last change: 2023 Jan 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1239,6 +1239,7 @@ tag               command         action ~
 |:checkpath|   :che[ckpath]    list included files
 |:checktime|   :checkt[ime]    check timestamp of loaded buffers
 |:chistory|    :chi[story]     list the error lists
+|:class|       :class          start of a class specification
 |:clast|       :cla[st]        go to the specified error, default last one
 |:clearjumps|  :cle[arjumps]   clear the jump list
 |:clist|       :cl[ist]        list all errors
@@ -1313,6 +1314,7 @@ tag               command         action ~
 |:else|                :el[se]         part of an :if command
 |:elseif|      :elsei[f]       part of an :if command
 |:emenu|       :em[enu]        execute a menu by name
+|:endclass|    :endclass       end of a class specification
 |:enddef|      :enddef         end of a user function started with :def
 |:endif|       :en[dif]        end previous :if
 |:endfor|      :endfo[r]       end previous :for
@@ -1529,6 +1531,7 @@ tag               command         action ~
 |:ptprevious|  :ptp[revious]   |:tprevious| in preview window
 |:ptrewind|    :ptr[ewind]     |:trewind| in preview window
 |:ptselect|    :pts[elect]     |:tselect| and show tag in preview window
+|:public|      :public         prefix for a class or object member
 |:put|         :pu[t]          insert contents of register in the text
 |:pwd|         :pw[d]          print current directory
 |:py3|         :py3            execute Python 3 command
@@ -1639,6 +1642,7 @@ tag               command         action ~
 |:startinsert| :star[tinsert]  start Insert mode
 |:startgreplace|  :startg[replace] start Virtual Replace mode
 |:startreplace|        :startr[eplace] start Replace mode
+|:static|      :static         prefix for a class member or function
 |:stopinsert|  :stopi[nsert]   stop Insert mode
 |:stjump|      :stj[ump]       do ":tjump" and split window
 |:stselect|    :sts[elect]     do ":tselect" and split window
index 5c7b4f8a6a568326e401764077e923dcf3e7a483..175643644b6a2e89b7169c769dacbcb6d14ca430 100644 (file)
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 9.0.  Last change: 2022 Dec 01
+*map.txt*       For Vim version 9.0.  Last change: 2023 Jan 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -777,8 +777,8 @@ To avoid mapping of the characters you type in insert or Command-line mode,
 type a CTRL-V first.  The mapping in Insert mode is disabled if the 'paste'
 option is on.
                                                        *map-error*
-Note that when an error is encountered (that causes an error message or beep)
-the rest of the mapping is not executed.  This is Vi-compatible.
+Note that when an error is encountered (that causes an error message or might
+cause a beep) the rest of the mapping is not executed.  This is Vi-compatible.
 
 Note that the second character (argument) of the commands @zZtTfF[]rm'`"v
 and CTRL-X is not mapped.  This was done to be able to use all the named
index dc6e16bc7505d3bafb08a6e7caa1e057d5020a16..a514b6f28acc08d58756f8579f5688f45848a83e 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 9.0.  Last change: 2022 Dec 31
+*options.txt*  For Vim version 9.0.  Last change: 2023 Jan 02
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -7686,6 +7686,8 @@ A jump table for the options with a short description can be found at |Q_op|.
 
        When there is error while evaluating the option then it will be made
        empty to avoid further errors.  Otherwise screen updating would loop.
+       When the result contains unprintable characters the result is
+       unpredictable.
 
        Note that the only effect of 'ruler' when this option is set (and
        'laststatus' is 2) is controlling the output of |CTRL-G|.
index 66dd96a1445531b52e6ec496983044bd3a0421cc..49cabaa0e27d05c682c55ecc647ffd10e225e5b1 100644 (file)
@@ -1082,6 +1082,7 @@ $quote    eval.txt        /*$quote*
 't_VS' term.txt        /*'t_VS'*
 't_WP' term.txt        /*'t_WP'*
 't_WS' term.txt        /*'t_WS'*
+'t_XM' term.txt        /*'t_XM'*
 't_ZH' term.txt        /*'t_ZH'*
 't_ZR' term.txt        /*'t_ZR'*
 't_al' term.txt        /*'t_al'*
@@ -4399,7 +4400,22 @@ E1337    vim9class.txt   /*E1337*
 E1338  vim9class.txt   /*E1338*
 E1339  textprop.txt    /*E1339*
 E134   change.txt      /*E134*
+E1340  vim9class.txt   /*E1340*
+E1341  vim9class.txt   /*E1341*
+E1342  vim9class.txt   /*E1342*
+E1343  vim9class.txt   /*E1343*
+E1344  vim9class.txt   /*E1344*
+E1345  vim9class.txt   /*E1345*
+E1346  vim9class.txt   /*E1346*
+E1347  vim9class.txt   /*E1347*
+E1348  vim9class.txt   /*E1348*
+E1349  vim9class.txt   /*E1349*
 E135   autocmd.txt     /*E135*
+E1350  vim9class.txt   /*E1350*
+E1351  vim9class.txt   /*E1351*
+E1352  vim9class.txt   /*E1352*
+E1353  vim9class.txt   /*E1353*
+E1354  vim9class.txt   /*E1354*
 E136   starting.txt    /*E136*
 E137   starting.txt    /*E137*
 E138   starting.txt    /*E138*
@@ -6294,8 +6310,8 @@ cino-{    indent.txt      /*cino-{*
 cino-} indent.txt      /*cino-}*
 cinoptions-values      indent.txt      /*cinoptions-values*
 class  vim9class.txt   /*class*
+class-function vim9class.txt   /*class-function*
 class-member   vim9class.txt   /*class-member*
-class-method   vim9class.txt   /*class-method*
 clear-undo     undo.txt        /*clear-undo*
 clearmatches() builtin.txt     /*clearmatches()*
 client-server  remote.txt      /*client-server*
@@ -8492,6 +8508,7 @@ motion-count-multiplied   motion.txt      /*motion-count-multiplied*
 motion.txt     motion.txt      /*motion.txt*
 mouse-mode-table       term.txt        /*mouse-mode-table*
 mouse-overview term.txt        /*mouse-overview*
+mouse-reporting        term.txt        /*mouse-reporting*
 mouse-scrolling-off    scroll.txt      /*mouse-scrolling-off*
 mouse-swap-buttons     term.txt        /*mouse-swap-buttons*
 mouse-using    term.txt        /*mouse-using*
@@ -10011,6 +10028,7 @@ t_Us    term.txt        /*t_Us*
 t_VS   term.txt        /*t_VS*
 t_WP   term.txt        /*t_WP*
 t_WS   term.txt        /*t_WS*
+t_XM   term.txt        /*t_XM*
 t_ZH   term.txt        /*t_ZH*
 t_ZR   term.txt        /*t_ZR*
 t_al   term.txt        /*t_al*
index 8b8214c300bf2829e7076a746ee9d93636ab835c..3336889852d8ae194559d12c77c6292b1994f8ce 100644 (file)
@@ -1,4 +1,4 @@
-*term.txt*      For Vim version 9.0.  Last change: 2023 Jan 01
+*term.txt*      For Vim version 9.0.  Last change: 2023 Jan 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -322,6 +322,9 @@ using the "xterm" workaround.  These are the relevant entries (so far):
        PS      "\033[200~"     pasted text start |t_PS|
        PE      "\033[201~"     pasted text end |t_PE|
 
+       XM      "\033[?1006;1000%?%p1%{1}%=%th%el%;"
+                               mouse enable / disable |t_XM|
+
                                                *xterm-kitty* *kitty-terminal*
 The Kitty terminal is a special case.  Mainly because it works differently
 from most other terminals, but also because, instead of trying the fit in and
@@ -337,7 +340,7 @@ this.  However, Kitty is not fully xterm compatible.  The author suggested to
 ignore the "xterm-" prefix and use the terminfo entry anyway, so that is what
 happens now, the builtin xterm termcap entries are not used.  However, the
 t_RV is set, otherwise other things would not work, such as automatically
-setting 'ttymouse' to "sgr".
+setting 'ttymouse' to "sgr" (at least until |t_XM| is being used for this).
 
 It is not clear why kitty sets $TERM to "xterm-kitty", the terminal isn't
 really xterm compatible.  "kitty" would be more appropriate, but a terminfo
@@ -446,6 +449,8 @@ Added by Vim (there are no standard codes for these):
                xterm and other terminal emulators)  The
                response is stored in |v:termresponse| |xterm-8bit|
                |'ttymouse'| |xterm-codes|
+       t_XM    enable/disable mouse reporting,                 *t_XM* *'t_XM'*
+               see |mouse-reporting| below
        t_RK    request terminal keyboard protocol state;       *t_RK* *'t_RK'*
                sent after |t_TI|
        t_u7    request cursor position (for xterm)             *t_u7* *'t_u7'*
@@ -499,6 +504,21 @@ t_SH must take one argument:
 t_RS is sent only if the response to t_RV has been received.  It is not used
 on Mac OS when Terminal.app could be recognized from the termresponse.
 
+                                                       *mouse-reporting*
+Many terminals can report mouse clicks and some can report mouse movement and
+dragging.  Vim needs to know what codes are being used for this.
+
+The "XM" terminfo/termcap entry is used for this.  Vim also has the 'ttymouse'
+option to specify the mouse protocol being used.  See the option for the
+possible values.
+
+If Vim can read the "XM" terminfo/termcap entry then it will be used for
+enabling and disabling the mouse reporting.  If it is missing, then the value
+from 'ttymouse' is used to decide how to do this.
+
+If the "XM" entry exists and the first number is "1006" then 'ttymouse' will
+be set to "sgr", unless it was already set earlier.
+
 
 KEY CODES                                              *terminal-key-codes*
 Note: Use the <> form if possible
index c7fefa6d82a5f44b5c9df1ee3470a54cc1935439..be14871779c2496200c76246484f589e4911940b 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 9.0.  Last change: 2022 Dec 31
+*todo.txt*      For Vim version 9.0.  Last change: 2023 Jan 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -54,20 +54,15 @@ Upcoming larger works:
 
 Further Vim9 improvements, possibly after launch:
 - implement :class and :interface: See |vim9-classes|  #11544
-    class members: add test for read/write access
-       Test for E1337
-    Should object members be declared with "var"?  Looks more normal.
-    Don't use "class method" in the help but use "class function", more people
-    are used to that.
-    implement class functions: static def Method()
-    Disallow shadowing class members, e.g. by function arguments.
-    tv_equal() should compare values, not identity.
+    inheritance: how about super()?
+    inheritance: new() method from parent used in child?
     import/export of a class
-    using a class name as a type
-    garbage collection: set_ref_in_item(): Mark items in class as used ?
     type() should return different type for each class?
+    give error for shadowing (variable and argument) when defining a class or
+    interface, not later when compiling it.
     object empty(), len() - can class define a method to be used for them?
     how about lock/unlock?
+    When checking "implements" also check types of members and function args.
 - implement :type
 - implement :enum
 - Use Vim9 for more runtime files.
@@ -79,6 +74,10 @@ Further Vim9 improvements, possibly after launch:
 Information missing in terminfo:
 Priority:
 - t_RV request terminal version string; xterm: "\033[>c"
+    change in terminfo for "RV" uses the wrong escape sequence... ?
+Mouse support:
+    on/off: hard coded in mch_setmouse() - use "XM" terminfo/termcap entry;
+       If it starts with "\E[?1006;1000%" then set 'ttymouse' to "sgr".
 Codes used for focus gained and lost (currently using use_xterm_like_mouse())
   termcodes are hard-coded in set_termname(), not named.
 - t_fe enable focus-event tracking
@@ -233,9 +232,7 @@ Terminal emulator window:
 - When 'encoding' is not utf-8, or the job is using another encoding, setup
   conversions.
 
-Patch adds showcmd() function  #11708  - tests missing StopVimInTerminal()
-
-Some setaf/setab/t_AF/t_AB values support RGB somehow?  Can we use that?
+Patch adds showcmd() function  #11708
 
 Crash when a variable is removed while listing variables (Issue #11435)
 
index ab2005ef5067fe2c6f9e1aded80e25f8b0cf8920..fe7e906ccbe2ce6fb02d0009dcfb30132fce972b 100644 (file)
@@ -1,4 +1,4 @@
-*userfunc.txt* For Vim version 9.0.  Last change: 2022 Nov 17
+*userfunc.txt* For Vim version 9.0.  Last change: 2023 Jan 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -187,12 +187,21 @@ See |:verbose-cmd| for more information.
                        If "[expr]" is not given, the number 0 is returned.
                        When a function ends without an explicit ":return",
                        the number 0 is returned.
+
                        In a :def function *E1095* is given if unreachable
                        code follows after the `:return`.
                        In legacy script there is no check for unreachable
                        lines, thus there is no warning if commands follow
-                       `:return`.
-
+                       `:return`.  Also, there is no check if the following
+                       line contains a valid command.  Forgetting the line
+                       continuation backslash may go unnoticed: >
+                               return 'some text'
+                                      .. ' some more text'
+<                      Will happily return "some text" without an error.  It
+                       should have been: >
+                               return 'some text'
+                                      \ .. ' some more text'
+<
                        If the ":return" is used after a |:try| but before the
                        matching |:finally| (if present), the commands
                        following the ":finally" up to the matching |:endtry|
index cabe55b31682155da3004058efd30d297d9cb372..135b3093bba2ea0128783d1f3ae3746f0500022b 100644 (file)
@@ -1,4 +1,4 @@
-*vim9class.txt*        For Vim version 9.0.  Last change: 2022 Dec 20
+*vim9class.txt*        For Vim version 9.0.  Last change: 2023 Jan 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -261,10 +261,22 @@ prefix: >
              totalSize += this.size
           enddef
        endclass
+<                                                      *E1340* *E1341*
+Since the name is used as-is, shadowing the name by a function argument name
+or variable name is not allowed.
+
+Just like object members the access can be made private by using an underscore
+as the first character in the name, and it can be made public by prefixing
+"public": >
+       class OtherThing
+          static total: number # anybody can read, only class can write
+          static _sum: number          # only class can read and write
+          public static result: number # anybody can read and write
+       endclass
 <
-                                               *class-method*
-Class methods are also declared with "static".  They have no access to object
-members, they cannot use the "this" keyword. >
+                                               *class-function*
+Class functions are also declared with "static".  They have no access to
+object members, they cannot use the "this" keyword. >
 
        class OtherThing
           this.size: number
@@ -320,6 +332,9 @@ a number.  This example extends the one above: >
           enddef
        endclass
 
+If a class declares to implement an interface, all the items specified in the
+interface must appear in the class, with the same types. *E1348* *E1349*
+
 The interface name can be used as a type: >
 
        var shapes: list<HasSurface> = [
@@ -372,9 +387,11 @@ once.  They can appear in any order, although this order is recommended: >
        implements InterfaceName, OtherInterface
        specifies SomeInterface
 <                                                      *extends*
-A class can extend one other class.
-                                                       *implements*
-A class can implement one or more interfaces.
+A class can extend one other class. *E1352* *E1353* *E1354*
+                                               *implements* *E1346* *E1347*
+A class can implement one or more interfaces.  The "implements" keyword can
+only appear once *E1350* .  Multiple interfaces can be specified, separated by
+commas.  Each interface name can appear only once. *E1351*
                                                        *specifies*
 A class can declare its interface, the object members and methods, with a
 named interface.  This avoids the need for separately specifying the
@@ -416,10 +433,10 @@ prefixed with `:export`: >
 
        export interface InterfaceName
        endinterface
-
+<                                                      *E1344*
 An interface can declare object members, just like in a class but without any
 initializer.
-
+                                                       *E1345*
 An interface can declare methods with `:def`, including the arguments and
 return type, but without the body and without `:enddef`.  Example: >
 
@@ -428,8 +445,10 @@ return type, but without the body and without `:enddef`.  Example: >
           def Surface(): number
        endinterface
 
+An interface name must start with an uppercase letter. *E1343*
 The "Has" prefix can be used to make it easier to guess this is an interface
 name, with a hint about what it provides.
+An interface can only be defined in a |Vim9| script file.  *E1342*
 
 
 Default constructor ~
@@ -449,8 +468,6 @@ Then The default constructor will be: >
        def new(this.name = v:none, this.age = v:none, this.gender = v:none)
        enddef
 
-All object members will be used, also private access ones.
-
 The "= v:none" default values make the arguments optional.  Thus you can also
 call `new()` without any arguments.  No assignment will happen and the default
 value for the object members will be used.  This is a more useful example,
@@ -472,6 +489,12 @@ Note that you cannot use another default value than "v:none" here.  If you
 want to initialize the object members, do it where they are declared.  This
 way you only need to look in one place for the default values.
 
+All object members will be used in the default constructor, also private
+access ones.
+
+If the class extends another one, the object members of that class will come
+first.
+
 
 Multiple constructors ~
 
@@ -610,6 +633,22 @@ type checking will make sure it works as you intended.  This rules out
 polymorphism, which we don't really need anyway.
 
 
+Single inheritance and interfaces ~
+
+Some languages support multiple inheritance.  Although that can be useful in
+some cases, it makes the rules of how a class works quite complicated.
+Instead, using interfaces to declare what is supported is much simpler.  The
+very popular Java language does it this way, and it should be good enough for
+Vim.  The "keep it simple" rule applies here.  
+
+Explicitly declaring that a class supports an interface makes it easy to see
+what a class is intended for.  It also makes it possible to do proper type
+checking.  When an interface is changed any class that declares to implement
+it will be checked if that change was also changed.  The mechanism to assume a
+class implements an interface just because the methods happen to match is
+brittle and leads to obscure problems, let's not do that.
+
+
 Using "this.member" everywhere ~
 
 The object members in various programming languages can often be accessed in
@@ -628,22 +667,6 @@ also directly clear which variable references are object members and which
 aren't.
 
 
-Single inheritance and interfaces ~
-
-Some languages support multiple inheritance.  Although that can be useful in
-some cases, it makes the rules of how a class works quite complicated.
-Instead, using interfaces to declare what is supported is much simpler.  The
-very popular Java language does it this way, and it should be good enough for
-Vim.  The "keep it simple" rule applies here.  
-
-Explicitly declaring that a class supports an interface makes it easy to see
-what a class is intended for.  It also makes it possible to do proper type
-checking.  When an interface is changed any class that declares to implement
-it will be checked if that change was also changed.  The mechanism to assume a
-class implements an interface just because the methods happen to match is
-brittle and leads to obscure problems, let's not do that.
-
-
 Using class members ~
 
 Using "static member" to declare a class member is very common, nothing new
@@ -658,6 +681,55 @@ quite a bit of space, and when the class is renamed all these places need to
 be changed too.
 
 
+Declaring object and class members ~
+
+The main choice is whether to use "var" as with variable declarations.
+TypeScript does not use it: >
+       class Point {
+         x: number;
+         y = 0;
+       }
+
+Following that Vim object members could be declared like this: >
+       class Point
+         this.x: number
+         this.y = 0
+       endclass
+
+Some users pointed out that this looks more like an assignment than a
+declaration.  Adding "var" changes that: >
+       class Point
+         var this.x: number
+         var this.y = 0
+       endclass
+
+We also need to be able to declare class members using the "static" keyword.
+There we can also choose to leave out "var": >
+       class Point
+         var this.x: number
+         static count = 0
+       endclass
+
+Or do use it, before "static": >
+       class Point
+         var this.x: number
+         var static count = 0
+       endclass
+
+Or after "static": >
+       class Point
+         var this.x: number
+         static var count = 0
+       endclass
+
+This is more in line with "static def Func()".
+
+There is no clear preference whether to use "var" or not.  The two main
+reasons to leave it out are:
+1. TypeScript, Java and other popular languages do not use it.
+2. Less clutter.
+
+
 Using "ClassName.new()" to construct an object ~
 
 Many languages use the "new" operator to create an object, which is actually
diff --git a/runtime/syntax/editorconfig.vim b/runtime/syntax/editorconfig.vim
new file mode 100644 (file)
index 0000000..6740624
--- /dev/null
@@ -0,0 +1,21 @@
+" Vim syntax file
+" Language:     EditorConfig
+" Maintainer:   Gregory Anders <greg@gpanders.com>
+" Last Change:  2023-01-03
+
+if exists('b:current_syntax')
+  finish
+endif
+
+runtime! syntax/dosini.vim
+unlet! b:current_syntax
+
+syntax match editorconfigUnknownProperty "^\s*\zs\w\+\ze\s*="
+
+syntax keyword editorconfigProperty root charset end_of_line indent_style
+syntax keyword editorconfigProperty indent_size tab_width max_line_length
+syntax keyword editorconfigProperty trim_trailing_whitespace insert_final_newline
+
+hi def link editorconfigProperty dosiniLabel
+
+let b:current_syntax = 'editorconfig'
index e6651b8a06d7b780b2bbb7535f909cdcd8a64def..ae5272a47c0d234f6ee4324bd781ed1302c57e49 100644 (file)
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:    Vim 9.0 script
 " Maintainer:  Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
-" Last Change: December 20, 2022
-" Version:     9.0-17
+" Last Change: Jan 08, 2023
+" Version:     9.0-18
 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM
 " Automatically generated keyword lists: {{{1
 
@@ -244,7 +244,8 @@ endif
 syn cluster    vimFuncList     contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID
 syn cluster    vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimEnvvar,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLetHereDoc,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand
 syn match      vimFunction     "\<\(fu\%[nction]\)!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*("       contains=@vimFuncList nextgroup=vimFuncBody
-syn match      vimFunction     "\<def!\=\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
+syn match      vimFunction     "\<def!\=\s\+\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
+"syn match     vimFunction     "\<def!\=\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody
 
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
  syn region    vimFuncBody  contained  fold start="\ze\s*("    matchgroup=vimCommand end="\<\(endf\>\|endfu\%[nction]\>\|enddef\>\)"           contains=@vimFuncBodyList