Skip to content
Snippets Groups Projects
Commit e2db695d authored by Bram Moolenaar's avatar Bram Moolenaar
Browse files

Updated runtime files.

parent ff18df03
No related branches found
No related tags found
No related merge requests found
Showing
with 594 additions and 269 deletions
*map.txt* For Vim version 7.4a. Last change: 2013 Jun 29 *map.txt* For Vim version 7.4a. Last change: 2013 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -597,7 +597,7 @@ this (see |<>|). Example: > ...@@ -597,7 +597,7 @@ this (see |<>|). Example: >
To avoid mapping of the characters you type in insert or Command-line mode, 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' type a CTRL-V first. The mapping in Insert mode is disabled if the 'paste'
option is on. option is on.
*map-error*
Note that when an error is encountered (that causes an error message or beep) 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. the rest of the mapping is not executed. This is Vi-compatible.
......
*repeat.txt* For Vim version 7.4a. Last change: 2012 Mar 23 *repeat.txt* For Vim version 7.4a. Last change: 2013 Jul 20
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -54,7 +54,7 @@ selection, the same SIZE of area is used, see |visual-repeat|. ...@@ -54,7 +54,7 @@ selection, the same SIZE of area is used, see |visual-repeat|.
Same as :g!. Same as :g!.
Instead of the '/' which surrounds the {pattern}, you can use any other Instead of the '/' which surrounds the {pattern}, you can use any other
single byte character, but not an alphanumeric character, '\', '"' or '|'. single byte character, but not an alphabetic character, '\', '"' or '|'.
This is useful if you want to include a '/' in the search pattern or This is useful if you want to include a '/' in the search pattern or
replacement string. replacement string.
......
*starting.txt* For Vim version 7.4a. Last change: 2013 Jun 12 *starting.txt* For Vim version 7.4a. Last change: 2013 Jul 20
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -774,7 +774,8 @@ accordingly. Vim proceeds in this order: ...@@ -774,7 +774,8 @@ accordingly. Vim proceeds in this order:
easy to copy it to another system. easy to copy it to another system.
If Vim was started with "-u filename", the file "filename" is used. If Vim was started with "-u filename", the file "filename" is used.
All following initializations until 4. are skipped. All following initializations until 4. are skipped. $MYVIMRC is not
set.
"vim -u NORC" can be used to skip these initializations without "vim -u NORC" can be used to skip these initializations without
reading a file. "vim -u NONE" also skips loading plugins. |-u| reading a file. "vim -u NONE" also skips loading plugins. |-u|
......
...@@ -6734,6 +6734,7 @@ map-<SID> map.txt /*map-<SID>* ...@@ -6734,6 +6734,7 @@ map-<SID> map.txt /*map-<SID>*
map-ambiguous map.txt /*map-ambiguous* map-ambiguous map.txt /*map-ambiguous*
map-backtick tips.txt /*map-backtick* map-backtick tips.txt /*map-backtick*
map-comments map.txt /*map-comments* map-comments map.txt /*map-comments*
map-error map.txt /*map-error*
map-examples map.txt /*map-examples* map-examples map.txt /*map-examples*
map-keys-fails map.txt /*map-keys-fails* map-keys-fails map.txt /*map-keys-fails*
map-listing map.txt /*map-listing* map-listing map.txt /*map-listing*
......
*todo.txt* For Vim version 7.4a. Last change: 2013 Jul 17 *todo.txt* For Vim version 7.4a. Last change: 2013 Jul 24
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -34,18 +34,6 @@ not be repeated below, unless there is extra information. ...@@ -34,18 +34,6 @@ not be repeated below, unless there is extra information.
*known-bugs* *known-bugs*
-------------------- Known bugs and current work ----------------------- -------------------- Known bugs and current work -----------------------
Edit changed-7.4 text.
Patch for this bug: (Ken Takata, 2013 Jul 17)
8 Win32: When mouse is hidden and in the toolbar, moving it won't make it
appear. (Sami Salonen)
This results in 'fileformat' set to "dos" instead of "unix". (Ingo Karkat,
2013 Jul 16)
:set fileformats=dos,unix
:new ++ff=unix
Also for ++bin and ++enc.
Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
Patch to add "acl" and "xpm" as a feature. (Ken Takata, 2013 Jul 8) Patch to add "acl" and "xpm" as a feature. (Ken Takata, 2013 Jul 8)
...@@ -70,6 +58,10 @@ GTK: problem with 'L' in 'guioptions' changing the window width. ...@@ -70,6 +58,10 @@ GTK: problem with 'L' in 'guioptions' changing the window width.
Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3. Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3.
The BufUnload event is triggered when re-using the empty buffer.
(Pokey Rule, 2013 Jul 22)
Patch by Marcin Szamotulski, 2013 Jul 22.
The CompleteDone autocommand needs some info passed to it: The CompleteDone autocommand needs some info passed to it:
- The word that was selected (empty if abandoned complete) - The word that was selected (empty if abandoned complete)
- Type of completion: tag, omnifunc, user func. - Type of completion: tag, omnifunc, user func.
...@@ -187,7 +179,6 @@ Python: Be able to define a Python function that can be called directly from ...@@ -187,7 +179,6 @@ Python: Be able to define a Python function that can be called directly from
Vim script. Requires converting the arguments and return value, like with Vim script. Requires converting the arguments and return value, like with
vim.bindeval(). vim.bindeval().
Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers, Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers,
2012 Aug 4) 2012 Aug 4)
...@@ -451,7 +442,7 @@ May 24) Update May 26. ...@@ -451,7 +442,7 @@ May 24) Update May 26.
Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30) Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
Problem with "syn sync gouphere". (Gustavo Niemeyer, 2011 Jan 27) Problem with "syn sync grouphere". (Gustavo Niemeyer, 2011 Jan 27)
Loading autoload script even when usage is inside "if 0". (Christian Brabandt, Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
2010 Dec 18) 2010 Dec 18)
......
*version7.txt* For Vim version 7.4a. Last change: 2013 Jul 13 *version7.txt* For Vim version 7.4a. Last change: 2013 Jul 24
   
   
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -9150,7 +9150,7 @@ Files: src/ops.c ...@@ -9150,7 +9150,7 @@ Files: src/ops.c
   
Patch 7.2.293 Patch 7.2.293
Problem: When setting 'comments' option it may be used in a wrong way. Problem: When setting 'comments' option it may be used in a wrong way.
Solution: Don't increment after skipping over digets. (Yukihiro Nakadaira) Solution: Don't increment after skipping over digits. (Yukihiro Nakadaira)
Files: src/misc1.c Files: src/misc1.c
   
Patch 7.2.294 Patch 7.2.294
...@@ -10192,131 +10192,82 @@ Better Python interface *better-python-interface* ...@@ -10192,131 +10192,82 @@ Better Python interface *better-python-interface*
   
Added |python-bindeval| function. Unlike |python-eval| this one returns Added |python-bindeval| function. Unlike |python-eval| this one returns
|python-Dictionary|, |python-List| and |python-Function| objects for |python-Dictionary|, |python-List| and |python-Function| objects for
dictionaries lists and functions respectively in place of their python dictionaries lists and functions respectively in place of their Python
built-in equivalents (or None if we are talking about function references). built-in equivalents (or None if we are talking about function references).
For simple types this function returns python built-in types and not only For simple types this function returns Python built-in types and not only
python `str()` like |python-eval| does. On python 3 it will return `bytes()` Python `str()` like |python-eval| does. On Python 3 it will return `bytes()`
objects in place of `str()` ones avoiding possibility of UnicodeDecodeError. objects in place of `str()` ones avoiding possibility of UnicodeDecodeError.
Interface of new objects mimics standard python `dict()` and `list()` Interface of new objects mimics standard Python `dict()` and `list()`
interfaces to some extent. Extent will be improved in the future. interfaces to some extent. Extent will be improved in the future.
   
Added special |python-vars| objects also available for |python-buffer| and Added special |python-vars| objects also available for |python-buffer| and
|python-window|. They ease access to VimL variables from python. |python-window|. They ease access to VimL variables from Python.
   
Now you no longer need to alter `sys.path` to import your module: special Now you no longer need to alter `sys.path` to import your module: special
hooks are responsible for importing from {rtp}/python2, {rtp}/python3 and hooks are responsible for importing from {rtp}/python2, {rtp}/python3 and
{rtp}/pythonx directories (for python 2, python 3 and both respectively). {rtp}/pythonx directories (for Python 2, Python 3 and both respectively).
See |python-special-path|. See |python-special-path|.
   
Added possibility to work with |tabpage|s through |python-tabpage| object. Added possibility to work with |tabpage|s through |python-tabpage| object.
   
Added automatic conversion of vim errors and exceptions to python Added automatic conversion of Vim errors and exceptions to Python
exceptions. exceptions.
   
Changed the behavior of |python-buffers| object: it now uses buffer numbers Changed the behavior of the |python-buffers| object: it now uses buffer numbers
as keys in place of the index of the buffer in the internal buffer list. as keys in place of the index of the buffer in the internal buffer list.
This should not break anything as the only way to get this index was This should not break anything as the only way to get this index was
iterating over |python-buffers|. iterating over |python-buffers|.
   
Added |:pydo| and |:py3do| commands. Added |:pydo| and |:py3do| commands.
   
Added |pyeval()| and |py3eval()| functions. Added the |pyeval()| and |py3eval()| functions.
   
Now in all places which previously accepted `str()` objects in both python Now in all places which previously accepted `str()` objects, `str()` and
version both `str()` and `unicode()` (python 2) or `bytes()` and `str()` `unicode()` (Python 2) or `bytes()` and `str()` (Python 3) are accepted.
(python 3) are accepted.
   
|python-window| has gained `.col` and `.row` attributes that are currently |python-window| has gained `.col` and `.row` attributes that are currently
the only way to get internal window positions. the only way to get internal window positions.
   
Added or fixed support for `dir()` in vim python objects. Added or fixed support for `dir()` in Vim Python objects.
Old python versions (≤2.2) are no longer supported. Building with them did
not work anyway.
   
   
Changed *changed-7.4* Changed *changed-7.4*
------- -------
   
Functions: Old Python versions (≤2.2) are no longer supported. Building with them did
Added ability to use |Dictionary-function|s for |sort()|ing, via not work anyway.
optional third argument. (Nikolay Pavlov)
Added special |expand()| argument that expands to the current line
number.
Made it possible to force |char2nr()| always give unicode codepoints
regardless of current encoding. (Yasuhiro Matsumoto)
Made it possible for functions generating file list generate |List|
and not NL-separated string. (e.g. |glob()|, |expand()|) (Christian
Brabandt)
Functions that obtain variables from the specific window, tabpage or
buffer scope dictionary can now return specified default value in
place of empty string in case variable is not found. (|gettabvar()|,
|getwinvar()|, |getbufvar()|) (Shougo Matsushita, Hirohito Higashi)
   
Options: Options:
Added ability to automatically save selection into the system Added ability to automatically save the selection into the system
clipboard when using non-GUI version of vim (autoselectplus in clipboard when using non-GUI version of Vim (autoselectplus in
'clipboard'). Also added ability to use system clipboard as default 'clipboard'). Also added ability to use the system clipboard as
register (previously only primary selection could be used). (Ivan default register (previously only primary selection could be used).
Krasilnikov, Christian Brabandt, Bram Moolenaar) (Ivan Krasilnikov, Christian Brabandt, Bram Moolenaar)
Added special 'shiftwidth' value that makes 'sw' follow 'tabstop'. As
indenting via 'indentexpr' became tricky |shiftwidth()| function was
added. Also added equivalent special value to 'softtabstop' option.
(Christian Brabandt, so8res)
Added ability to delete comment leader when using |J| by `j` flag in
'formatoptions' (|fo-table|). (Lech Lorens)
Added ability to control indentation inside namespaces: |cino-N|.
(Konstantin Lepa)
   
Added ability to control alignment inside `if` condition separately Added a special 'shiftwidth' value that makes 'sw' follow 'tabstop'.
from alignment inside function arguments: |cino-k|. (Lech Lorens) As indenting via 'indentexpr' became tricky |shiftwidth()| function
was added. Also added equivalent special value to 'softtabstop'
option. (Christian Brabandt, so8res)
   
Added ability to show absolute number in number column when Show absolute number in number column when 'relativenumber' option is
'relativenumber' option is on. (Christian Brabandt) on. Now there are four combinations with 'number' and
'relativenumber'. (Christian Brabandt)
Comands:
Made it possible to remove all signs from the current buffer using
|:sign-unplace|. (Christian Brabandt)
Added |:language| autocompletion. (Dominique Pelle)
   
Commands:
|:diffoff| now saves the local values of some settings and restores |:diffoff| now saves the local values of some settings and restores
them in place of blindly resetting them to the defaults. (Christian them in place of blindly resetting them to the defaults. (Christian
Brabandt) Brabandt)
   
Added |:map-nowait| creating mapping which when having lhs that is the
prefix of another mapping’s lhs will not allow vim to wait for user to
type more characters to resolve ambiguity, forcing vim to take the
shorter alternative: one with <nowait>.
Added more |:command-complete| completion types: |:behave| suboptions,
color schemes, compilers, |:cscope| suboptions, files from 'path',
|:history| suboptions, locale names, |:syntime| suboptions, user
names. (Dominique Pelle)
Other: Other:
Improved support for cmd.exe. (Ben Fritz, Bram Moolenaar) Lua interface now also uses userdata binded to Vim structures. (Taro
Added |v:windowid| variable containing current window number in GUI
vim. (Christian J. Robinson, Lech Lorens)
Lua interface now also uses userdata binded to vim structures. (Taro
Muraoka, Luis Carvalho) Muraoka, Luis Carvalho)
   
Added rxvt-unicode and >xterm-277 mouse support. (Yiding Jia, Hayaki
Saito)
Added *added-7.4* Added *added-7.4*
----- -----
   
Added support for |Lists| and |Dictionaries| in |viminfo|. (Christian Various syntax, indent and other plugins were added.
Added support for |Lists| and |Dictionaries| in |viminfo|. (Christian
Brabandt) Brabandt)
   
Functions: Functions:
...@@ -10331,6 +10282,24 @@ Functions: ...@@ -10331,6 +10282,24 @@ Functions:
Debugging functions: |screenattr()|, |screenchar()|, |screencol()|, Debugging functions: |screenattr()|, |screenchar()|, |screencol()|,
|screenrow()|. (Simon Ruderich, Bram Moolenaar) |screenrow()|. (Simon Ruderich, Bram Moolenaar)
   
Added ability to use |Dictionary-function|s for |sort()|ing, via
optional third argument. (Nikolay Pavlov)
Added special |expand()| argument that expands to the current line
number.
Made it possible to force |char2nr()| always give unicode codepoints
regardless of current encoding. (Yasuhiro Matsumoto)
Made it possible for functions generating file list generate |List|
and not NL-separated string. (e.g. |glob()|, |expand()|) (Christian
Brabandt)
Functions that obtain variables from the specific window, tabpage or
buffer scope dictionary can now return specified default value in
place of empty string in case variable is not found. (|gettabvar()|,
|getwinvar()|, |getbufvar()|) (Shougo Matsushita, Hirohito Higashi)
Autocommands: Autocommands:
Added |InsertCharPre| event launched before inserting character. Added |InsertCharPre| event launched before inserting character.
(Jakson A. Aquino) (Jakson A. Aquino)
...@@ -10338,7 +10307,7 @@ Autocommands: ...@@ -10338,7 +10307,7 @@ Autocommands:
Added |CompleteDone| event launched after finishing completion in Added |CompleteDone| event launched after finishing completion in
insert mode. (idea by Florian Klein) insert mode. (idea by Florian Klein)
   
Added |QuitPre| event launched when commands that can either close vim Added |QuitPre| event launched when commands that can either close Vim
or only some window(s) are launched. or only some window(s) are launched.
   
Added |TextChanged| and |TextChangedI| events launched when text is Added |TextChanged| and |TextChangedI| events launched when text is
...@@ -10347,14 +10316,45 @@ Autocommands: ...@@ -10347,14 +10316,45 @@ Autocommands:
Commands: Commands:
|:syntime| command useful for debugging. |:syntime| command useful for debugging.
   
Made it possible to remove all signs from the current buffer using
|:sign-unplace|. (Christian Brabandt)
Added |:language| autocompletion. (Dominique Pelle)
Added more |:command-complete| completion types: |:behave| suboptions,
color schemes, compilers, |:cscope| suboptions, files from 'path',
|:history| suboptions, locale names, |:syntime| suboptions, user
names. (Dominique Pelle)
Added |:map-nowait| creating mapping which when having lhs that is the
prefix of another mapping’s lhs will not allow Vim to wait for user to
type more characters to resolve ambiguity, forcing Vim to take the
shorter alternative: one with <nowait>.
Options: Options:
Made it possible to ignore case when completing: 'wildignorecase'. Made it possible to ignore case when completing: 'wildignorecase'.
   
Various syntax, indent and other plugins were added. Added ability to delete comment leader when using |J| by `j` flag in
'formatoptions' (|fo-table|). (Lech Lorens)
   
Added ability to control indentation inside namespaces: |cino-N|.
(Konstantin Lepa)
   
Fixed *fixed-7.4* Added ability to control alignment inside `if` condition separately
----- from alignment inside function arguments: |cino-k|. (Lech Lorens)
Other:
Improved support for cmd.exe. (Ben Fritz, Bram Moolenaar)
Added |v:windowid| variable containing current window number in GUI
Vim. (Christian J. Robinson, Lech Lorens)
Added rxvt-unicode and >xterm-277 mouse support. (Yiding Jia, Hayaki
Saito)
All changes in 7.4 *fixed-7.4*
------------------
   
Patch 7.3.001 Patch 7.3.001
Problem: When editing "src/main.c" and 'path' set to "./proto", Problem: When editing "src/main.c" and 'path' set to "./proto",
...@@ -12181,7 +12181,7 @@ Problem: Can't compile with tiny features. ...@@ -12181,7 +12181,7 @@ Problem: Can't compile with tiny features.
Solution: Add #ifdef around win_valid(). Solution: Add #ifdef around win_valid().
Files: src/buffer.c Files: src/buffer.c
   
Patch 7.3.313 after 7.3.307) Patch 7.3.313 (after 7.3.307)
Problem: One more warning when compiling with dynamic Python 3. Problem: One more warning when compiling with dynamic Python 3.
Solution: Change PySliceObject to PyObject. Solution: Change PySliceObject to PyObject.
Files: src/if_python3.c Files: src/if_python3.c
......
" Vim support file to detect file types " Vim support file to detect file types
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2013 Jun 24 " Last Change: 2013 Jul 21
" Listen very carefully, I will say this only once " Listen very carefully, I will say this only once
if exists("did_load_filetypes") if exists("did_load_filetypes")
...@@ -1407,6 +1407,9 @@ au BufNewFile,BufRead *.rcp setf pilrc ...@@ -1407,6 +1407,9 @@ au BufNewFile,BufRead *.rcp setf pilrc
" Pine config " Pine config
au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine
" PL/1, PL/I
au BufNewFile,BufRead *.pli,*.pl1 setf pli
" PL/M (also: *.inp) " PL/M (also: *.inp)
au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-05-11 " Last Change: 2013 Jul 24
if exists("b:did_ftplugin") | finish | endif if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-05-11 " Last Change: 2013 Jul 24
" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> " Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" "
" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com> " Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com>
......
" Language: TT2 embedded with HTML
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013 Jul 24
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Just use the HTML plugin for now.
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2009-08-14 " Last Change: 2013 Jul 24
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: May 12, 2013 " Last Change: 2013 Jul 24
" Suggestions and improvements by : " Suggestions and improvements by :
" Aaron J. Sherman (use syntax for hints) " Aaron J. Sherman (use syntax for hints)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-05-12 " Last Change: 2013 Jul 24
" Contributors: Andy Lester <andy@petdance.com> " Contributors: Andy Lester <andy@petdance.com>
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> " Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" "
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
" Nikolai Weibull (Add CSS2 support) " Nikolai Weibull (Add CSS2 support)
" Maintainer: Jules Wang <w.jq0722@gmail.com> " Maintainer: Jules Wang <w.jq0722@gmail.com>
" URL: https://github.com/JulesWang/css.vim " URL: https://github.com/JulesWang/css.vim
" Last Change: 2012 Dec 15 " Last Change: 2013 Jul 23
" For version 5.x: Clear all syntax items " For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded " For version 6.x: Quit when a syntax file was already loaded
...@@ -14,9 +14,11 @@ if !exists("main_syntax") ...@@ -14,9 +14,11 @@ if !exists("main_syntax")
if version < 600 if version < 600
syntax clear syntax clear
elseif exists("b:current_syntax") elseif exists("b:current_syntax")
finish finish
endif endif
let main_syntax = 'css' let main_syntax = 'css'
elseif exists("b:current_syntax") && b:current_syntax == "css"
finish
endif endif
let s:cpo_save = &cpo let s:cpo_save = &cpo
......
This diff is collapsed.
...@@ -22,6 +22,8 @@ if !exists("main_syntax") ...@@ -22,6 +22,8 @@ if !exists("main_syntax")
finish finish
endif endif
let main_syntax = 'javascript' let main_syntax = 'javascript'
elseif exists("b:current_syntax") && b:current_syntax == "javascript"
finish
endif endif
let s:cpo_save = &cpo let s:cpo_save = &cpo
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl/tree/master " Homepage: http://github.com/vim-perl/vim-perl/tree/master
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013-05-11 " Last Change: 2013 Jul 24
" Contributors: Andy Lester <andy@petdance.com> " Contributors: Andy Lester <andy@petdance.com>
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> " Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" Lukas Mai <l.mai.web.de> " Lukas Mai <l.mai.web.de>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
" let perl_sync_dist = 100 " let perl_sync_dist = 100
" unlet perl_fold " unlet perl_fold
" unlet perl_fold_blocks " unlet perl_fold_blocks
" let perl_nofold_packages = 1 " unlet perl_nofold_packages
" let perl_nofold_subs = 1 " let perl_nofold_subs = 1
" unlet perl_fold_anonymous_subs " unlet perl_fold_anonymous_subs
...@@ -67,7 +67,6 @@ endif ...@@ -67,7 +67,6 @@ endif
syn cluster perlTop contains=TOP syn cluster perlTop contains=TOP
syn region perlGenericBlock matchgroup=perlGenericBlock start="{" end="}" contained transparent
" All keywords " All keywords
...@@ -95,20 +94,20 @@ syn match perlStatementVector "\<vec\>" ...@@ -95,20 +94,20 @@ syn match perlStatementVector "\<vec\>"
syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>" syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>"
syn match perlStatementInclude "\<require\>" syn match perlStatementInclude "\<\%(require\|import\)\>"
syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
syn match perlStatementSocket "\<\%(acept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>"
syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>" syn match perlStatementNetwork "\<\%(\%(end\|[gs]et\)\%(host\|net\|proto\|serv\)ent\|get\%(\%(host\|net\)by\%(addr\|name\)\|protoby\%(name\|number\)\|servby\%(name\|port\)\)\)\>"
syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>" syn match perlStatementPword "\<\%(get\%(pw\%(uid\|nam\)\|gr\%(gid\|nam\)\|login\)\)\|\%(end\|[gs]et\)\%(pw\|gr\)ent\>"
syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>" syn match perlStatementTime "\<\%(gmtime\|localtime\|time\)\>"
syn match perlStatementMisc "\<\%(warn\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>" syn match perlStatementMisc "\<\%(warn\|format\|formline\|reset\|scalar\|prototype\|lock\|tied\=\|untie\)\>"
syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained
syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlGenericBlock extend syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlBraces extend
syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!" syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
...@@ -153,7 +152,7 @@ else ...@@ -153,7 +152,7 @@ else
endif endif
if !exists("perl_no_extended_vars") if !exists("perl_no_extended_vars")
syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlGenericBlock syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces
syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
...@@ -161,8 +160,8 @@ if !exists("perl_no_extended_vars") ...@@ -161,8 +160,8 @@ if !exists("perl_no_extended_vars")
syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend
syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained extend syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained extend
syn match perlVarSimpleMemberName "\I\i*" contained syn match perlVarSimpleMemberName "\I\i*" contained
...@@ -223,7 +222,7 @@ syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" cont ...@@ -223,7 +222,7 @@ syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" cont
syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>" syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>"
syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+" syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+"
syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\="
syn match perlFloat "\.[[:digit:]_]\+\%([eE][\-+]\=\d\+\)\=" syn match perlFloat "\.[[:digit:]][[:digit:]_]*\%([eE][\-+]\=\d\+\)\="
syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV
syn match perlVStringV "\<v" contained syn match perlVStringV "\<v" contained
...@@ -241,38 +240,38 @@ syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesD ...@@ -241,38 +240,38 @@ syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesD
" Simple version of searches and matches " Simple version of searches and matches
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgc]*+ contains=@perlInterpMatch keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgc]*+ contains=@perlInterpMatch keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[msixpodualgc]*+ contains=@perlInterpMatch keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[msixpodualgc]*+ contains=@perlInterpMatch keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgc]*+ contains=@perlInterpSQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgc]*+ contains=@perlInterpSQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgc]*+ contains=@perlInterpMatch,perlParensDQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgc]*+ contains=@perlInterpMatch,perlParensDQ keepend extend
" A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern " A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend extend
" Below some hacks to recognise the // variant. This is virtually impossible to catch in all " Below some hacks to recognise the // variant. This is virtually impossible to catch in all
" cases as the / is used in so many other ways, but these should be the most obvious ones. " cases as the / is used in so many other ways, but these should be the most obvious ones.
syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash extend
" Substitutions " Substitutions
" perlMatch is the first part, perlSubstitution* is the substitution part " perlMatch is the first part, perlSubstitution* is the substitution part
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+ end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+ end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s#+ end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s#+ end=+#+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[msixpodualgcer]*+ keepend contained contains=@perlInterpDQ syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[msixpodualgcer]*+ keepend contained contains=@perlInterpDQ extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlParensDQ keepend syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlParensDQ keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend
syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcer]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend
syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcer]*+ contained contains=@perlInterpSQ keepend syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcer]*+ contained contains=@perlInterpSQ keepend extend
" Translations " Translations
" perlMatch is the first part, perlTranslation* is the second, translator part. " perlMatch is the first part, perlTranslation* is the second, translator part.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
" Maintainer: vim-perl <vim-perl@googlegroups.com> " Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl/tree/master " Homepage: http://github.com/vim-perl/vim-perl/tree/master
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2009-07-04 " Last Change: 2013 Jul 24
" Contributors: Luke Palmer <fibonaci@babylonia.flatirons.org> " Contributors: Luke Palmer <fibonaci@babylonia.flatirons.org>
" Moritz Lenz <moritz@faui2k3.org> " Moritz Lenz <moritz@faui2k3.org>
......
" Vim syntax file
" Modified from http://plnet.org/files/vim/
" using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html
" 2012-11-13 Alan Thompson
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case ignore
" Todo.
syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE
" pl1CommentGroup allows adding matches for special things in comments
" 20010723az: Added this so that these could be matched in comments...
syn cluster pl1CommentGroup contains=pl1Todo
syn match pl1Garbage "[^ \t()]"
syn match pl1Identifier "[a-z][a-z0-9$_#]*"
syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*"
" 20010723az: When wanted, highlight the trailing whitespace -- this is
" based on c_space_errors
if exists("c_space_errors")
if !exists("c_no_trail_space_error")
syn match pl1SpaceError "\s\+$"
endif
if !exists("c_no_tab_space_error")
syn match pl1SpaceError " \+\t"me=e-1
endif
endif
" Symbols.
syn match pl1Symbol "\(;\|,\|\.\)"
syn match pl1PreProcSym "%"
" Operators.
syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)"
syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)"
" Attributes
syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT
syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL
syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY
syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED
syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE
syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED
syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS
syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION
syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL
syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE
syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT
syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM
syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL
" Functions
syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT
syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG
syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS
syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION
syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE
syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY
syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH
syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2
syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL
syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT
syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND
syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT
syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM
syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN
" Other keywords
syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION
syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE
syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE
syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD
syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ
syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2
syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO
syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O
syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS
syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE
syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT
syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE
syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL
syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO
syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION
syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL
syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE
syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL
syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER
syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT
syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER
syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER
syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT
syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS
syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT
syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE
syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE
syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG
syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY
syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL
syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE
syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV
" PreProcessor keywords
syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR
syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC
syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE
" Statements
syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY
syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE
syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP
syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE
syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF
syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT
syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP
syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE
" PL1's own keywords
" syn match pl1Keyword "\<END\>"
" syn match pl1Keyword "\.COUNT\>"hs=s+1
" syn match pl1Keyword "\.EXISTS\>"hs=s+1
" syn match pl1Keyword "\.FIRST\>"hs=s+1
" syn match pl1Keyword "\.LAST\>"hs=s+1
" syn match pl1Keyword "\.DELETE\>"hs=s+1
" syn match pl1Keyword "\.PREV\>"hs=s+1
" syn match pl1Keyword "\.NEXT\>"hs=s+1
if exists("pl1_highlight_triggers")
syn keyword pl1Trigger INSERTING UPDATING DELETING
endif
" Conditionals.
syn keyword pl1Conditional ELSIF ELSE IF
syn match pl1Conditional "\<END\s\+IF\>"
" Loops.
syn keyword pl1Repeat FOR LOOP WHILE FORALL
syn match pl1Repeat "\<END\s\+LOOP\>"
" Various types of comments.
" 20010723az: Added the ability to treat strings within comments just like
" C does.
if exists("c_comment_strings")
syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)"
syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip
syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$"
syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
else
syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError
syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError
endif
" 20010723az: These are the old comment commands ... commented out.
" syn match pl1Comment "--.*$" contains=pl1Todo
" syn region pl1Comment start="/\*" end="\*/" contains=pl1Todo
syn sync ccomment pl1Comment
syn sync ccomment pl1CommentL
" To catch unterminated string literals.
syn match pl1StringError "'.*$"
" Various types of literals.
" 20010723az: Added stuff for comment matching.
syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
syn match pl1IntLiteral contained "[+-]\=\d\+"
syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*"
syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*"
"syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\="
syn match pl1CharLiteral "'[^']'"
syn match pl1StringLiteral "'\([^']\|''\)*'"
syn keyword pl1BooleanLiteral TRUE FALSE NULL
" The built-in types.
syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN
syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL
syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR
syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE
syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB
syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER
syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD
syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME
syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED
syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED
syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR
syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE
" A type-attribute is really a type.
" 20020916bp: Removed leading part of pattern to avoid highlighting the
" object
syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>"
" All other attributes.
syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>"
" Catch errors caused by wrong parentheses and brackets
" 20010723az: significantly more powerful than the values -- commented out
" below the replaced values. This adds the C functionality to PL/SQL.
syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom
if exists("c_no_bracket_error")
syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup
syn match pl1ParenError ")"
syn match pl1ErrInParen contained "[{}]"
else
syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket
syn match pl1ParenError "[\])]"
syn match pl1ErrInParen contained "[{}]"
syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen
syn match pl1ErrInBracket contained "[);{}]"
endif
" syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,pl1ParenError
" syn match pl1ParenError ")"
" Syntax Synchronizing
syn sync minlines=10 maxlines=100
" Define the default highlighting.
" For version 5.x and earlier, only when not done already.
" For version 5.8 and later, only when and item doesn't have highlighting
" yet.
if version >= 508 || !exists("did_pl1_syn_inits")
if version < 508
let did_pl1_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink pl1Attribute Macro
HiLink pl1BlockError Error
HiLink pl1BooleanLiteral Boolean
HiLink pl1CharLiteral Character
HiLink pl1Comment Comment
HiLink pl1CommentL Comment
HiLink pl1Conditional Conditional
HiLink pl1Error Error
HiLink pl1ErrInBracket Error
HiLink pl1ErrInBlock Error
HiLink pl1ErrInParen Error
HiLink pl1Exception Function
HiLink pl1FloatLiteral Float
HiLink pl1Function Function
HiLink pl1Garbage Error
HiLink pl1HostIdentifier Label
HiLink pl1Identifier Normal
HiLink pl1IntLiteral Number
HiLink pl1Operator Operator
HiLink pl1Paren Normal
HiLink pl1ParenError Error
HiLink pl1SpaceError Error
HiLink pl1Pseudo PreProc
HiLink pl1PreProc PreProc
HiLink pl1PreProcSym PreProc
HiLink pl1Keyword Keyword
HiLink pl1Other Keyword
HiLink pl1Repeat Repeat
HiLink pl1Statement Keyword
HiLink pl1Storage StorageClass
HiLink pl1StringError Error
HiLink pl1StringLiteral String
HiLink pl1CommentString String
HiLink pl1Comment2String String
HiLink pl1Symbol Normal
HiLink pl1Trigger Function
HiLink pl1TypeAttribute StorageClass
HiLink pl1Todo Todo
delcommand HiLink
endif
let b:current_syntax = "pl1"
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
" Previously: Scott Bigham <dsb@killerbunnies.org> " Previously: Scott Bigham <dsb@killerbunnies.org>
" Homepage: http://github.com/vim-perl/vim-perl " Homepage: http://github.com/vim-perl/vim-perl
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: 2013 May 30 " Last Change: 2013 Jul 24
" To add embedded POD documentation highlighting to your syntax file, add " To add embedded POD documentation highlighting to your syntax file, add
" the commands: " the commands:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment