]> granicus.if.org Git - vim/commitdiff
Update runtime files.
authorBram Moolenaar <Bram@vim.org>
Thu, 16 Mar 2017 16:41:02 +0000 (17:41 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 16 Mar 2017 16:41:02 +0000 (17:41 +0100)
35 files changed:
runtime/doc/editing.txt
runtime/doc/eval.txt
runtime/doc/if_pyth.txt
runtime/doc/map.txt
runtime/doc/motion.txt
runtime/doc/options.txt
runtime/doc/pattern.txt
runtime/doc/quickfix.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/doc/usr_02.txt
runtime/doc/usr_41.txt
runtime/doc/version8.txt
runtime/filetype.vim
runtime/ftplugin/hamster.vim
runtime/ftplugin/sql.vim
runtime/ftplugin/tmux.vim
runtime/indent/dtd.vim
runtime/indent/eiffel.vim
runtime/indent/eterm.vim
runtime/indent/framescript.vim
runtime/indent/java.vim
runtime/indent/ld.vim
runtime/indent/make.vim
runtime/indent/readline.vim
runtime/indent/sas.vim [new file with mode: 0644]
runtime/indent/scala.vim
runtime/indent/tcl.vim
runtime/indent/tcsh.vim
runtime/indent/treetop.vim
runtime/indent/xf86conf.vim
runtime/indent/xinetd.vim
runtime/syntax/erlang.vim
runtime/syntax/scala.vim
runtime/syntax/tmux.vim

index 17d8a524863f73a7e3285a591e7604a38ef64362..62bc062fee584ad364dd5d4b8d8255a138c8881b 100644 (file)
@@ -276,7 +276,7 @@ If you want to keep the changed buffer without saving it, switch on the
 
                                                        *:vie* *:view*
 :vie[w][!] [++opt] [+cmd] file
-                       When used in Ex mode: Leave |Ex mode|, go back to
+                       When used in Ex mode: Leave |Ex-mode|, go back to
                        Normal mode.  Otherwise same as |:edit|, but set
                        'readonly' option for this buffer.  {not in Vi}
 
index f731fba2ebcd8f8140d1ce86ad9739e3e77b6ec6..efa5b9dd053964d356fe1bb62d7424cccdae317a 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*     For Vim version 8.0.  Last change: 2017 Mar 04
+*eval.txt*     For Vim version 8.0.  Last change: 2017 Mar 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1904,6 +1904,8 @@ v:termresponse    The escape sequence returned by the terminal for the |t_RV|
 
                                        *v:testing* *testing-variable*
 v:testing      Must be set before using `test_garbagecollect_now()`.
+               Also, when set certain error messages won't be shown for 2
+               seconds. (e.g. "'dictionary' option is empty") 
 
                                *v:this_session* *this_session-variable*
 v:this_session Full filename of the last loaded or saved session file.  See
@@ -7797,14 +7799,6 @@ test_autochdir()                                 *test_autochdir()*
                Set a flag to enable the effect of 'autochdir' before Vim
                startup has finished.
 
-                                               *test_disable_char_avail()*
-test_disable_char_avail({expr})
-               When {expr} is 1 the internal char_avail() function will
-               return |FALSE|.  When {expr} is 0 the char_avail() function will
-               function normally.
-               Only use this for a test where typeahead causes the test not
-               to work.  E.g., to trigger the CursorMovedI autocommand event.
-
 test_garbagecollect_now()                       *test_garbagecollect_now()*
                Like garbagecollect(), but executed right away.  This must
                only be called directly to avoid any structure to exist
@@ -7840,6 +7834,18 @@ test_null_partial()                                      *test_null_partial()*
 test_null_string()                                     *test_null_string()*
                Return a String that is null. Only useful for testing.
 
+test_override({name}, {val})                           *test_override()*
+               Overrides certain parts of Vims internal processing to be able
+               to run tests. Only to be used for testing Vim!
+               The override is enabled when {val} is non-zero and removed
+               when {val} is zero.
+               Current supported values for name are: 
+
+               name         effect when {val} is non-zero ~
+               redraw       disable the redrawing() function
+               char_avail   disable the char_avail() function
+               ALL          clear all overrides ({val} is not used)
+
 test_settime({expr})                                   *test_settime()*
                Set the time Vim uses internally.  Currently only used for
                timestamps in the history, as they are used in viminfo, and
index 0be8a3196d6241aeee50e6c11c0d63026a76c011..6f1c202d9a71dc0e0125ea86df0b1d73165a0705 100644 (file)
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 8.0.  Last change: 2017 Feb 18
+*if_pyth.txt*   For Vim version 8.0.  Last change: 2017 Mar 09
 
 
                  VIM REFERENCE MANUAL    by Paul Moore
@@ -17,6 +17,7 @@ The Python Interface to Vim                           *python* *Python*
 9. Dynamic loading                             |python-dynamic|
 10. Python 3                                   |python3|
 11. Python X                                   |python_x|
+12. Building with Python support               |python-building|
 
 {Vi does not have any of these commands}
 
@@ -879,5 +880,27 @@ If a user prefers Python 2 and want to fallback to Python 3, he needs to set
          set pyx=3
        endif
 
+==============================================================================
+12. Building with Python support                       *python-building*
+
+A few hints for building with Python 2 or 3 support.
+
+UNIX
+
+See src/Makefile for how to enable including the Python interface.
+
+On Ubuntu you will want to install these packages for Python 2:
+       python
+       python-dev
+For Python 3:
+       python3
+       pytyon3-dev
+For Python 3.6:
+       python3.6
+       pytyon3.6-dev
+
+If you have more than one version of Python 3, you need to link python3 to the
+one you prefer, before running configure.
+
 ==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
index e644f832c5098d460172c676fce41e3776a88e2f..7d723cea93a4cfdcff6abdaee26a7faf87f0c4d0 100644 (file)
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 8.0.  Last change: 2016 Oct 15
+*map.txt*       For Vim version 8.0.  Last change: 2017 Mar 10
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -584,7 +584,8 @@ Upper and lowercase differences are ignored.
 
                                                        *map-comments*
 It is not possible to put a comment after these commands, because the '"'
-character is considered to be part of the {lhs} or {rhs}.
+character is considered to be part of the {lhs} or {rhs}. However, one can
+use |", since this starts a new, empty command with a comment.
 
                                                        *map_bar* *map-bar*
 Since the '|' character is used to separate a map command from the next
index ba37c87a52ca73fa0d0b74bb4f507884e19ef155..673d1c572a0a2de204aeef2668e49accdd12b538 100644 (file)
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 8.0.  Last change: 2016 Nov 24
+*motion.txt*    For Vim version 8.0.  Last change: 2017 Mar 12
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -193,7 +193,7 @@ l           or                                      *l*
 
                                                        *$* *<End>* *<kEnd>*
 $  or <End>            To the end of the line.  When a count is given also go
-                       [count - 1] lines downward |inclusive|.
+                       [count - 1] lines downward. |inclusive| motion.
                        In Visual mode the cursor goes to just after the last
                        character in the line.
                        When 'virtualedit' is active, "$" may move the cursor
index 4db9781721a6d320fb8ef1bd3660db5af6bddf08..9a88edb1a968f926acd4e1b0d459151479715dbe 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 8.0.  Last change: 2017 Mar 05
+*options.txt*  For Vim version 8.0.  Last change: 2017 Mar 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -727,6 +727,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        which can be easier to read at certain sizes on certain displays.
        Setting this option can sometimes cause problems if 'guifont' is set
        to its default (empty string).
+       NOTE: This option is reset when 'compatible' is set.
 
                        *'autochdir'* *'acd'* *'noautochdir'* *'noacd'*
 'autochdir' 'acd'      boolean (default off)
@@ -760,6 +761,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        - Disable the use of 'keymap' (without changing its value).
        Note that 'arabicshape' and 'delcombine' are not reset (it is a global
        option).
+       NOTE: This option is reset when 'compatible' is set.
        Also see |arabic.txt|.
 
                                        *'arabicshape'* *'arshape'*
@@ -781,6 +783,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        form.
        Arabic is a complex language which requires other settings, for
        further details see |arabic.txt|.
+       NOTE: This option is set when 'compatible' is set.
 
                        *'autoindent'* *'ai'* *'noautoindent'* *'noai'*
 'autoindent' 'ai'      boolean (default off)
@@ -993,6 +996,9 @@ A jump table for the options with a short description can be found at |Q_op|.
        the system may refuse to do this.  In that case the "auto" value will
        again not rename the file.
 
+       NOTE: This option is set to the Vi default value when 'compatible' is
+       set and to the Vim default value when 'compatible' is reset.
+
                                                *'backupdir'* *'bdir'*
 'backupdir' 'bdir'     string  (default for Amiga: ".,t:",
                                 for MS-DOS and Win32: ".,$TEMP,c:/tmp,c:/temp"
@@ -1139,6 +1145,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 <      When they are supported "\n" characters will start a new line.  If the
        expression evaluates to a |List| this is equal to using each List item
        as a string and putting "\n" in between them.
+       NOTE: This option is set to "" when 'compatible' is set.
 
                                                *'belloff'* *'bo'*
 'belloff' 'bo'         string  (default "")
@@ -1176,8 +1183,8 @@ A jump table for the options with a short description can be found at |Q_op|.
        wildmode    More matches in |cmdline-completion| available
                    (depends on the 'wildmode' setting).
 
-       This is most useful, to fine tune when in insert mode the bell should
-       be rung. For normal mode and ex commands, the bell is often rung to
+       This is most useful to fine tune when in Insert mode the bell should
+       be rung. For Normal mode and Ex commands, the bell is often rung to
        indicate that an error occurred. It can be silenced by adding the
        "error" keyword.
 
@@ -1259,6 +1266,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        Every wrapped line will continue visually indented (same amount of
        space as the beginning of that line), thus preserving horizontal blocks
        of text.
+       NOTE: This option is reset when 'compatible' is set.
 
                                                *'breakindentopt'* *'briopt'*
 'breakindentopt' 'briopt' string (default empty)
@@ -1435,6 +1443,8 @@ A jump table for the options with a short description can be found at |Q_op|.
                :exe "set cedit=\<Esc>"
 <      |Nvi| also has this option, but it only uses the first character.
        See |cmdwin|.
+       NOTE: This option is set to the Vim default value when 'compatible'
+       is reset.
 
                                *'charconvert'* *'ccv'* *E202* *E214* *E513*
 'charconvert' 'ccv'    string (default "")
@@ -1743,7 +1753,7 @@ A jump table for the options with a short description can be found at |Q_op|.
           set to its Vim default when 'compatible' is unset.
        The {effect} column summarises the change when 'compatible' is set.
 
-       option          ? set value     effect
+       option          ? set value     effect ~
 
        'allowrevins'   + off           no CTRL-_ command
        'antialias'     + off           don't use antialiased fonts
@@ -1763,7 +1773,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        'cscopepathcomp'+ 0             don't show directories in tags list
        'cscoperelative'+ off           
        'cscopetag'     + off           don't use cscope for ":tag"
-       'cscopetagorder'  0             see |cscopetagorder|
+       'cscopetagorder'+ 0             see |cscopetagorder|
        'cscopeverbose' + off           see |cscopeverbose|
        'delcombine'    + off           unicode: delete whole char combination
        'digraph'       + off           no digraphs
@@ -1813,7 +1823,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        'tildeop'       + off           tilde is not an operator
        'ttimeout'      + off           no terminal timeout
        'undofile'      + off           don't use an undo file
-       'viminfo'       - {unchanged}   {set vim default only on resetting 'cp'}
+       'viminfo'       - {unchanged}   {set Vim default only on resetting 'cp'}
        'virtualedit'   + ""            cursor can only be placed on characters
        'whichwrap'     & ""            left-right movements don't wrap
        'wildchar'      & CTRL-E        only when the current value is <Tab>
@@ -1993,7 +2003,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        existing line.  'expandtab' has no effect on these characters, a Tab
        remains a Tab.  If the new indent is greater than on the existing
        line, the remaining space is filled in the normal manner.
-       NOTE: 'copyindent' is reset when 'compatible' is set.
+       NOTE: This option is reset when 'compatible' is set.
        Also see 'preserveindent'.
 
                                                *'cpoptions'* *'cpo'* *cpo*
@@ -2354,6 +2364,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                        {not in Vi}
        Determines how many components of the path to show in a list of tags.
        See |cscopepathcomp|.
+       NOTE: This option is set to 0 when 'compatible' is set.
 
                                                *'cscopeprg'* *'csprg'*
 'cscopeprg' 'csprg'    string  (default "cscope")
@@ -2383,6 +2394,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        In the absence of a prefix (-P) for cscope. setting this option enables
        to use the basename of cscope.out path as the prefix.
        See |cscoperelative|.
+       NOTE: This option is reset when 'compatible' is set.
 
                                *'cscopetag'* *'cst'* *'nocscopetag'* *'nocst'*
 'cscopetag' 'cst'      boolean (default off)
@@ -2502,6 +2514,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        This is useful for Arabic, Hebrew and many other languages where one
        may have combining characters overtop of base characters, and want
        to remove only the combining ones.
+       NOTE: This option is reset when 'compatible' is set.
 
                                                *'dictionary'* *'dict'*
 'dictionary' 'dict'    string  (default "")
@@ -3422,6 +3435,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        The expression will be evaluated in the |sandbox| when set from a
        modeline, see |sandbox-option|.  That stops the option from working,
        since changing the buffer text is not allowed.
+       NOTE: This option is set to "" when 'compatible' is set.
 
                                        *'formatoptions'* *'fo'*
 'formatoptions' 'fo'   string (Vim default: "tcq", Vi default: "vt")
@@ -4081,31 +4095,6 @@ A jump table for the options with a short description can be found at |Q_op|.
        define one.  The default uses a different group for each occasion.
        See |highlight-default| for the default highlight groups.
 
-                                *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'*
-'hlsearch' 'hls'       boolean (default off)
-                       global
-                       {not in Vi}
-                       {not available when compiled without the
-                       |+extra_search| feature}
-       When there is a previous search pattern, highlight all its matches.
-       The type of highlighting used can be set with the 'l' occasion in the
-       'highlight' option.  This uses the "Search" highlight group by
-       default.  Note that only the matching text is highlighted, any offsets
-       are not applied.
-       See also: 'incsearch' and |:match|.
-       When you get bored looking at the highlighted matches, you can turn it
-       off with |:nohlsearch|.  This does not change the option value, as
-       soon as you use a search command, the highlighting comes back.
-       'redrawtime' specifies the maximum time spent on finding matches.
-       When the search pattern can match an end-of-line, Vim will try to
-       highlight all of the matched text.  However, this depends on where the
-       search starts.  This will be the first line in the window or the first
-       line below a closed fold.  A match in a previous line which is not
-       drawn may not continue in a newly drawn line.
-       You can specify whether the highlight status is restored on startup
-       with the 'h' flag in 'viminfo' |viminfo-h|.
-       NOTE: This option is reset when 'compatible' is set.
-
                                                *'history'* *'hi'*
 'history' 'hi'         number  (Vim default: 50, Vi default: 0,
                                                 set to 200 in |defaults.vim|)
@@ -4138,6 +4127,31 @@ A jump table for the options with a short description can be found at |Q_op|.
        When on, phonetic keyboard mapping is used.  'hkmap' must also be on.
        This is useful if you have a non-Hebrew keyboard.
        See |rileft.txt|.
+       NOTE: This option is reset when 'compatible' is set.
+
+                                *'hlsearch'* *'hls'* *'nohlsearch'* *'nohls'*
+'hlsearch' 'hls'       boolean (default off)
+                       global
+                       {not in Vi}
+                       {not available when compiled without the
+                       |+extra_search| feature}
+       When there is a previous search pattern, highlight all its matches.
+       The type of highlighting used can be set with the 'l' occasion in the
+       'highlight' option.  This uses the "Search" highlight group by
+       default.  Note that only the matching text is highlighted, any offsets
+       are not applied.
+       See also: 'incsearch' and |:match|.
+       When you get bored looking at the highlighted matches, you can turn it
+       off with |:nohlsearch|.  This does not change the option value, as
+       soon as you use a search command, the highlighting comes back.
+       'redrawtime' specifies the maximum time spent on finding matches.
+       When the search pattern can match an end-of-line, Vim will try to
+       highlight all of the matched text.  However, this depends on where the
+       search starts.  This will be the first line in the window or the first
+       line below a closed fold.  A match in a previous line which is not
+       drawn may not continue in a newly drawn line.
+       You can specify whether the highlight status is restored on startup
+       with the 'h' flag in 'viminfo' |viminfo-h|.
        NOTE: This option is reset when 'compatible' is set.
 
                                                *'icon'* *'noicon'*
@@ -4419,7 +4433,7 @@ A jump table for the options with a short description can be found at |Q_op|.
 <      Error messages will be suppressed, unless the 'debug' option contains
        "msg".
        See |indent-expression|.
-       NOTE: This option is made empty when 'compatible' is set.
+       NOTE: This option is set to "" when 'compatible' is set.
 
        The expression will be evaluated in the |sandbox| when set from a
        modeline, see |sandbox-option|.
@@ -5410,6 +5424,8 @@ A jump table for the options with a short description can be found at |Q_op|.
                        feature}
        The number of milliseconds between polls for MzScheme threads.
        Negative or zero value means no thread scheduling.
+       NOTE: This option is set to the Vim default value when 'compatible'
+       is reset.
 
                                                        *'nrformats'* *'nf'*
 'nrformats' 'nf'       string  (default "bin,octal,hex",
@@ -5475,7 +5491,8 @@ A jump table for the options with a short description can be found at |Q_op|.
        is set. Thus with the Vim default of 4 there is room for a line number
        up to 999. When the buffer has 1000 lines five columns will be used.
        The minimum value is 1, the maximum value is 10.
-       NOTE: 'numberwidth' is reset to 8 when 'compatible' is set.
+       NOTE: This option is set to the Vi default value when 'compatible' is
+       set and to the Vim default value when 'compatible' is reset.
 
                                                *'omnifunc'* *'ofu'*
 'omnifunc' 'ofu'       string  (default: empty)
@@ -5715,7 +5732,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        a Tab.
        NOTE: When using ">>" multiple times the resulting indent is a mix of
        tabs and spaces.  You might not like this.
-       NOTE: 'preserveindent' is reset when 'compatible' is set.
+       NOTE: This option is reset when 'compatible' is set.
        Also see 'copyindent'.
        Use |:retab| to clean up white space.
 
@@ -6453,9 +6470,6 @@ A jump table for the options with a short description can be found at |Q_op|.
        "-f" is not inside the quotes, because it is not part of the command
        name.  And Vim automagically recognizes the backslashes that are path
        separators.
-       For Dos 32 bits (DJGPP), you can set the $DJSYSFLAGS environment
-       variable to change the way external commands are executed.  See the
-       libc.inf file of DJGPP.
        Under MS-Windows, when the executable ends in ".com" it must be
        included.  Thus setting the shell to "command.com" or "4dos.com"
        works, but "command" and "4dos" do not work for all commands (e.g.,
@@ -6595,6 +6609,8 @@ A jump table for the options with a short description can be found at |Q_op|.
        'shelltemp' is off.
        The `system()` function does not respect this option and always uses
        temp files.
+       NOTE: This option is set to the Vim default value when 'compatible'
+       is reset.
 
                                                *'shelltype'* *'st'*
 'shelltype' 'st'       number  (default 0)
@@ -6911,7 +6927,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        mapping: ":inoremap # X^H#", where ^H is entered with CTRL-V CTRL-H.
        When using the ">>" command, lines starting with '#' are not shifted
        right.
-       NOTE: 'smartindent' is reset when 'compatible' is set.
+       NOTE: This option is reset when 'compatible' is set.
        This option is reset when 'paste' is set and restored when 'paste' is
        reset.
 
@@ -7566,6 +7582,8 @@ A jump table for the options with a short description can be found at |Q_op|.
           ignore       Ignore case
           match        Match case
           smart        Ignore case unless an upper case letter is used
+       NOTE: This option is set to the Vi default value when 'compatible' is
+       set and to the Vim default value when 'compatible' is reset.
 
                                                *'taglength'* *'tl'*
 'taglength' 'tl'       number  (default 0)
@@ -7712,6 +7730,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        compatible terminal.
        If setting this option does not work (produces a colorless UI)
        reading |xterm-true-color| might help.
+       NOTE: This option is reset when 'compatible' is set.
 
                                                *'terse'* *'noterse'*
 'terse'                        boolean (default off)
@@ -8122,6 +8141,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        The undo file is not read when 'undoreload' causes the buffer from
        before a reload to be saved for undo.
        When 'undofile' is turned off the undo file is NOT deleted.
+       NOTE: This option is reset when 'compatible' is set.
 
                                                *'undolevels'* *'ul'*
 'undolevels' 'ul'      number  (default 100, 1000 for Unix, VMS,
@@ -8377,6 +8397,8 @@ A jump table for the options with a short description can be found at |Q_op|.
 
        This option cannot be set from a |modeline| or in the |sandbox|, for
        security reasons.
+       NOTE: This option is set to the Vim default value when 'compatible'
+       is reset.
 
                                            *'virtualedit'* *'ve'*
 'virtualedit' 've'     string  (default "")
@@ -8405,6 +8427,7 @@ A jump table for the options with a short description can be found at |Q_op|.
        The `g$` command will move to the end of the screen line.
        It doesn't make sense to combine "all" with "onemore", but you will
        not get a warning for it.
+       NOTE: This option is set to "" when 'compatible' is set.
 
                        *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep*
 'visualbell' 'vb'      boolean (default off)
index 027f47bf51762dfb6f15b6d38788f8ca98f624cd..1496604983578c060f877c091ae3f76f58e2e246 100644 (file)
@@ -872,8 +872,8 @@ $   At end of pattern or in front of "\|", "\)" or "\n" ('magic' on):
        inside the Visual area put it at the start and just before the end of
        the pattern, e.g.: >
                /\%Vfoo.*ba\%Vr
-<      This works if "foo bar" (or more) was Visually selected. This: >
-               /\%Vfoo.*ba\%Vr
+<      This also works if only "foo bar" was Visually selected. This: >
+               /\%Vfoo.*bar\%V
 <      would match "foo bar" if the Visual selection continues after the "r".
        Only works for the current buffer.
 
index 2430cff32b8cd6f4e40d376f45a8f540a7c1a441..0ee24666a6bc9d5dade11ceaf493d95ecfba39bd 100644 (file)
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 8.0.  Last change: 2016 Nov 04
+*quickfix.txt*  For Vim version 8.0.  Last change: 2017 Mar 06
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -45,10 +45,13 @@ The 'errorformat' option should be set to match the error messages from your
 compiler (see |errorformat| below).
 
                                                *location-list* *E776*
-A location list is similar to a quickfix list and contains a list of positions
-in files.  A location list is associated with a window and each window can
-have a separate location list.  A location list can be associated with only
-one window.  The location list is independent of the quickfix list.
+A location list is a window-local quickfix list. You get one after commands
+like `:lvimgrep`, `:lgrep`, `:lhelpgrep`, `:lmake`, etc., which create a
+location list instead of a quickfix list as the corresponding `:vimgrep`,
+`:grep`, `:helpgrep`, `:make` do.
+A location list is associated with a window and each window can have a
+separate location list.  A location list can be associated with only one
+window.  The location list is independent of the quickfix list.
 
 When a window with a location list is split, the new window gets a copy of the
 location list.  When there are no longer any references to a location list,
index 5dc3ac69fc91b84266a9e04464456a965c6796a5..68c611b75b1e67efef8e6793275eb90b40345623 100644 (file)
@@ -427,6 +427,7 @@ $VIM_POSIX  vi_diff.txt     /*$VIM_POSIX*
 'macatsui'     options.txt     /*'macatsui'*
 'magic'        options.txt     /*'magic'*
 'makeef'       options.txt     /*'makeef'*
+'makeencoding' options.txt     /*'makeencoding'*
 'makeprg'      options.txt     /*'makeprg'*
 'mat'  options.txt     /*'mat'*
 'matchpairs'   options.txt     /*'matchpairs'*
@@ -439,6 +440,7 @@ $VIM_POSIX  vi_diff.txt     /*$VIM_POSIX*
 'maxmemtot'    options.txt     /*'maxmemtot'*
 'mco'  options.txt     /*'mco'*
 'mef'  options.txt     /*'mef'*
+'menc' options.txt     /*'menc'*
 'menuitems'    options.txt     /*'menuitems'*
 'mesg' vi_diff.txt     /*'mesg'*
 'mfd'  options.txt     /*'mfd'*
@@ -5348,6 +5350,7 @@ cino-:    indent.txt      /*cino-:*
 cino-= indent.txt      /*cino-=*
 cino-> indent.txt      /*cino->*
 cino-C indent.txt      /*cino-C*
+cino-E indent.txt      /*cino-E*
 cino-J indent.txt      /*cino-J*
 cino-L indent.txt      /*cino-L*
 cino-M indent.txt      /*cino-M*
@@ -7887,6 +7890,7 @@ python-bindeval   if_pyth.txt     /*python-bindeval*
 python-bindeval-objects        if_pyth.txt     /*python-bindeval-objects*
 python-buffer  if_pyth.txt     /*python-buffer*
 python-buffers if_pyth.txt     /*python-buffers*
+python-building        if_pyth.txt     /*python-building*
 python-chdir   if_pyth.txt     /*python-chdir*
 python-command if_pyth.txt     /*python-command*
 python-commands        if_pyth.txt     /*python-commands*
@@ -8744,7 +8748,6 @@ termresponse-variable     eval.txt        /*termresponse-variable*
 test-functions usr_41.txt      /*test-functions*
 test_alloc_fail()      eval.txt        /*test_alloc_fail()*
 test_autochdir()       eval.txt        /*test_autochdir()*
-test_disable_char_avail()      eval.txt        /*test_disable_char_avail()*
 test_garbagecollect_now()      eval.txt        /*test_garbagecollect_now()*
 test_ignore_error()    eval.txt        /*test_ignore_error()*
 test_null_channel()    eval.txt        /*test_null_channel()*
@@ -8753,6 +8756,7 @@ test_null_job()   eval.txt        /*test_null_job()*
 test_null_list()       eval.txt        /*test_null_list()*
 test_null_partial()    eval.txt        /*test_null_partial()*
 test_null_string()     eval.txt        /*test_null_string()*
+test_override()        eval.txt        /*test_override()*
 test_settime() eval.txt        /*test_settime()*
 testing        eval.txt        /*testing*
 testing-variable       eval.txt        /*testing-variable*
index 95a5ddecdb7a7c84947d9b5489b01171a8c446be..67a00bed200b0a8975cdf107c154f2473ca8a8ec 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 8.0.  Last change: 2017 Mar 05
+*todo.txt*      For Vim version 8.0.  Last change: 2017 Mar 16
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -35,6 +35,12 @@ entered there will not be repeated below, unless there is extra information.
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Using "g<" after ":for x in [1,2,3]|echom x|endfor" looks wrong. (Marcin
+Szamotulski, 2017 Mar 12)
+Also, using Ctrl-C clears the last part.
+
+Test 45 fails on MS-Windows only before resetting 'sw'. Why?
+
 +channel:
 - Try out background make plugin: 
   https://github.com/AndrewVos/vim-make-background
@@ -110,6 +116,14 @@ manager.  Problem with Motif?
 
 Memory leak in test97?  The string is actually freed.  Weird.
 
+Include rust files.  Got all permissions?
+
+dict_add_list and dict_add_dict may free item when failing. (2017 Mar 12,
+Nikolai Pavlov, #1555)
+
+Patch to add buffer name argument to taglist().
+Ordering of tags in result of taglist call. (Duncan McDougall, #1194)
+
 Add a toolbar in the terminal.  Can be global, above all windows, or specific
 for one window.
 Use tb_set(winid, [{'text': 'stop', 'cb': callback, 'hi': 'Green'}])
@@ -121,18 +135,23 @@ What if there is an invalid character?
 
 Json string with trailing \u should be an error. (Lcd)
 
+On MS-Windows with 'clipboard' set to "unnamed" this doesn't work to double
+lines: :g/^/normal yyp   On Unix it works OK.  (Bryce Orgill, 2016 Nov 5)
+Another example 2017 Mar 10.
+
 Multi-byte bug: dv} splits char. (Urtica Dioica, 2017 Jan 9)
 
 When session file has name in argument list but the buffer was deleted, the
 buffer is not deleted when using the session file. (#1393)
 Should add the buffer in hidden state.
 
-When "gf" excludes following ":99", jump to line 99.
-Also when editing a file foo.txt:99 ?
-
 When an item in the quickfix list has a file name that does not exist, behave
 like the item was not a match for :cnext.
 
+Patch to test regexp classes. (Dominique, 2017 Mar 13, #1560)
+Do we need to adjust the implementation?
+Make different classes that depend on the system and that don't.
+
 Wrong diff highlighting with three files. (2016 Oct 20, #1186)
 Also get E749 on exit.
 Another example in #1309
@@ -146,19 +165,11 @@ already typed. (Dominique, 2017 Jan 26)
 When deleting a mark or register, leave a tombstone, so that it's also deleted
 when writing viminfo (and the delete was the most recent action). #1339
 
-Patch to add 'makeencoding', useful when the system encoding differs from
-Vim's 'encoding' setting. (Ken Takata, 2017 Jan 31)
-
-Patch to adjust marks when adding a new line to the end of buffer in diff
-mode. (James McCoy, 2016 Dec 14, #1329)
-
 Suggestion to improve pt-br spell checking. (Marcelo D Montu, 2016 Dec 15,
 #1330)
 
 Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17)
 
-Patch to fix that test87 fails on Arch Linux. (Jesin, 2017 Feb 10)
-
 Completion for :!cmd shows each match twice. #1435
 
 GTK: When adding a timer from 'balloonexpr' it won't fire, because
@@ -176,14 +187,18 @@ highlighting for both stl and stlnc.  Patch by Ken Hamada (itchyny, 2016 Dec 11)
 Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca
 Fuentes, 2017 Feb 12, #1470)
 
+Check for errors E704 and E705 only does VAR_FUNC, should also do VAR_PARTIAL.
+(Nikolai Pavlov, 2017 Mar 13, #1557)
+Make a function to check for function-like type?
+
 Screen updated delayed when using CTRL-O u in Insert mode.
 (Barlik, #1191)  Perhaps because status message?
 
-Patch to add buffer name argument to taglist().
-Ordering of tags in result of taglist call. (Duncan McDougall, #1194)
-
-Patch to fix that b_ind_has_comment is not correctly reset. (Christian
-Brabandt, 2017 Feb 14, closes #1475)
+Implement optional arguments for functions.
+    func Foo(start, count = 1 all = 1)
+    call Foo(12)
+    call Foo(12, all = 0)
+    call Foo(12, 15, 0)
 
 writefile() does not abort as soon as an error is found. (Nikolai Pavlov,
 2017 Feb 14, #1476)
@@ -237,9 +252,6 @@ Useful to restore it.  Is there another solution?
 "ci[" does not look for next [ like ci" does look for next ".
 (J.F. 2017 Jan 7)
 
-On MS-Windows with 'clipboard' set to "unnamed" this doesn't work to double
-lines: :g/^/normal yyp   On Unix it works OK.  (Bryce Orgill, 2016 Nov 5)
-
 Patch for wrong cursor position on wrapped line, involving breakindent.
 (Ozaki Kiichi, 2016 Nov 25)
 Does this also fix #1408 ?
@@ -261,9 +273,6 @@ Patch to make it possible to extend a list with itself.
 
 Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24)
 
-Patch to add new regexp classes :ident:, :keyword:, :fname:.
-(ichizok, 2016 Jan 12, #1373)
-
 Patch to add trim() function. (Bukn, 2016 Nov 25, #1280)
 
 Patch to add MODIFIED_BY to MSVC build file. (Chen Lei, 2016 Nov 24, #1275)
@@ -1061,6 +1070,9 @@ Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers,
 Patch to improve equivalence classes in regexp patterns.
 (Christian Brabandt, 2013 Jan 16, update Jan 17)
 
+Patch to add new regexp classes :ident:, :keyword:, :fname:.
+(ichizok, 2016 Jan 12, #1373)
+
 Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24)
 But use Gnome instead of GTK?
 
index 566a1976da9db5c5394e72e7f043300497d67686..2ccde79ec14e54325139c1a091cf6d3a341ad7f7 100644 (file)
@@ -1,4 +1,4 @@
-*usr_02.txt*   For Vim version 8.0.  Last change: 2016 Jan 16
+*usr_02.txt*   For Vim version 8.0.  Last change: 2017 Mar 14
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -554,7 +554,7 @@ Summary:                                    *help-summary*  >
 8) Ex-commands always start with ":", so to go to the :s command help: >
        :help :s
 
-9) Commands specifically for debugging start with ">".  To go to to the help
+9) Commands specifically for debugging start with ">".  To go to the help
    for the "cont" debug command: >
        :help >cont
 
index 32a8f6d87808168508ea09bda1dee6ee1f5494c5..4bffb477c9230f65e34b5efc592dec3d935376a0 100644 (file)
@@ -1,4 +1,4 @@
-*usr_41.txt*   For Vim version 8.0.  Last change: 2017 Mar 01
+*usr_41.txt*   For Vim version 8.0.  Last change: 2017 Mar 09
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -922,8 +922,8 @@ Testing:                                *test-functions*
        assert_fails()          assert that a function call fails
        test_alloc_fail()       make memory allocation fail
        test_autochdir()        enable 'autochdir' during startup
-       test_disable_char_avail()       test without typeahead
-       test_garbagecollect_now()       free memory right now
+       test_override()         test with Vim internal overrides
+       test_garbagecollect_now()   free memory right now
        test_ignore_error()     ignore a specific error message
        test_null_channel()     return a null Channel
        test_null_dict()        return a null Dict
index 5afe38526d7190d20cbf30412ca83f9070ab4725..c091536fc287909e9e22dcc474fd746cc99dbab6 100644 (file)
@@ -1,4 +1,4 @@
-*version8.txt*  For Vim version 8.0.  Last change: 2017 Feb 24
+*version8.txt*  For Vim version 8.0.  Last change: 2017 Mar 16
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -296,7 +296,7 @@ New and extended functions: ~
 |systemlist()|         get the result of a shell command as a list
 |test_alloc_fail()|    make memory allocation fail
 |test_autochdir()|     test 'autochdir' functionality
-|test_disable_char_avail()| test without typeahead
+test_disable_char_avail() test without typeahead (removed later)
 |test_garbagecollect_now()| free memory right now
 |test_null_channel()|  return a null Channel
 |test_null_dict()|     return a null Dict
@@ -426,7 +426,7 @@ When no vimrc file is found, the |defaults.vim| script is loaded to set more
 useful default values for new users.  That includes setting 'nocompatible'.
 Thus Vim no longer starts up in Vi compatible mode.  If you do want that,
 either create a .vimrc file that does "set compatible" or start Vim with
-"Vim -C".
+"vim -C".
 
 
 Support removed ~
@@ -1866,7 +1866,7 @@ Files:        runtime/doc/eval.txt, src/eval.c, src/testdir/test60.in,
            src/testdir/test60.ok
 
 Patch 7.4.237 (after 7.4.236)
-Problem:    When some patches was not included has("patch-7.4.123") may return
+Problem:    When some patches were not included has("patch-7.4.123") may return
            true falsely.
 Solution:   Check for the specific patch number.
 Files:     runtime/doc/eval.txt, src/eval.c
index 20e9af4a893b32d5773abbed708b9da5a6009471..4bdfeb2204abdc2c69c8ce0c9ddb0667426bb73e 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2017 Mar 04
+" Last Change: 2017 Mar 13
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1366,6 +1366,9 @@ endfunc
 " Not Quite C
 au BufNewFile,BufRead *.nqc                    setf nqc
 
+" NSE - Nmap Script Engine - uses Lua syntax
+au BufNewFile,BufRead *.nse                    setf lua
+
 " NSIS
 au BufNewFile,BufRead *.nsi,*.nsh              setf nsis
 
@@ -2281,7 +2284,7 @@ au BufNewFile,BufRead .tidyrc,tidyrc              setf tidy
 au BufNewFile,BufRead *.tf,.tfrc,tfrc          setf tf
 
 " tmux configuration
-au BufNewFile,BufRead tmux*.conf               setf tmux
+au BufNewFile,BufRead {.,}tmux*.conf           setf tmux
 
 " TPP - Text Presentation Program
 au BufNewFile,BufReadPost *.tpp                        setf tpp
index c23adc4232d895182592911c697b0b247481cfe2..29711fb0936196bd967c752289d048d8f91ccf65 100644 (file)
@@ -1,8 +1,8 @@
 " Vim filetype plugin
 " Language:    Hamster Script
 " Version:     2.0.6.0
-" Maintainer:  David Fishburn <fishburn@ianywhere.com>
-" Last Change: Wed Nov 08 2006 12:03:09 PM
+" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
+" Last Change: 2017 Mar 07
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -13,6 +13,7 @@ endif
 let b:did_ftplugin = 1
 
 let s:cpo_save = &cpo
+set cpo&vim
 set cpo-=C
 
 let b:undo_ftplugin = "setl fo< com< tw< commentstring<"
index c2bc857947b9999d3df7e21f5b5c11c1cb4464cf..4d6fcd9564eb91d405dd1d93dee07879f0c08f50 100644 (file)
@@ -1,8 +1,8 @@
 " SQL filetype plugin file
 " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
-" Version:     11.0
+" Version:     12.0
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Last Change: 2013 May 13
+" Last Change: 2017 Mar 07
 " Download:    http://vim.sourceforge.net/script.php?script_id=454
 
 " For more details please use:
 "
 " History
 "
+" Version 12.0 (April 2013)
+"
+" NF: Added support for "BEGIN TRY ... END TRY ... BEGIN CATCH ... END CATCH
+" BF: This plugin is designed to be used with other plugins to enable the 
+"     SQL completion with Perl, Python, Java, ...  The loading mechanism 
+"     was not checking if the SQL objects were created, which can lead to 
+"     the plugin not loading the SQL support.
+"
 " Version 11.0 (May 2013)
 "
 " NF: Updated to use SyntaxComplete's new regex support for syntax groups.
 
 
 " Only do this when not done yet for this buffer
-if exists("b:did_ftplugin")
-  finish
+" This ftplugin can be used with other ftplugins.  So ensure loading
+" happens if all elements of this plugin have not yet loaded.
+if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql'
+    finish
 endif
 
 let s:save_cpo = &cpo
 set cpo&vim
 
 " Disable autowrapping for code, but enable for comments
-" t    Auto-wrap text using textwidth
+" t     Auto-wrap text using textwidth
 " c     Auto-wrap comments using textwidth, inserting the current comment
 "       leader automatically.
 setlocal formatoptions-=t
@@ -171,6 +181,9 @@ if !exists("*SQL_SetType")
         if exists("b:current_syntax")
             " echomsg 'SQLSetType - clearing syntax'
             syntax clear
+            if exists("b:current_syntax")
+                unlet b:current_syntax
+            endif
         endif
         if exists("b:did_indent")
             " echomsg 'SQLSetType - clearing indent'
@@ -187,7 +200,7 @@ if !exists("*SQL_SetType")
         " Do not specify a buffer local variable if it is
         " the default value
         if new_sql_type == 'sql'
-          let new_sql_type = 'sqloracle'
+            let new_sql_type = 'sqloracle'
         endif
         let b:sql_type_override = new_sql_type
 
@@ -234,25 +247,26 @@ if exists("b:sql_type_override")
     " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim'
     if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != ''
         exec 'runtime ftplugin/'.b:sql_type_override.'.vim'
-    " else
-    "     echomsg 'ftplugin/'.b:sql_type_override.' not exist, using default'
+        " else
+        "     echomsg 'ftplugin/'.b:sql_type_override.' not exist, using default'
     endif
 elseif exists("g:sql_type_default")
     " echo 'sourcing global ftplugin/'.g:sql_type_default.'.vim'
     if globpath(&runtimepath, 'ftplugin/'.g:sql_type_default.'.vim') != ''
         exec 'runtime ftplugin/'.g:sql_type_default.'.vim'
-    " else
-    "     echomsg 'ftplugin/'.g:sql_type_default.'.vim not exist, using default'
+        " else
+        "     echomsg 'ftplugin/'.g:sql_type_default.'.vim not exist, using default'
     endif
 endif
 
 " If the above runtime command succeeded, do not load the default settings
-if exists("b:did_ftplugin")
-  finish
+" as they should have already been loaded from a previous run.
+if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql'
+    finish
 endif
 
 let b:undo_ftplugin = "setl comments< formatoptions< define< omnifunc<" .
-                   \ " | unlet! b:browsefilter b:match_words"
+            \ " | unlet! b:browsefilter b:match_words"
 
 " Don't load another plugin for this buffer
 let b:did_ftplugin     = 1
@@ -261,7 +275,7 @@ let b:current_ftplugin = 'sql'
 " Win32 can filter files in the browse dialog
 if has("gui_win32") && !exists("b:browsefilter")
     let b:browsefilter = "SQL Files (*.sql)\t*.sql\n" .
-         \ "All Files (*.*)\t*.*\n"
+                \ "All Files (*.*)\t*.*\n"
 endif
 
 " Some standard expressions for use with the matchit strings
@@ -312,14 +326,24 @@ if !exists("b:match_words")
     " WHEN column_not_found THEN
     " WHEN OTHERS THEN
     "
+    " begin try
+    " end try
+    " begin catch
+    " end catch
+    "
     " create[ or replace] procedure|function|event
-                " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'.
+    " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'.
 
     " For ColdFusion support
     setlocal matchpairs+=<:>
     let b:match_words = &matchpairs .
-               \ ',\<begin\>:\<end\>\W*$,'.
-               \
+                \ ',\%(\<begin\)\%(\s\+\%(try\|catch\)\>\)\@!:\<end\>\W*$,'.
+                \
+                \ '\<begin\s\+try\>:'.
+                \ '\<end\s\+try\>:'.
+                \ '\<begin\s\+catch\>:'.
+                \ '\<end\s\+catch\>,'.
+                \
                 \ s:notend . '\<if\>:'.
                 \ '\<elsif\>\|\<elseif\>\|\<else\>:'.
                 \ '\<end\s\+if\>,'.
@@ -339,14 +363,14 @@ if !exists("b:match_words")
                 \ '\%(\<create\s\+' . s:or_replace . '\)\?'.
                 \ '\%(function\|procedure\|event\):'.
                 \ '\<returns\?\>'
-                " \ '\<begin\>\|\<returns\?\>:'.
-                " \ '\<end\>\(;\)\?\s*$'
-                " \ '\<exception\>:'.s:when_no_matched_or_others.
-                " \ ':\<when\s\+others\>,'.
-               "
-                " \ '\%(\<exception\>\|\%('. s:notend . '\<case\>\)\):'.
-                " \ '\%(\<default\>\|'.s:when_no_matched_or_others.'\):'.
-                " \ '\%(\%(\<when\s\+others\>\)\|\<end\s\+case\>\),' .
+    " \ '\<begin\>\|\<returns\?\>:'.
+    " \ '\<end\>\(;\)\?\s*$'
+    " \ '\<exception\>:'.s:when_no_matched_or_others.
+    " \ ':\<when\s\+others\>,'.
+    "
+    " \ '\%(\<exception\>\|\%('. s:notend . '\<case\>\)\):'.
+    " \ '\%(\<default\>\|'.s:when_no_matched_or_others.'\):'.
+    " \ '\%(\%(\<when\s\+others\>\)\|\<end\s\+case\>\),' .
 endif
 
 " Define how to find the macro definition of a variable using the various
index 9c92ff9c6e0df01b0956349493ef2dbd2cecbd52..ed9154924b1e64f3ed1f4efc2793f6ca531d5508 100644 (file)
@@ -1,7 +1,8 @@
 " Vim filetype plugin file
-" Language:    Tmux config
-" Maintainer:  Eric Pruitt <eric.pruitt@gmail.com>
-" Last Change:  2017 Mar 04
+" Language:    tmux(1) configuration file
+" URL:                 https://github.com/ericpruitt/tmux.vim/
+" Maintainer:  Eric Pruitt <eric.pruitt@gmail.com>
+" Last Changed: 2017 Mar 10
 
 if exists("b:did_ftplugin")
   finish
index 779cee9e6f2e508553f5146d9230fc666857d617..5633362367465ef1ccb3637e9068cf9651fbc638 100644 (file)
@@ -84,7 +84,7 @@ function GetDTDIndent()
 
   let [declaration, end] = s:lex1(line, col)
   if declaration == ""
-    return indent + &sw
+    return indent + shiftwidth()
   elseif declaration == '--'
     " We’re looking at a comment.  Now, simply determine if the comment is
     " terminated or not.  If it isn’t, let Vim take care of that using
@@ -100,7 +100,7 @@ function GetDTDIndent()
     " Check for element name.  If none exists, indent one level.
     let [name, end] = s:lex(line, end)
     if name == ""
-      return indent + &sw
+      return indent + shiftwidth()
     endif
 
     " Check for token following element name.  This can be a specification of
@@ -113,7 +113,7 @@ function GetDTDIndent()
       let n += 1
     endwhile
     if token == ""
-      return indent + &sw
+      return indent + shiftwidth()
     endif
 
     " Next comes the content model.  If the token we’ve found isn’t a
@@ -148,7 +148,7 @@ function GetDTDIndent()
           return indent
         endif
         " TODO: Should use s:lex here on getline(v:lnum) and check for >.
-        return getline(v:lnum) =~ '^\s*>' || count(values(seen), 0) == 0 ? indent : (indent + &sw)
+        return getline(v:lnum) =~ '^\s*>' || count(values(seen), 0) == 0 ? indent : (indent + shiftwidth())
       endif
 
       " If we’ve seen an addition or exception already and this is of the same
@@ -167,7 +167,7 @@ function GetDTDIndent()
     " Check for element name.  If none exists, indent one level.
     let [name, end] = s:lex(line, end)
     if name == ""
-      return indent + &sw
+      return indent + shiftwidth()
     endif
 
     " Check for any number of attributes.
@@ -180,7 +180,7 @@ function GetDTDIndent()
       let [name, end] = s:lex(line, end)
       if name == ""
         " TODO: Should use s:lex here on getline(v:lnum) and check for >.
-        return getline(v:lnum) =~ '^\s*>' ? indent : (indent + &sw)
+        return getline(v:lnum) =~ '^\s*>' ? indent : (indent + shiftwidth())
       elseif name == ">"
         return indent
       endif
@@ -194,14 +194,14 @@ function GetDTDIndent()
       " (CDATA|NMTOKEN|NMTOKENS|ID|IDREF|IDREFS|ENTITY|ENTITIES)?
       let [value, end] = s:lex(line, end, '^\%((\|[^[:space:]]\+\)')
       if value == ""
-        return indent + &sw * 2
+        return indent + shiftwidth() * 2
       elseif value == 'NOTATION'
         " If this is a enumerated value based on notations, read another token
         " for the actual value.  If it doesn’t exist, indent three levels.
         " TODO: If validating according to above, value must be equal to '('.
         let [value, end] = s:lex(line, end, '^\%((\|[^[:space:]]\+\)')
         if value == ""
-          return indent + &sw * 3
+          return indent + shiftwidth() * 3
         endif
       endif
 
@@ -216,13 +216,13 @@ function GetDTDIndent()
       " two levels.
       let [default, end] = s:lex(line, end, '^\%("\_[^"]*"\|#\(REQUIRED\|IMPLIED\|FIXED\)\)')
       if default == ""
-        return indent + &sw * 2
+        return indent + shiftwidth() * 2
       elseif default == '#FIXED'
         " We need to look for the fixed value.  If non exists, indent three
         " levels.
         let [default, end] = s:lex(line, end, '^"\_[^"]*"')
         if default == ""
-          return indent + &sw * 3
+          return indent + shiftwidth() * 3
         endif
       endif
     endwhile
@@ -233,11 +233,11 @@ function GetDTDIndent()
     " again, if none exists, indent one level.
     let [name, end] = s:lex(line, end)
     if name == ""
-      return indent + &sw
+      return indent + shiftwidth()
     elseif name == '%'
       let [name, end] = s:lex(line, end)
       if name == ""
-        return indent + &sw
+        return indent + shiftwidth()
       endif
     endif
 
@@ -256,27 +256,27 @@ function GetDTDIndent()
     " we’re now done with this entity.
     let [value, end] = s:lex(line, end)
     if value == ""
-      return indent + &sw
+      return indent + shiftwidth()
     elseif value == 'SYSTEM' || value == 'PUBLIC'
       let [quoted_string, end] = s:lex(line, end, '\%("[^"]\+"\|''[^'']\+''\)')
       if quoted_string == ""
-        return indent + &sw * 2
+        return indent + shiftwidth() * 2
       endif
 
       if value == 'PUBLIC'
         let [quoted_string, end] = s:lex(line, end, '\%("[^"]\+"\|''[^'']\+''\)')
         if quoted_string == ""
-          return indent + &sw * 2
+          return indent + shiftwidth() * 2
         endif
       endif
 
       let [ndata, end] = s:lex(line, end)
       if ndata == ""
-        return indent + &sw
+        return indent + shiftwidth()
       endif
 
       let [name, end] = s:lex(line, end)
-      return name == "" ? (indent + &sw * 2) : indent
+      return name == "" ? (indent + shiftwidth() * 2) : indent
     else
       return indent
     endif
@@ -284,24 +284,24 @@ function GetDTDIndent()
     " Check for notation name.  If none exists, indent one level.
     let [name, end] = s:lex(line, end)
     if name == ""
-      return indent + &sw
+      return indent + shiftwidth()
     endif
 
     " Now check for the external ID.  If none exists, indent one level.
     let [id, end] = s:lex(line, end)
     if id == ""
-      return indent + &sw
+      return indent + shiftwidth()
     elseif id == 'SYSTEM' || id == 'PUBLIC'
       let [quoted_string, end] = s:lex(line, end, '\%("[^"]\+"\|''[^'']\+''\)')
       if quoted_string == ""
-        return indent + &sw * 2
+        return indent + shiftwidth() * 2
       endif
 
       if id == 'PUBLIC'
         let [quoted_string, end] = s:lex(line, end, '\%("[^"]\+"\|''[^'']\+''\|>\)')
         if quoted_string == ""
           " TODO: Should use s:lex here on getline(v:lnum) and check for >.
-          return getline(v:lnum) =~ '^\s*>' ? indent : (indent + &sw * 2)
+          return getline(v:lnum) =~ '^\s*>' ? indent : (indent + shiftwidth() * 2)
         elseif quoted_string == '>'
           return indent
         endif
index 87e82e833dbd0423cc2d5dca21a035a8e89090e9..d7667a8346d66a0a1fdb27af1b7668a031f962a0 100644 (file)
@@ -2,9 +2,10 @@
 " Language:    Eiffel
 " Maintainer:  Jocelyn Fiat <jfiat@eiffel.com>
 " Previous-Maintainer: David Clarke <gadicath@dishevelled.net>
+" Contributions from: Takuya Fujiwara
 " Contributions from: Thilo Six
-" $Date: 2004/12/09 21:33:52 $
-" $Revision: 1.3 $
+" $Date: 2017/03/08 06:00:00 $
+" $Revision: 1.4 $
 " URL: https://github.com/eiffelhub/vim-eiffel
 
 " Only load this indent file when no other was loaded.
@@ -28,7 +29,7 @@ let b:undo_indent = "setl smartindent< indentkeys< indentexpr< autoindent< comme
 " Define some stuff
 " keywords grouped by indenting
 let s:trust_user_indent = '\(+\)\(\s*\(--\).*\)\=$'
-let s:relative_indent = '^\s*\(deferred\|class\|feature\|creation\|inherit\|loop\|from\|until\|if\|else\|elseif\|ensure\|require\|check\|do\|local\|invariant\|variant\|rename\|redefine\|do\|export\)\>'
+let s:relative_indent = '^\s*\(deferred\|class\|feature\|creation\|inherit\|loop\|from\|across\|until\|if\|else\|elseif\|ensure\|require\|check\|do\|local\|invariant\|variant\|rename\|redefine\|do\|export\)\>'
 let s:outdent = '^\s*\(else\|invariant\|variant\|do\|require\|until\|loop\|local\)\>'
 let s:no_indent = '^\s*\(class\|feature\|creation\|inherit\)\>'
 let s:single_dent = '^[^-]\+[[:alnum:]]\+ is\(\s*\(--\).*\)\=$'
@@ -63,23 +64,23 @@ function GetEiffelIndent()
   " Add a 'shiftwidth' after lines that start with an indent word
   let ind = indent(lnum)
   if getline(lnum) =~ s:relative_indent
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   " Indent to single indent
   if getline(v:lnum) =~ s:single_dent && getline(v:lnum) !~ s:relative_indent
           \ && getline(v:lnum) !~ '\s*\<\(and\|or\|implies\)\>'
-     let ind = &sw
+     let ind = shiftwidth()
   endif
 
   " Indent to double indent
   if getline(v:lnum) =~ s:inheritance_dent
-     let ind = 2 * &sw
+     let ind = 2 * shiftwidth()
   endif
 
   " Indent line after the first line of the function definition
   if getline(lnum) =~ s:single_dent
-     let ind = ind + &sw
+     let ind = ind + shiftwidth()
   endif
 
   " The following should always be at the start of a line, no indenting
@@ -91,17 +92,17 @@ function GetEiffelIndent()
   " or first thing after the 'do'
   if getline(v:lnum) =~ s:outdent && getline(v:lnum - 1) !~ s:single_dent
        \ && getline(v:lnum - 1) !~ '^\s*do\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   " Subtract a shiftwidth for end statements
   if getline(v:lnum) =~ '^\s*end\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   " set indent of zero end statements that are at an indent of 3, this should
   " only ever be the class's end.
-  if getline(v:lnum) =~ '^\s*end\>' && ind == &sw
+  if getline(v:lnum) =~ '^\s*end\>' && ind == shiftwidth()
     let ind = 0
   endif
 
index e5fea1d3befcb3b248455c1c82233beb4c79d09d..8ee342fcfa01f6daff96041add473b49283f5b06 100644 (file)
@@ -25,11 +25,11 @@ function GetEtermIndent()
   let ind = indent(lnum)
 
   if getline(lnum) =~ '^\s*begin\>'
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   if getline(v:lnum) =~ '^\s*end\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   return ind
index e35d00eb02b4f43a0eb74ad92f59b6fcdfa303f4..f9a274eab6731d0db96646c0fafa71be61a7db39 100644 (file)
@@ -30,11 +30,11 @@ function GetFrameScriptIndent()
   let ind = indent(lnum)
 
   if getline(lnum) =~? '^\s*\%(If\|Loop\|Sub\)'
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   if getline(v:lnum) =~? '^\s*\%(Else\|End\%(If\|Loop\|Sub\)\)'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   return ind
index e0aec0faefb729d50ff3f22d926db76d2749eefb..49f8010d21e9c17d17518707e51ab2e05e54378d 100644 (file)
@@ -1,12 +1,14 @@
 " Vim indent file
 " Language:    Java
 " Previous Maintainer: Toby Allsopp <toby.allsopp@peace.com>
-" Current Maintainer: Hong Xu <xuhdev@gmail.com>
-" Last Change: 2012 May 18
-" Version: 1.0
+" Current Maintainer: Hong Xu <hong@topbug.net>
+" Homepage: http://www.vim.org/scripts/script.php?script_id=3899
+"           https://github.com/xuhdev/indent-java.vim
+" Last Change: 2016 Mar 7
+" Version: 1.1
 " License: Same as Vim.
-" Copyright (c) 2012 Hong Xu
-" Before 2012, this file is maintained by Toby Allsopp.
+" Copyright (c) 2012-2016 Hong Xu
+" Before 2012, this file was maintained by Toby Allsopp.
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -29,6 +31,7 @@ let b:undo_indent = "set cin< cino< indentkeys< indentexpr<"
 if exists("*GetJavaIndent")
   finish
 endif
+
 let s:keepcpo= &cpo
 set cpo&vim
 
@@ -70,7 +73,7 @@ function GetJavaIndent()
 
   " If the previous line starts with '@', we should have the same indent as
   " the previous one
-  if getline(lnum) =~ '^\s*@\S\+\s*$'
+  if getline(lnum) =~ '^\s*@.*$'
     return indent(lnum)
   endif
 
@@ -85,9 +88,9 @@ function GetJavaIndent()
 
   " Try to align "throws" lines for methods and "extends" and "implements" for
   " classes.
-  if getline(v:lnum) =~ '^\s*\(extends\|implements\)\>'
-        \ && getline(lnum) !~ '^\s*\(extends\|implements\)\>'
-    let theIndent = theIndent + &sw
+  if getline(v:lnum) =~ '^\s*\(throws\|extends\|implements\)\>'
+        \ && getline(lnum) !~ '^\s*\(throws\|extends\|implements\)\>'
+    let theIndent = theIndent + shiftwidth()
   endif
 
   " correct for continuation lines of "throws", "implements" and "extends"
@@ -96,27 +99,27 @@ function GetJavaIndent()
   if strlen(cont_kw) > 0
     let amount = strlen(cont_kw) + 1
     if getline(lnum) !~ ',\s*$'
-      let theIndent = theIndent - (amount + &sw)
+      let theIndent = theIndent - (amount + shiftwidth())
       if theIndent < 0
         let theIndent = 0
       endif
     elseif prev == lnum
       let theIndent = theIndent + amount
       if cont_kw ==# 'throws'
-        let theIndent = theIndent + &sw
+        let theIndent = theIndent + shiftwidth()
       endif
     endif
   elseif getline(prev) =~ '^\s*\(throws\|implements\|extends\)\>'
         \ && (getline(prev) =~ '{\s*$'
         \  || getline(v:lnum) =~ '^\s*{\s*$')
-    let theIndent = theIndent - &sw
+    let theIndent = theIndent - shiftwidth()
   endif
 
   " When the line starts with a }, try aligning it with the matching {,
   " skipping over "throws", "extends" and "implements" clauses.
   if getline(v:lnum) =~ '^\s*}\s*\(//.*\|/\*.*\)\=$'
     call cursor(v:lnum, 1)
-    silent normal %
+    silent normal! %
     let lnum = line('.')
     if lnum < v:lnum
       while lnum > 1
index 6544c4d51132397d4daee605a8b442a213578275..a72a3a954816f07a3e84120c421d2ea891967daf 100644 (file)
@@ -65,7 +65,7 @@ function GetLDIndent()
   if line =~ '^\s*\*'
     return cindent(v:lnum)
   elseif line =~ '^\s*}'
-    return indent(v:lnum) - &sw
+    return indent(v:lnum) - shiftwidth()
   endif
 
   let pnum = s:prevnonblanknoncomment(v:lnum - 1)
@@ -73,11 +73,11 @@ function GetLDIndent()
     return 0
   endif
 
-  let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
+  let ind = indent(pnum) + s:count_braces(pnum, 1) * shiftwidth()
 
   let pline = getline(pnum)
   if pline =~ '}\s*$'
-    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * shiftwidth()
   endif
 
   return ind
index 2a4b4580a9f7c40d27f20b47a0b956bd7a811023..66a8a40173ae97693a09cf9b50079c20c3583838 100644 (file)
@@ -48,14 +48,14 @@ function GetMakeIndent()
     if prev_prev_line =~ s:continuation_rx
       return indent(prev_lnum)
     elseif prev_line =~ s:rule_rx
-      return &sw
+      return shiftwidth()
     elseif prev_line =~ s:assignment_rx
       call cursor(prev_lnum, 1)
       if search(s:assignment_rx, 'W') != 0
         return virtcol('.') - 1
       else
         " TODO: ?
-        return &sw
+        return shiftwidth()
       endif
     else
       " TODO: OK, this might be a continued shell command, so perhaps indent
@@ -66,7 +66,7 @@ function GetMakeIndent()
       "    return indent(prev_lnum) + 2
       "  endif
       "endif
-      return indent(prev_lnum) + &sw
+      return indent(prev_lnum) + shiftwidth()
     endif
   elseif prev_prev_line =~ s:continuation_rx
     let folded_line = s:remove_continuation(prev_prev_line) . ' ' . s:remove_continuation(prev_line)
@@ -102,13 +102,13 @@ function GetMakeIndent()
       return &ts
     endif
   elseif prev_line =~ s:conditional_directive_rx
-    return &sw
+    return shiftwidth()
   else
     let line = getline(v:lnum)
     if line =~ s:just_inserted_rule_rx
       return 0
     elseif line =~ s:end_conditional_directive_rx
-      return v:lnum - 1 == 0 ? 0 : indent(v:lnum - 1) - &sw
+      return v:lnum - 1 == 0 ? 0 : indent(v:lnum - 1) - shiftwidth()
     else
       return v:lnum - 1 == 0 ? 0 : indent(v:lnum - 1)
     endif
index a58cc411b8f12807ce5e4b6ba21a5af31ed889da..e202ddfd8938ec615a8f6062ef09ce82e2a6a4eb 100644 (file)
@@ -25,11 +25,11 @@ function GetReadlineIndent()
   let ind = indent(lnum)
 
   if getline(lnum) =~ '^\s*$\(if\|else\)\>'
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   if getline(v:lnum) =~ '^\s*$\(else\|endif\)\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   return ind
diff --git a/runtime/indent/sas.vim b/runtime/indent/sas.vim
new file mode 100644 (file)
index 0000000..d591b27
--- /dev/null
@@ -0,0 +1,138 @@
+" Vim indent file
+" Language:     SAS
+" Maintainer:   Zhen-Huan Hu <wildkeny@gmail.com>
+" Version:      3.0.1
+" Last Change:  Mar 13, 2017
+
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetSASIndent()
+setlocal indentkeys+=;,=~data,=~proc,=~macro
+
+if exists("*GetSASIndent")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Regex that captures the start of a data/proc section
+let s:section_str = '\v%(^|;)\s*%(data|proc)>'
+" Regex that captures the end of a run-processing section
+let s:section_run = '\v%(^|;)\s*run\s*;'
+" Regex that captures the end of a data/proc section
+let s:section_end = '\v%(^|;)\s*%(quit|enddata)\s*;'
+
+" Regex that captures the start of a control block (anything inside a section)
+let s:block_str = '\v<%(do>%([^;]+<%(to|over)>[^;]+)=|%(define|layout|method|select)>[^;]+|begingraph)\s*;'
+" Regex that captures the end of a control block (anything inside a section)
+let s:block_end = '\v<%(end|endlayout|endgraph)\s*;'
+
+" Regex that captures the start of a macro
+let s:macro_str = '\v%(^|;)\s*\%macro>'
+" Regex that captures the end of a macro
+let s:macro_end = '\v%(^|;)\s*\%mend\s*;'
+
+" Regex that defines the end of the program
+let s:program_end = '\v%(^|;)\s*endsas\s*;'
+
+" List of procs supporting run-processing
+let s:run_processing_procs = [
+      \ 'catalog', 'chart', 'datasets', 'document', 'ds2', 'plot', 'sql',
+      \ 'gareabar', 'gbarline', 'gchart', 'gkpi', 'gmap', 'gplot', 'gradar', 'greplay', 'gslide', 'gtile',
+      \ 'anova', 'arima', 'catmod', 'factex', 'glm', 'model', 'optex', 'plan', 'reg',
+      \ 'iml',
+      \ ]
+
+" Find the line number of previous keyword defined by the regex
+function! s:PrevMatch(lnum, regex)
+  let prev_lnum = prevnonblank(a:lnum - 1)
+  while prev_lnum > 0
+    let prev_line = getline(prev_lnum)
+    if prev_line =~ a:regex
+      break
+    else
+      let prev_lnum = prevnonblank(prev_lnum - 1)
+    endif
+  endwhile
+  return prev_lnum
+endfunction
+
+" Main function
+function! GetSASIndent()
+  let prev_lnum = prevnonblank(v:lnum - 1)
+  if prev_lnum ==# 0
+    " Leave the indentation of the first line unchanged
+    return indent(1)
+  else
+    let prev_line = getline(prev_lnum)
+    " Previous non-blank line contains the start of a macro/section/block
+    " while not the end of a macro/section/block (at the same line)
+    if (prev_line =~ s:section_str && prev_line !~ s:section_run && prev_line !~ s:section_end) ||
+          \ (prev_line =~ s:block_str && prev_line !~ s:block_end) ||
+          \ (prev_line =~ s:macro_str && prev_line !~ s:macro_end)
+      let ind = indent(prev_lnum) + &sts
+    elseif prev_line =~ s:section_run && prev_line !~ s:section_end
+      let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str)
+      let prev_section_end_lnum = max([
+            \ s:PrevMatch(v:lnum, s:section_end),
+            \ s:PrevMatch(v:lnum, s:macro_end  ),
+            \ s:PrevMatch(v:lnum, s:program_end)])
+      " Check if the section supports run-processing
+      if prev_section_end_lnum < prev_section_str_lnum &&
+            \ getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' .
+            \ join(s:run_processing_procs, '|') . ')>'
+        let ind = indent(prev_lnum) + &sts
+      else
+        let ind = indent(prev_lnum)
+      endif
+    else
+      let ind = indent(prev_lnum)
+    endif
+  endif
+  " Re-adjustments based on the inputs of the current line
+  let curr_line = getline(v:lnum)
+  if curr_line =~ s:program_end
+    " End of the program
+    " Same indentation as the first non-blank line
+    return indent(nextnonblank(1))
+  elseif curr_line =~ s:macro_end
+    " Current line is the end of a macro
+    " Match the indentation of the start of the macro
+    return indent(s:PrevMatch(v:lnum, s:macro_str))
+  elseif curr_line =~ s:block_end && curr_line !~ s:block_str
+    " Re-adjust if current line is the end of a block
+    " while not the beginning of a block (at the same line)
+    " Returning the indent of previous block start directly
+    " would not work due to nesting
+    let ind = ind - &sts
+  elseif curr_line =~ s:section_str || curr_line =~ s:section_run || curr_line =~ s:section_end
+    " Re-adjust if current line is the start/end of a section
+    " since the end of a section could be inexplicit
+    let prev_section_str_lnum = s:PrevMatch(v:lnum, s:section_str)
+    " Check if the previous section supports run-processing
+    if getline(prev_section_str_lnum) =~ '\v%(^|;)\s*proc\s+%(' .
+          \ join(s:run_processing_procs, '|') . ')>'
+      let prev_section_end_lnum = max([
+            \ s:PrevMatch(v:lnum, s:section_end),
+            \ s:PrevMatch(v:lnum, s:macro_end  ),
+            \ s:PrevMatch(v:lnum, s:program_end)])
+    else
+      let prev_section_end_lnum = max([
+            \ s:PrevMatch(v:lnum, s:section_end),
+            \ s:PrevMatch(v:lnum, s:section_run),
+            \ s:PrevMatch(v:lnum, s:macro_end  ),
+            \ s:PrevMatch(v:lnum, s:program_end)])
+    endif
+    if prev_section_end_lnum < prev_section_str_lnum
+      let ind = ind - &sts
+    endif
+  endif
+  return ind
+endfunction
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
index f97c79bbabbbc7ae5e98459bd6001ebfd323681c..6fd8ca9d811eed209ab1e032ec950f66e4ff81ec 100644 (file)
@@ -412,24 +412,24 @@ function! GetScalaIndent()
     if prevline =~ '^\s*\.'
       return ind
     else
-      return ind + &shiftwidth
+      return ind + shiftwidth()
     endif
   endif
 
   " Indent html literals
   if prevline !~ '/>\s*$' && prevline =~ '^\s*<[a-zA-Z][^>]*>\s*$'
     call scala#ConditionalConfirm("3")
-    return ind + &shiftwidth
+    return ind + shiftwidth()
   endif
 
   " assumes curly braces around try-block
   if curline =~ '^\s*}\s*\<catch\>'
-    return ind - &shiftwidth
+    return ind - shiftwidth()
   elseif curline =~ '^\s*\<catch\>'
     return ind
   endif
 
-  " Add a 'shiftwidth' after lines that start a block
+  " Add a shiftwidth()' after lines that start a block
   " If 'if', 'for' or 'while' end with ), this is a one-line block
   " If 'val', 'var', 'def' end with =, this is a one-line block
   if (prevline =~ '^\s*\<\%(\%(}\?\s*else\s\+\)\?if\|for\|while\)\>.*[)=]\s*$' && scala#NumberOfBraceGroups(prevline) <= 1)
@@ -438,7 +438,7 @@ function! GetScalaIndent()
         \ || prevline =~ '^\s*\%(}\s*\)\?\<else\>\s*$'
         \ || prevline =~ '=\s*$'
     call scala#ConditionalConfirm("4")
-    let ind = ind + &shiftwidth
+    let ind = ind + shiftwidth()
   elseif prevline =~ '^\s*\<\%(}\?\s*else\s\+\)\?if\>' && curline =~ '^\s*}\?\s*\<else\>'
     return ind
   endif
@@ -447,7 +447,7 @@ function! GetScalaIndent()
   let bracketCount = scala#CountBrackets(prevline, '{', '}')
   if bracketCount > 0 || prevline =~ '.*{\s*$'
     call scala#ConditionalConfirm("5b")
-    let ind = ind + &shiftwidth
+    let ind = ind + shiftwidth()
   elseif bracketCount < 0
     call scala#ConditionalConfirm("6b")
     " if the closing brace actually completes the braces entirely, then we
@@ -475,7 +475,7 @@ function! GetScalaIndent()
     let bracketCount = scala#CountBrackets(prevline, '(', ')')
     if bracketCount > 0 || prevline =~ '.*(\s*$'
       call scala#ConditionalConfirm("5a")
-      let ind = ind + &shiftwidth
+      let ind = ind + shiftwidth()
     elseif bracketCount < 0
       call scala#ConditionalConfirm("6a")
       " if the closing brace actually completes the braces entirely, then we
@@ -497,7 +497,7 @@ function! GetScalaIndent()
       else
         " This is the only part that's different from from the '{', '}' one below
         " Yup... some refactoring is necessary at some point.
-        let ind = ind + (bracketCount * &shiftwidth)
+        let ind = ind + (bracketCount * shiftwidth())
         let lineCompletedBrackets = 1
       endif
     endif
@@ -506,10 +506,10 @@ function! GetScalaIndent()
   if curline =~ '^\s*}\?\s*\<else\>\%(\s\+\<if\>\s*(.*)\)\?\s*{\?\s*$' &&
    \ ! scala#LineIsCompleteIf(prevline) &&
    \ prevline !~ '^.*}\s*$'
-    let ind = ind - &shiftwidth
+    let ind = ind - shiftwidth()
   endif
 
-  " Subtract a 'shiftwidth' on '}' or html
+  " Subtract a shiftwidth()' on '}' or html
   let curCurlyCount = scala#CountCurlies(curline)
   if curCurlyCount < 0
     call scala#ConditionalConfirm("14a")
@@ -517,7 +517,7 @@ function! GetScalaIndent()
     return indent(matchline)
   elseif curline =~ '^\s*</[a-zA-Z][^>]*>'
     call scala#ConditionalConfirm("14c")
-    return ind - &shiftwidth
+    return ind - shiftwidth()
   endif
 
   let prevParenCount = scala#CountParens(prevline)
@@ -529,7 +529,7 @@ function! GetScalaIndent()
   let prevCurlyCount = scala#CountCurlies(prevline)
   if prevCurlyCount == 0 && prevline =~ '^.*\%(=>\|⇒\)\s*$' && prevline !~ '^\s*this\s*:.*\%(=>\|⇒\)\s*$' && curline !~ '^\s*\<case\>'
     call scala#ConditionalConfirm("16")
-    let ind = ind + &shiftwidth
+    let ind = ind + shiftwidth()
   endif
 
   if ind == originalIndentValue && curline =~ '^\s*\<case\>'
@@ -555,7 +555,7 @@ function! GetScalaIndent()
   if scala#LineIsAClosingXML(prevline)
     if scala#LineCompletesXML(prevlnum, prevline)
       call scala#ConditionalConfirm("20a")
-      return ind - &shiftwidth
+      return ind - shiftwidth()
     else
       call scala#ConditionalConfirm("20b")
       return ind
@@ -566,7 +566,7 @@ function! GetScalaIndent()
     "let indentMultiplier = scala#LineCompletesDefValr(prevlnum, prevline)
     "if indentMultiplier != 0
     "  call scala#ConditionalConfirm("19a")
-    "  let ind = ind - (indentMultiplier * &shiftwidth)
+    "  let ind = ind - (indentMultiplier * shiftwidth())
     let defValrLine = scala#Test(prevlnum, prevline, '{', '}')
     if defValrLine != -1
       call scala#ConditionalConfirm("21a")
@@ -575,10 +575,10 @@ function! GetScalaIndent()
       call scala#ConditionalConfirm("21b")
       if scala#GetLine(prevnonblank(prevlnum - 1)) =~ '^.*\<else\>\s*\%(//.*\)\?$'
         call scala#ConditionalConfirm("21c")
-        let ind = ind - &shiftwidth
+        let ind = ind - shiftwidth()
       elseif scala#LineCompletesIfElse(prevlnum, prevline)
         call scala#ConditionalConfirm("21d")
-        let ind = ind - &shiftwidth
+        let ind = ind - shiftwidth()
       elseif scala#CountParens(curline) < 0 && curline =~ '^\s*)' && scala#GetLine(scala#GetLineThatMatchesBracket('(', ')')) =~ '.*(\s*$'
         " Handles situations that look like this:
         "
@@ -592,7 +592,7 @@ function! GetScalaIndent()
         "     10
         "   ).somethingHere()
         call scala#ConditionalConfirm("21e")
-        let ind = ind - &shiftwidth
+        let ind = ind - shiftwidth()
       endif
     endif
   endif
index a92f57d67df23b7d269bd16286f2ecc2e17f61b8..e9d61e43667567369f619ba98be6611a98096e85 100644 (file)
@@ -56,7 +56,7 @@ function GetTclIndent()
   if line =~ '^\s*\*'
     return cindent(v:lnum)
   elseif line =~ '^\s*}'
-    return indent(v:lnum) - &sw
+    return indent(v:lnum) - shiftwidth()
   endif
 
   let pnum = s:prevnonblanknoncomment(v:lnum - 1)
@@ -64,11 +64,11 @@ function GetTclIndent()
     return 0
   endif
 
-  let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
+  let ind = indent(pnum) + s:count_braces(pnum, 1) * shiftwidth()
 
   let pline = getline(pnum)
   if pline =~ '}\s*$'
-    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
+    let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * shiftwidth()
   endif
 
   return ind
index 59a9d56f448629bfd0f82def7a5d7f9044b4f993..ed08e6c6e2371cbd6c4baab471a14aa493e4fc03 100644 (file)
@@ -32,17 +32,17 @@ function TcshGetIndent()
     let ind = indent(lnum)
     let line = getline(lnum)
     if line =~ '\v^\s*%(while|foreach)>|^\s*%(case\s.*:|default:|else)\s*$|%(<then|\\)$'
-       let ind = ind + &sw
+       let ind = ind + shiftwidth()
     endif
 
     if line =~ '\v^\s*breaksw>'
-       let ind = ind - &sw
+       let ind = ind - shiftwidth()
     endif
 
     " Subtract indent if current line has on end, endif, case commands
     let line = getline(v:lnum)
     if line =~ '\v^\s*%(else|end|endif)\s*$'
-       let ind = ind - &sw
+       let ind = ind - shiftwidth()
     endif
 
     return ind
index 01716e7190ec4956bcb1eb9e06d3cfa6faf75b9d..2c6eecf5c47316c8bb3fd2cbc8a7f3cbe1be2257 100644 (file)
@@ -26,12 +26,12 @@ function GetTreetopIndent()
   let line = getline(pnum)
 
   if line =~ '^\s*\%(grammar\|module\|rule\)\>'
-    let ind += &sw
+    let ind += shiftwidth()
   endif
 
   let line = getline(v:lnum)
   if line =~ '^\s*end\>'
-    let ind -= &sw
+    let ind -= shiftwidth()
   end
 
   retur ind
index 7c3ea15d98124412f2354f1d7f29ea117bbc6e11..5a8bc0fec127972a460d53a28bb7541da39256ab 100644 (file)
@@ -26,11 +26,11 @@ function GetXF86ConfIndent()
   let ind = indent(lnum)
 
   if getline(lnum) =~? '^\s*\(Sub\)\=Section\>'
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   if getline(v:lnum) =~? '^\s*End\(Sub\)\=Section\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   return ind
index 5a32a74d123848cb7d462f5b66b36230e88827d6..977ee3d33b96589e8e4bbc51f0f09c64d5a9a44f 100644 (file)
@@ -47,8 +47,8 @@ function GetXinetdIndent()
     return 0
   endif
 
-  return indent(pnum) + s:count_braces(pnum, 1) * &sw
-        \ - s:count_braces(v:lnum, 0) * &sw
+  return indent(pnum) + s:count_braces(pnum, 1) * shiftwidth()
+        \ - s:count_braces(v:lnum, 0) * shiftwidth()
 endfunction
 
 let &cpo = s:keepcpo
index 11b763409bdad8e0d516f435092aaa422e895652..870fcca10669d4aac27af1d07d13bf51b7ac3dad 100644 (file)
@@ -1,9 +1,10 @@
 " Vim syntax file
 " Language:     Erlang (http://www.erlang.org)
 " Maintainer:   Csaba Hoch <csaba.hoch@gmail.com>
-" Last Update:  2013-Jul-25
+" Contributor:  Adam Rutkowski <hq@mtod.org>
+" Last Update:  2017-Mar-05
 " License:      Vim license
-" URL:          https://github.com/hcs42/vim-erlang
+" URL:          https://github.com/vim-erlang/vim-erlang-runtime
 
 " Acknowledgements: This script was originally created by Kresimir Marzic [1].
 " The script was then revamped by Csaba Hoch [2]. During the revamp, the new
@@ -46,7 +47,6 @@ syn match erlangComment           '%.*$' contains=erlangCommentAnnotation,erlang
 syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)' contained
 syn match erlangCommentAnnotation /`[^']*'/ contained
 syn keyword erlangTodo            TODO FIXME XXX contained
-syn match erlangShebang           '^#!.*'
 
 " Numbers (minimum base is 2, maximum is 36.)
 syn match erlangNumberInteger '\<\d\+\>'
@@ -56,12 +56,12 @@ syn match erlangNumberFloat   '\<\d\+\.\d\+\%([eE][+-]\=\d\+\)\=\>'
 " Strings, atoms, characters
 syn region erlangString            start=/"/ end=/"/ contains=erlangStringModifier
 syn region erlangQuotedAtom        start=/'/ end=/'/ contains=erlangQuotedAtomModifier
-syn match erlangStringModifier     '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
-syn match erlangQuotedAtomModifier '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
+syn match erlangStringModifier     '\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\|\~\%([ni~]\|\%(-\=\d\+\|\*\)\=\.\=\%(\*\|\d\+\)\=\%(\..\)\=[tl]*[cfegswpWPBX#bx+]\)' contained
+syn match erlangQuotedAtomModifier '\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
 syn match erlangModifier           '\$\%([^\\]\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\)'
 
 " Operators, separators
-syn match erlangOperator   '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/'
+syn match erlangOperator   '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|=>\|:=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/'
 syn keyword erlangOperator div rem or xor bor bxor bsl bsr and band not bnot andalso orelse
 syn match erlangBracket    '{\|}\|\[\|]\||\|||'
 syn match erlangPipe       '|'
@@ -72,14 +72,19 @@ syn match erlangAtom           '\<\l[[:alnum:]_@]*' contains=erlangBoolean
 syn keyword erlangBoolean      true false contained
 syn match erlangLocalFuncCall  '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangBIF
 syn match erlangLocalFuncRef   '\<\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@='
-syn match erlangGlobalFuncCall '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangComment
-syn match erlangGlobalFuncRef  '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@=' contains=erlangComment
+syn match erlangGlobalFuncCall '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*(\)\@=' contains=erlangComment,erlangVariable
+syn match erlangGlobalFuncRef  '\<\%(\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*\.\%(\s\|\n\|%.*\n\)*\)*\a[[:alnum:]_@]*\%(\s\|\n\|%.*\n\)*:\%(\s\|\n\|%.*\n\)*\a[[:alnum:]_@]*\>\%(\%(\s\|\n\|%.*\n\)*/\)\@=' contains=erlangComment,erlangVariable
 
-" Variables, macros, records
+" Variables, macros, records, maps
 syn match erlangVariable '\<[A-Z_][[:alnum:]_@]*'
 syn match erlangMacro    '??\=[[:alnum:]_@]\+'
 syn match erlangMacro    '\%(-define(\)\@<=[[:alnum:]_@]\+'
+syn match erlangMap      '#'
 syn match erlangRecord   '#\s*\l[[:alnum:]_@]*'
+syn region erlangQuotedRecord        start=/#\s*'/ end=/'/ contains=erlangQuotedAtomModifier
+
+" Shebang (this line has to be after the ErlangMap)
+syn match erlangShebang  '^#!.*'
 
 " Bitstrings
 syn match erlangBitType '\%(\/\%(\s\|\n\|%.*\n\)*\)\@<=\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\%(\%(\s\|\n\|%.*\n\)*-\%(\s\|\n\|%.*\n\)*\%(integer\|float\|binary\|bytes\|bitstring\|bits\|binary\|utf8\|utf16\|utf32\|signed\|unsigned\|big\|little\|native\|unit\)\)*' contains=erlangComment
@@ -94,7 +99,7 @@ syn match erlangPreCondit '^\s*-\%(\s\|\n\|%.*\n\)*\%(ifdef\|ifndef\|else\|endif
 syn match erlangType      '^\s*-\%(\s\|\n\|%.*\n\)*\%(spec\|type\|opaque\|callback\)\>' contains=erlangComment
 
 " Keywords
-syn keyword erlangKeyword after begin case catch cond end fun if let of query
+syn keyword erlangKeyword after begin case catch cond end fun if let of
 syn keyword erlangKeyword receive when try
 
 " Build-in-functions (BIFs)
@@ -142,7 +147,6 @@ let b:erlang_syntax_synced = 1
 let s:old_style = (exists("g:erlang_old_style_highlight") &&
                   \g:erlang_old_style_highlight == 1)
 
-" Only when an item doesn't have highlighting yet
 
 " Comments
 hi def link erlangComment Comment
@@ -188,6 +192,8 @@ hi def link erlangGlobalFuncRef Function
 hi def link erlangVariable Normal
 hi def link erlangMacro Normal
 hi def link erlangRecord Normal
+hi def link erlangQuotedRecord Normal
+hi def link erlangMap Normal
 else
 hi def link erlangAtom String
 hi def link erlangLocalFuncCall Normal
@@ -197,6 +203,8 @@ hi def link erlangGlobalFuncRef Normal
 hi def link erlangVariable Identifier
 hi def link erlangMacro Macro
 hi def link erlangRecord Structure
+hi def link erlangQuotedRecord Structure
+hi def link erlangMap Structure
 endif
 
 " Bitstrings
index 7779c43996af6842660b86aa4eb852369876a704..c5a175fd77ce62efcc8eb5edd8a70ddcbae08074 100644 (file)
@@ -71,6 +71,8 @@ hi link scalaUnicodeChar Special
 
 syn match scalaOperator "||"
 syn match scalaOperator "&&"
+syn match scalaOperator "|"
+syn match scalaOperator "&"
 hi link scalaOperator Special
 
 syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition,scalaVariableDeclarationList
@@ -142,7 +144,7 @@ hi link scalaString String
 hi link scalaStringEmbeddedQuote String
 
 syn region scalaIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
-syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
+syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\ze\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
 hi link scalaIString String
 hi link scalaTripleIString String
 
index 4e87de841797760a510e0c00a25d876e7bbb271d..1ba5f677366a54af3808e8a9a6b567b187c6fdc4 100644 (file)
@@ -4,18 +4,16 @@
 " Maintainer: Eric Pruitt <eric.pruitt@gmail.com>
 " License: 2-Clause BSD (http://opensource.org/licenses/BSD-2-Clause)
 
-if version < 600
-    syntax clear
-elseif exists("b:current_syntax")
+if exists("b:current_syntax")
     finish
-else
-    let b:current_syntax = "tmux"
 endif
 
-" this file uses line continuations
-let s:cpo_sav = &cpo
+" Explicitly change compatiblity options to Vim's defaults because this file
+" uses line continuations.
+let s:original_cpo = &cpo
 set cpo&vim
 
+let b:current_syntax = "tmux"
 setlocal iskeyword+=-
 syntax case match
 
@@ -62,7 +60,6 @@ for s:i in range(0, 255)
     exec "syn match tmuxColour" . s:i . " /\\<colour" . s:i . "\\>/ display"
 \     " | highlight tmuxColour" . s:i . " ctermfg=" . s:i . " ctermbg=" . s:bg
 endfor
-unlet s:bg s:i
 
 syn keyword tmuxOptions
 \ buffer-limit command-alias default-terminal escape-time exit-unattached
@@ -123,5 +120,5 @@ syn keyword tmuxCommands
 \ swapp swap-window swapw switch-client switchc unbind-key unbind wait-for
 \ wait
 
-let &cpo = s:cpo_sav
-unlet! s:cpo_sav
+let &cpo = s:original_cpo
+unlet! s:original_cpo s:bg s:i