aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/autoload/phpcomplete.vim100
-rw-r--r--runtime/colors/evening.vim6
-rw-r--r--runtime/doc/options.txt2
-rw-r--r--runtime/doc/syntax.txt36
-rw-r--r--runtime/ftplugin/mf.vim11
-rw-r--r--runtime/ftplugin/mp.vim13
-rw-r--r--runtime/indent/mp.vim35
-rw-r--r--runtime/syntax/avra.vim4
8 files changed, 136 insertions, 71 deletions
diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim
index 0d01bc8bf1..8e38867a77 100644
--- a/runtime/autoload/phpcomplete.vim
+++ b/runtime/autoload/phpcomplete.vim
@@ -3,7 +3,7 @@
" Maintainer: Dávid Szabó ( complex857 AT gmail DOT com )
" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" URL: https://github.com/shawncplus/phpcomplete.vim
-" Last Change: 2015 Jul 13
+" Last Change: 2016 Oct 10
"
" OPTIONS:
"
@@ -195,6 +195,8 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{
" }}}
elseif context =~? 'implements'
return phpcomplete#CompleteClassName(a:base, ['i'], current_namespace, imports)
+ elseif context =~? 'instanceof'
+ return phpcomplete#CompleteClassName(a:base, ['c', 'n'], current_namespace, imports)
elseif context =~? 'extends\s\+.\+$' && a:base == ''
return ['implements']
elseif context =~? 'extends'
@@ -787,6 +789,8 @@ function! phpcomplete#CompleteClassName(base, kinds, current_namespace, imports)
if kinds == ['c', 'i']
let filterstr = 'v:val =~? "\\(class\\|interface\\)\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"'
+ elseif kinds == ['c', 'n']
+ let filterstr = 'v:val =~? "\\(class\\|namespace\\)\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"'
elseif kinds == ['c']
let filterstr = 'v:val =~? "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*"'
elseif kinds == ['i']
@@ -996,7 +1000,7 @@ function! phpcomplete#CompleteUserClass(context, base, sccontent, visibility) "
let required_modifiers += ['static']
endif
let all_variable = filter(deepcopy(a:sccontent),
- \ 'v:val =~ "^\\s*\\(var\\s\\+\\|public\\s\\+\\|protected\\s\\+\\|private\\s\\+\\|final\\s\\+\\|abstract\\s\\+\\|static\\s\\+\\)\\+\\$"')
+ \ 'v:val =~ "\\(^\\s*\\(var\\s\\+\\|public\\s\\+\\|protected\\s\\+\\|private\\s\\+\\|final\\s\\+\\|abstract\\s\\+\\|static\\s\\+\\)\\+\\$\\|^\\s*\\(\\/\\|\\*\\)*\\s*@property\\s\\+\\S\\+\\s\\S\\{-}\\s*$\\)"')
let variables = []
for i in all_variable
@@ -1160,6 +1164,14 @@ function! phpcomplete#GetTaglist(pattern) " {{{
endif
let tags = taglist(a:pattern)
+ for tag in tags
+ for prop in keys(tag)
+ if prop == 'cmd' || prop == 'static' || prop == 'kind' || prop == 'builtin'
+ continue
+ endif
+ let tag[prop] = substitute(tag[prop], '\\\\', '\\', 'g')
+ endfor
+ endfor
let s:cache_tags[a:pattern] = tags
let has_key = has_key(s:cache_tags, a:pattern)
let s:cache_tags_checksum = cache_checksum
@@ -1379,7 +1391,7 @@ function! phpcomplete#GetCallChainReturnType(classname_candidate, class_candidat
" Get Structured information of all classes and subclasses including namespace and includes
" try to find the method's return type in docblock comment
for classstructure in classcontents
- let docblock_target_pattern = 'function\s\+&\?'.method.'\|\(public\|private\|protected\|var\).\+\$'.method
+ let docblock_target_pattern = 'function\s\+&\?'.method.'\>\|\(public\|private\|protected\|var\).\+\$'.method.'\>\|@property.\+\$'.method.'\>'
let doc_str = phpcomplete#GetDocBlock(split(classstructure.content, '\n'), docblock_target_pattern)
if doc_str != ''
break
@@ -1387,8 +1399,17 @@ function! phpcomplete#GetCallChainReturnType(classname_candidate, class_candidat
endfor
if doc_str != ''
let docblock = phpcomplete#ParseDocBlock(doc_str)
- if has_key(docblock.return, 'type') || has_key(docblock.var, 'type')
- let type = has_key(docblock.return, 'type') ? docblock.return.type : docblock.var.type
+ if has_key(docblock.return, 'type') || has_key(docblock.var, 'type') || len(docblock.properties) > 0
+ let type = has_key(docblock.return, 'type') ? docblock.return.type : has_key(docblock.var, 'type') ? docblock.var.type : ''
+
+ if type == ''
+ for property in docblock.properties
+ if property.description =~? method
+ let type = property.type
+ break
+ endif
+ endfor
+ endif
" there's a namespace in the type, threat the type as FQCN
if type =~ '\\'
@@ -1554,6 +1575,9 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
elseif get(methodstack, 0) =~# function_invocation_pattern
let function_name = matchstr(methodstack[0], '^\s*\zs'.function_name_pattern)
let function_file = phpcomplete#GetFunctionLocation(function_name, a:current_namespace)
+ if function_file == ''
+ let function_file = phpcomplete#GetFunctionLocation(function_name, '\')
+ endif
if function_file == 'VIMPHP_BUILTINFUNCTION'
" built in function, grab the return type from the info string
@@ -1569,7 +1593,7 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
let [class_candidate_namespace, function_imports] = phpcomplete#GetCurrentNameSpace(file_lines)
" try to expand the classname of the returned type with the context got from the function's source file
- let [classname_candidate, unused] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
+ let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
endif
endif
if classname_candidate != ''
@@ -1650,9 +1674,10 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
let sub_methodstack = phpcomplete#GetMethodStack(matchstr(line, '^\s*'.object.'\s*=&\?\s*\s\+\zs.*'))
let [classname_candidate, class_candidate_namespace] = phpcomplete#GetCallChainReturnType(
\ classname,
- \ a:current_namespace,
+ \ namespace_for_class,
\ a:imports,
\ sub_methodstack)
+
return (class_candidate_namespace == '\' || class_candidate_namespace == '') ? classname_candidate : class_candidate_namespace.'\'.classname_candidate
endif
endif
@@ -1783,6 +1808,9 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
let [function_name, function_namespace] = phpcomplete#ExpandClassName(function_name, a:current_namespace, a:imports)
let function_file = phpcomplete#GetFunctionLocation(function_name, function_namespace)
+ if function_file == ''
+ let function_file = phpcomplete#GetFunctionLocation(function_name, '\')
+ endif
if function_file == 'VIMPHP_BUILTINFUNCTION'
" built in function, grab the return type from the info string
@@ -1798,7 +1826,7 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
let classname_candidate = docblock.return.type
let [class_candidate_namespace, function_imports] = phpcomplete#GetCurrentNameSpace(file_lines)
" try to expand the classname of the returned type with the context got from the function's source file
- let [classname_candidate, unused] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
+ let [classname_candidate, class_candidate_namespace] = phpcomplete#ExpandClassName(classname_candidate, class_candidate_namespace, function_imports)
break
endif
endif
@@ -1861,6 +1889,8 @@ function! phpcomplete#GetClassName(start_line, context, current_namespace, impor
for tag in tags
if tag.kind ==? 'v' && tag.cmd =~? '=\s*new\s\+\zs'.class_name_pattern.'\ze'
let classname = matchstr(tag.cmd, '=\s*new\s\+\zs'.class_name_pattern.'\ze')
+ " unescape the classname, it would have "\" doubled since it is an ex command
+ let classname = substitute(classname, '\\\(\_.\)', '\1', 'g')
return classname
endif
endfor
@@ -2077,6 +2107,19 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam
endif
call searchpair('{', '', '}', 'W')
let class_closing_bracket_line = line('.')
+
+ " Include class docblock
+ let doc_line = cfline - 1
+ if getline(doc_line) =~? '^\s*\*/'
+ while doc_line != 0
+ if getline(doc_line) =~? '^\s*/\*\*'
+ let cfline = doc_line
+ break
+ endif
+ let doc_line -= 1
+ endwhile
+ endif
+
let classcontent = join(getline(cfline, class_closing_bracket_line), "\n")
let used_traits = []
@@ -2241,8 +2284,19 @@ function! phpcomplete#GetDocBlock(sccontent, search) " {{{
let line = a:sccontent[i]
" search for a function declaration
if line =~? a:search
- let l = i - 1
- " start backward serch for the comment block
+ if line =~? '@property'
+ let doc_line = i
+ while doc_line != sccontent_len - 1
+ if a:sccontent[doc_line] =~? '^\s*\*/'
+ let l = doc_line
+ break
+ endif
+ let doc_line += 1
+ endwhile
+ else
+ let l = i - 1
+ endif
+ " start backward search for the comment block
while l != 0
let line = a:sccontent[l]
" if it's a one line docblock like comment and we can just return it right away
@@ -2263,7 +2317,7 @@ function! phpcomplete#GetDocBlock(sccontent, search) " {{{
return ''
end
- while l != 0
+ while l >= 0
let line = a:sccontent[l]
if line =~? '^\s*/\*\*'
let comment_start = l
@@ -2297,9 +2351,10 @@ function! phpcomplete#ParseDocBlock(docblock) " {{{
\ 'return': {},
\ 'throws': [],
\ 'var': {},
+ \ 'properties': [],
\ }
- let res.description = substitute(matchstr(a:docblock, '\zs\_.\{-}\ze\(@var\|@param\|@return\|$\)'), '\(^\_s*\|\_s*$\)', '', 'g')
+ let res.description = substitute(matchstr(a:docblock, '\zs\_.\{-}\ze\(@type\|@var\|@param\|@return\|$\)'), '\(^\_s*\|\_s*$\)', '', 'g')
let docblock_lines = split(a:docblock, "\n")
let param_lines = filter(copy(docblock_lines), 'v:val =~? "^@param"')
@@ -2334,15 +2389,26 @@ function! phpcomplete#ParseDocBlock(docblock) " {{{
endif
endfor
- let var_line = filter(copy(docblock_lines), 'v:val =~? "^@var"')
+ let var_line = filter(copy(docblock_lines), 'v:val =~? "^\\(@var\\|@type\\)"')
if len(var_line) > 0
- let var_parts = matchlist(var_line[0], '@var\s\+\(\S\+\)\s*\(.*\)')
+ let var_parts = matchlist(var_line[0], '\(@var\|@type\)\s\+\(\S\+\)\s*\(.*\)')
let res['var'] = {
\ 'line': var_parts[0],
- \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(var_parts, 1, '')),
- \ 'description': get(var_parts, 2, '')}
+ \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(var_parts, 2, '')),
+ \ 'description': get(var_parts, 3, '')}
endif
+ let property_lines = filter(copy(docblock_lines), 'v:val =~? "^@property"')
+ for property_line in property_lines
+ let parts = matchlist(property_line, '\(@property\)\s\+\(\S\+\)\s*\(.*\)')
+ if len(parts) > 0
+ call add(res.properties, {
+ \ 'line': parts[0],
+ \ 'type': phpcomplete#GetTypeFromDocBlockParam(get(parts, 2, '')),
+ \ 'description': get(parts, 3, '')})
+ endif
+ endfor
+
return res
endfunction
" }}}
@@ -2498,6 +2564,7 @@ function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{
let name = matchstr(name, '\\\zs[^\\]\+\ze$')
endif
endif
+
" leading slash is not required use imports are always absolute
let imports[name] = {'name': object, 'kind': ''}
endfor
@@ -2533,6 +2600,7 @@ function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{
elseif !exists('no_namespace_candidate')
" save the first namespacless match to be used if no better
" candidate found later on
+ let tag.namespace = namespace_for_classes
let no_namespace_candidate = tag
endif
endif
diff --git a/runtime/colors/evening.vim b/runtime/colors/evening.vim
index 5dae08280e..5257307593 100644
--- a/runtime/colors/evening.vim
+++ b/runtime/colors/evening.vim
@@ -1,6 +1,6 @@
" Vim color file
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 Apr 14
+" Last Change: 2016 Oct 10
" This color scheme uses a dark grey background.
@@ -45,8 +45,8 @@ hi CursorColumn term=reverse ctermbg=Black guibg=grey40
hi CursorLine term=underline cterm=underline guibg=grey40
" Groups for syntax highlighting
-hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0 guibg=grey5
-hi Special term=bold ctermfg=LightRed guifg=Orange guibg=grey5
+hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0
+hi Special term=bold ctermfg=LightRed guifg=Orange
if &t_Co > 8
hi Statement term=bold cterm=bold ctermfg=Yellow guifg=#ffff60 gui=bold
endif
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index b0b47cc243..bbfd6d32d3 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -3431,6 +3431,8 @@ A jump table for the options with a short description can be found at |Q_op|.
original position when no match is found and when pressing <Esc>. You
still need to finish the search command with <Enter> to move the
cursor to the match.
+ You can use the CTRL-G and CTRL-T keys to move to the next and
+ previous match. |c_CTRL-G| |c_CTRL-T|
Vim only searches for about half a second. With a complicated
pattern and/or a lot of text the match may not be found. This is to
avoid that Vim hangs while you are typing the pattern.
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 1ee35e19dd..9e4f546f64 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -2850,9 +2850,11 @@ vimrc file: >
(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>)
-SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
+ *ft-posix-synax* *ft-dash-syntax*
+SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
-This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
+This covers syntax highlighting for the older Unix (Bourne) sh, and newer
+shells such as bash, dash, posix, and the Korn shells.
Vim attempts to determine which shell type is in use by specifying that
various filenames are of specific types: >
@@ -2861,28 +2863,31 @@ various filenames are of specific types: >
bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash
<
If none of these cases pertain, then the first line of the file is examined
-(ex. /bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype,
-then that shelltype is used. However some files (ex. .profile) are known to
-be shell files but the type is not apparent. Furthermore, on many systems
-sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix).
+(ex. looking for /bin/sh /bin/ksh /bin/bash). If the first line specifies a
+shelltype, then that shelltype is used. However some files (ex. .profile) are
+known to be shell files but the type is not apparent. Furthermore, on many
+systems sh is symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh"
+(Posix).
-One may specify a global default by instantiating one of the following three
+One may specify a global default by instantiating one of the following
variables in your vimrc:
- ksh: >
+ ksh: >
let g:is_kornshell = 1
-< posix: (using this is the same as setting is_kornshell to 1) >
+< posix: (using this is the nearly the same as setting g:is_kornshell to 1) >
let g:is_posix = 1
< bash: >
let g:is_bash = 1
< sh: (default) Bourne shell >
let g:is_sh = 1
+< (dash users should use posix)
+
If there's no "#! ..." line, and the user hasn't availed himself/herself of a
default sh.vim syntax setting as just shown, then syntax/sh.vim will assume
the Bourne shell syntax. No need to quote RFCs or market penetration
statistics in error reports, please -- just select the default version of the
-sh your system uses in your vimrc.
+sh your system uses and install the associated "let..." in your <.vimrc>.
The syntax/sh.vim file provides several levels of syntax-based folding: >
@@ -2891,7 +2896,7 @@ The syntax/sh.vim file provides several levels of syntax-based folding: >
let g:sh_fold_enabled= 2 (enable heredoc folding)
let g:sh_fold_enabled= 4 (enable if/do/for folding)
>
-then various syntax items (HereDocuments and function bodies) become
+then various syntax items (ie. HereDocuments and function bodies) become
syntax-foldable (see |:syn-fold|). You also may add these together
to get multiple types of folding: >
@@ -2915,14 +2920,7 @@ reduce this, the "sh_maxlines" internal variable can be set. Example: >
The default is to use the twice sh_minlines. Set it to a smaller number to
speed up displaying. The disadvantage is that highlight errors may appear.
- *g:sh_isk* *g:sh_noisk*
-The shell languages appear to let "." be part of words, commands, etc;
-consequently it should be in the isk for sh.vim. As of v116 of syntax/sh.vim,
-syntax/sh.vim will append the "." to |'iskeyword'| by default; you may control
-this behavior with: >
- let g:sh_isk = '..whatever characters you want as part of iskeyword'
- let g:sh_noisk= 1 " otherwise, if this exists, the isk will NOT chg
-<
+
*sh-embed* *sh-awk*
Sh: EMBEDDING LANGUAGES~
diff --git a/runtime/ftplugin/mf.vim b/runtime/ftplugin/mf.vim
index fa567368ea..7c9a8a1283 100644
--- a/runtime/ftplugin/mf.vim
+++ b/runtime/ftplugin/mf.vim
@@ -2,7 +2,7 @@
" Language: METAFONT
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2016 Oct 1
+" Latest Revision: 2016 Oct 2
if exists("b:did_ftplugin")
finish
@@ -25,7 +25,7 @@ let g:omni_syntax_group_exclude_mf = 'mfTodoComment'
let s:mp_regex = {
\ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|beginchar\|beginlogochar\)\>',
- \ 'endsection' : '^\s*\%(enddef\|endchar\|endlogochar\)\>',
+ \ 'endsection' : '^\s*\%(enddef\|endchar\)\>',
\ 'beginblock' : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>',
\ 'endblock' : '^\s*\%(endgroup\|fi\|endfor\)\>'
\ }
@@ -35,9 +35,7 @@ function! s:move_around(count, what, flags, visual)
exe "normal! gv"
endif
call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark
- for i in range(2, a:count)
- call search(s:mp_regex[a:what], a:flags)
- endfor
+ call map(range(2, a:count), 'search(s:mp_regex[a:what], a:flags)')
endfunction
@@ -62,8 +60,7 @@ if exists("loaded_matchit")
\ '\<for\%(\|suffixes\|ever\)\>:\<exit\%(if\|unless\)\>:\<endfor\>,' .
\ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' .
\ '\<begingroup\>:\<endgroup\>,' .
- \ '\<beginchar\>:\<endchar\>' .
- \ '\<beginlogochar\>:\<endlogochar\>'
+ \ '\<begin\%(logo\)\?char\>:\<endchar\>'
" Ignore comments and strings
let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
\ =~# "mf\\(Comment\\|String\\)$"'
diff --git a/runtime/ftplugin/mp.vim b/runtime/ftplugin/mp.vim
index a3c9af342b..3a0a3d0298 100644
--- a/runtime/ftplugin/mp.vim
+++ b/runtime/ftplugin/mp.vim
@@ -2,7 +2,7 @@
" Language: MetaPost
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2016 Oct 1
+" Latest Revision: 2016 Oct 2
if exists("b:did_ftplugin")
finish
@@ -34,7 +34,7 @@ endif
let s:mp_regex = {
\ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|begin\%(fig\|char\|logochar\|glyph\|graph\)\)\>',
- \ 'endsection' : '^\s*\%(enddef\|end\%(fig\|char\|logochar\|glyph\|graph\)\)\>',
+ \ 'endsection' : '^\s*\%(enddef\|end\%(fig\|char\|glyph\|graph\)\)\>',
\ 'beginblock' : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>',
\ 'endblock' : '^\s*\%(endgroup\|fi\|endfor\)\>'
\ }
@@ -44,9 +44,7 @@ function! s:move_around(count, what, flags, visual)
exe "normal! gv"
endif
call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark
- for i in range(2, a:count)
- call search(s:mp_regex[a:what], a:flags)
- endfor
+ call map(range(2, a:count), 'search(s:mp_regex[a:what], a:flags)')
endfunction
@@ -72,9 +70,8 @@ if exists("loaded_matchit")
\ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' .
\ '\<beginfig\>:\<endfig\>,' .
\ '\<begingroup\>:\<endgroup\>,' .
- \ '\<beginchar\>:\<endchar\>' .
- \ '\<beginlogochar\>:\<endlogochar\>' .
- \ '\<beginglyph\>:\<endglyph\>' .
+ \ '\<begin\%(logo\)\?char\>:\<endchar\>,' .
+ \ '\<beginglyph\>:\<endglyph\>,' .
\ '\<begingraph\>:\<endgraph\>'
" Ignore comments and strings
let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name")
diff --git a/runtime/indent/mp.vim b/runtime/indent/mp.vim
index c9639efed3..86fa2539c1 100644
--- a/runtime/indent/mp.vim
+++ b/runtime/indent/mp.vim
@@ -2,7 +2,7 @@
" Language: MetaPost
" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
" Former Maintainers: Eugene Minkovskii <emin@mccme.ru>
-" Last Change: 2016 Oct 01
+" Last Change: 2016 Oct 2, 4:13pm
" Version: 0.2
if exists("b:did_indent")
@@ -57,7 +57,7 @@ let g:mp_open_tag = ''
let g:mp_close_tag = ''
\ . '\<fi\>'
\ . '\|\<else\%[if]\>'
- \ . '\|\<end\%(\|for\|group\|def\|fig\|char\|logochar\|glyph\|graph\)\>'
+ \ . '\|\<end\%(\|for\|group\|def\|fig\|char\|glyph\|graph\)\>'
\ . '\|[)\]}]'
" Statements that may span multiple lines and are ended by a semicolon. To
@@ -118,12 +118,10 @@ function! s:CommentOrString(line, pos)
return in_string || (c >= 0 && c <= a:pos)
endfunction
-" Find the first non-comment non-blank line before the current line. Skip also
-" verbatimtex/btex... etex blocks.
+" Find the first non-comment non-blank line before the current line.
function! s:PrevNonBlankNonComment(lnum)
let l:lnum = prevnonblank(a:lnum - 1)
- while getline(l:lnum) =~# '^\s*%' ||
- \ synIDattr(synID(a:lnum, 1, 1), "name") =~# '^mpTeXinsert$\|^tex\|^Delimiter'
+ while getline(l:lnum) =~# '^\s*%'
let l:lnum = prevnonblank(l:lnum - 1)
endwhile
return l:lnum
@@ -220,25 +218,32 @@ endfunction
"
" Example:
"
-" shiftwidth=4
" def foo =
-" makepen(subpath(T-n,t) of r %>
-" shifted .5down %>
-" --subpath(t,T) of r shifted .5up -- cycle) %<<
+" makepen(
+" subpath(T-n,t) of r %>
+" shifted .5down %>
+" --subpath(t,T) of r shifted .5up -- cycle %<<<
+" )
" withcolor black
" enddef
"
" The default indentation of the previous example would be:
"
" def foo =
-" makepen(subpath(T-n,t) of r
-" shifted .5down
-" --subpath(t,T) of r shifted .5up -- cycle)
+" makepen(
+" subpath(T-n,t) of r
+" shifted .5down
+" --subpath(t,T) of r shifted .5up -- cycle
+" )
" withcolor black
" enddef
"
" Personally, I prefer the latter, but anyway...
function! GetMetaPostIndentIntern()
+ " Do not touch indentation inside verbatimtex/btex.. etex blocks.
+ if synIDattr(synID(v:lnum, 1, 1), "name") =~# '^mpTeXinsert$\|^tex\|^Delimiter'
+ return -1
+ endif
" This is the reference line relative to which the current line is indented
" (but see below).
@@ -327,8 +332,8 @@ function! GetMetaPostIndentIntern()
"
" for i = 1 upto 3: % <-- Current line: this gets the same indent as `draw ...`
"
- " NOTE: we get here if and only if L does not contain a statement (among
- " those listed in g:mp_statement).
+ " NOTE: we get here only if L does not contain a statement (among those
+ " listed in g:mp_statement).
if s:ValidMatchEnd(prev_text, ';'.s:eol, 0) >= 0 " L ends with a semicolon
let stm_lnum = s:PrevNonBlankNonComment(lnum)
while stm_lnum > 0
diff --git a/runtime/syntax/avra.vim b/runtime/syntax/avra.vim
index ebf0aaff11..0e02bd8397 100644
--- a/runtime/syntax/avra.vim
+++ b/runtime/syntax/avra.vim
@@ -2,14 +2,12 @@
" Language: AVR Assembler (AVRA)
" AVRA Home: http://avra.sourceforge.net/index.html
" AVRA Version: 1.3.0
+" Last Update: 2016 Oct 7
" Maintainer: Marius Ghita <mhitza@gmail.com>
let s:cpo_save = &cpo
set cpo&vim
-setlocal iskeyword=a-z,A-Z,48-57,.,_
-" 'isident' is a global option, better not set it
-" setlocal isident=a-z,A-Z,48-57,.,_
syn case ignore
syn keyword avraRegister r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14