Massive update :)

This commit is contained in:
Adam Stankiewicz 2013-11-02 23:27:57 +01:00
parent 57cfac7ae3
commit 30c1920e4f
20 changed files with 354 additions and 124 deletions

View File

@ -4,12 +4,12 @@
" License: WTFPL " License: WTFPL
" Load the coffee and html indent functions. " Load the coffee and html indent functions.
unlet b:did_indent silent! unlet b:did_indent
runtime indent/coffee.vim runtime indent/coffee.vim
let s:coffeeIndentExpr = &l:indentexpr let s:coffeeIndentExpr = &l:indentexpr
" Load html last so it can overwrite coffee settings. " Load html last so it can overwrite coffee settings.
unlet b:did_indent silent! unlet b:did_indent
runtime indent/html.vim runtime indent/html.vim
let s:htmlIndentExpr = &l:indentexpr let s:htmlIndentExpr = &l:indentexpr

View File

@ -97,6 +97,7 @@ if has("gui_running") || &t_Co==256
if out !~ '^cssDefinition ' | continue | endif if out !~ '^cssDefinition ' | continue | endif
let out = substitute( out, ' \+xxx \+', ' ', '' ) let out = substitute( out, ' \+xxx \+', ' ', '' )
let out = substitute( out, ' contains=\zs', '@cssColors,', '' ) let out = substitute( out, ' contains=\zs', '@cssColors,', '' )
syn clear cssDefinition
exe 'syn region' out exe 'syn region' out
endfor endfor
endif endif

View File

@ -28,13 +28,37 @@ if len(s:goarch) == 0
endif endif
endif endif
function! go#complete#PackageMembers(package, member)
silent! let content = system('godoc ' . a:package)
if v:shell_error || !len(content)
return []
endif
let lines = filter(split(content, "\n"),"v:val !~ '^\\s\\+$'")
try
let mx1 = '^\s\+\(\S+\)\s\+=\s\+.*'
let mx2 = '^\%(const\|var\|type\|func\) \([A-Z][^ (]\+\).*'
let candidates =
\ map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, "\\1", "")')
\ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, "\\1", "")')
return filter(candidates, '!stridx(v:val, a:member)')
catch
return []
endtry
endfunction
function! go#complete#Package(ArgLead, CmdLine, CursorPos) function! go#complete#Package(ArgLead, CmdLine, CursorPos)
let dirs = [] let dirs = []
let words = split(a:CmdLine, '\s\+', 1)
if len(words) > 2
" Complete package members
return go#complete#PackageMembers(words[1], words[2])
endif
if executable('go') if executable('go')
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g') let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
if v:shell_error if v:shell_error
echo '\'go env GOROOT\' failed' echomsg '\'go env GOROOT\' failed'
endif endif
else else
let goroot = $GOROOT let goroot = $GOROOT
@ -44,7 +68,11 @@ function! go#complete#Package(ArgLead, CmdLine, CursorPos)
let dirs += [goroot] let dirs += [goroot]
endif endif
let workspaces = split($GOPATH, ':') let pathsep = ':'
if s:goos == 'windows'
let pathsep = ';'
endif
let workspaces = split($GOPATH, pathsep)
if workspaces != [] if workspaces != []
let dirs += workspaces let dirs += workspaces
endif endif
@ -56,16 +84,20 @@ function! go#complete#Package(ArgLead, CmdLine, CursorPos)
let ret = {} let ret = {}
for dir in dirs for dir in dirs
let root = expand(dir . '/pkg/' . s:goos . '_' . s:goarch) " this may expand to multiple lines
for i in split(globpath(root, a:ArgLead.'*'), "\n") let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), "\n")
call add(root, expand(dir . '/src'))
for r in root
for i in split(globpath(r, a:ArgLead.'*'), "\n")
if isdirectory(i) if isdirectory(i)
let i .= '/' let i .= '/'
elseif i !~ '\.a$' elseif i !~ '\.a$'
continue continue
endif endif
let i = substitute(substitute(i[len(root)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g') let i = substitute(substitute(i[len(r)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
let ret[i] = i let ret[i] = i
endfor endfor
endfor endfor
endfor
return sort(keys(ret)) return sort(keys(ret))
endfunction endfunction

View File

@ -12,11 +12,25 @@
" It tries to preserve cursor position and avoids " It tries to preserve cursor position and avoids
" replacing the buffer with stderr output. " replacing the buffer with stderr output.
" "
" Options:
"
" g:go_fmt_commands [default=1]
"
" Flag to indicate whether to enable the commands listed above.
"
if exists("b:did_ftplugin_go_fmt") if exists("b:did_ftplugin_go_fmt")
finish finish
endif endif
if !exists("g:go_fmt_commands")
let g:go_fmt_commands = 1
endif
if g:go_fmt_commands
command! -buffer Fmt call s:GoFormat() command! -buffer Fmt call s:GoFormat()
endif
function! s:GoFormat() function! s:GoFormat()
let view = winsaveview() let view = winsaveview()

View File

@ -24,23 +24,40 @@
" imported, an error will be displayed and the buffer will be " imported, an error will be displayed and the buffer will be
" untouched. " untouched.
" "
" In addition to these commands, there are also two shortcuts mapped: " If you would like to add shortcuts, you can do so by doing the following:
" "
" \f - Runs :Import fmt " Import fmt
" \F - Runs :Drop fmt " au Filetype go nnoremap <buffer> <LocalLeader>f :Import fmt<CR>
" "
" The backslash is the default maplocalleader, so it is possible that " Drop fmt
" au Filetype go nnoremap <buffer> <LocalLeader>F :Drop fmt<CR>
"
" Import the word under your cursor
" au Filetype go nnoremap <buffer> <LocalLeader>k
" \ :exe 'Import ' . expand('<cword>')<CR>
"
" The backslash '\' is the default maplocalleader, so it is possible that
" your vim is set to use a different character (:help maplocalleader). " your vim is set to use a different character (:help maplocalleader).
" "
" Options:
"
" g:go_import_commands [default=1]
"
" Flag to indicate whether to enable the commands listed above.
"
if exists("b:did_ftplugin_go_import") if exists("b:did_ftplugin_go_import")
finish finish
endif endif
if !exists("g:go_import_commands")
let g:go_import_commands = 1
endif
if g:go_import_commands
command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>) command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>)
command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>) command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>)
command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>) command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>)
map <buffer> <LocalLeader>f :Import fmt<CR> endif
map <buffer> <LocalLeader>F :Drop fmt<CR>
function! s:SwitchImport(enabled, localname, path) function! s:SwitchImport(enabled, localname, path)
let view = winsaveview() let view = winsaveview()

View File

@ -457,7 +457,7 @@ function! s:GetLabelCache(file)
if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file) if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)
" Open file in temporary split window for label extraction. " Open file in temporary split window for label extraction.
silent execute '1sp +let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . a:file silent execute '1sp +let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . fnameescape(a:file)
let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ] let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ]
endif endif

View File

@ -437,7 +437,7 @@ endfunction
function! s:FindClosestSection(toc, fileindices) function! s:FindClosestSection(toc, fileindices)
let file = expand('%:p') let file = expand('%:p')
if !has_key(a:fileindices, file) if !has_key(a:fileindices, file)
echoe 'Current file is not included in main tex file ' . LatexBox_GetMainTexFile() . '.' return 0
endif endif
let imax = len(a:fileindices[file]) let imax = len(a:fileindices[file])

View File

@ -80,24 +80,14 @@ function! s:TOCActivate(close)
execute b:calling_win . 'wincmd w' execute b:calling_win . 'wincmd w'
let bnr = bufnr(entry['file']) let files = [entry['file']]
if bnr == -1 for line in filter(readfile(entry['file']), 'v:val =~ ''\\input{''')
execute 'badd ' . entry['file'] call add(files, matchstr(line, '{\zs.*\ze\(\.tex\)\?}') . '.tex')
let bnr = bufnr(entry['file']) endfor
endif
execute 'buffer! ' . bnr " Find section in buffer (or inputted files)
call s:TOCFindMatch('\\' . entry['level'] . '\_\s*{' . titlestr . '}',
" skip duplicates \ duplicates, files)
while duplicates > 0
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
let duplicates -= 1
endif
endwhile
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
normal zv
endif
if a:close if a:close
if g:LatexBox_split_resize if g:LatexBox_split_resize
@ -109,6 +99,30 @@ function! s:TOCActivate(close)
endif endif
endfunction endfunction
" {{{2 TOCFindMatch
function! s:TOCFindMatch(strsearch,duplicates,files)
call s:TOCOpenBuf(a:files[0])
let dups = a:duplicates
" Skip duplicates
while dups > 0
if search(a:strsearch, 'w')
let dups -= 1
else
break
endif
endwhile
if search(a:strsearch, 'w')
normal! zv
return
endif
call s:TOCFindMatch(a:strsearch,dups,a:files[1:])
endfunction
" {{{2 TOCFoldLevel " {{{2 TOCFoldLevel
function! TOCFoldLevel(lnum) function! TOCFoldLevel(lnum)
let line = getline(a:lnum) let line = getline(a:lnum)
@ -140,12 +154,25 @@ function! TOCFoldLevel(lnum)
" Return previous fold level " Return previous fold level
return "=" return "="
endfunction endfunction
" {{{2 TOCFoldText " {{{2 TOCFoldText
function! TOCFoldText() function! TOCFoldText()
let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$') let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$')
return printf('%-8s%-72s', parts[1], parts[2]) return printf('%-8s%-72s', parts[1], parts[2])
endfunction endfunction
" {{{2 TOCOpenBuf
function! s:TOCOpenBuf(file)
let bnr = bufnr(a:file)
if bnr == -1
execute 'badd ' . a:file
let bnr = bufnr(a:file)
endif
execute 'buffer! ' . bnr
endfunction
" }}}1 " }}}1
" {{{1 Mappings " {{{1 Mappings

View File

@ -33,14 +33,14 @@ endif
setlocal include=\\<\\(use\\\|require\\)\\> setlocal include=\\<\\(use\\\|require\\)\\>
setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','') setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','')
setlocal define=[^A-Za-z_] setlocal define=[^A-Za-z_]
setlocal iskeyword+=:
" The following line changes a global variable but is necessary to make " The following line changes a global variable but is necessary to make
" gf and similar commands work. The change to iskeyword was incorrect. " gf and similar commands work. Thanks to Andrew Pimlott for pointing
" Thanks to Andrew Pimlott for pointing out the problem. If this causes a " out the problem. If this causes a problem for you, add an
" problem for you, add an after/ftplugin/perl.vim file that contains " after/ftplugin/perl.vim file that contains
" set isfname-=: " set isfname-=:
set isfname+=: set isfname+=:
set iskeyword+=:
" Set this once, globally. " Set this once, globally.
if !exists("perlpath") if !exists("perlpath")

View File

@ -1,8 +1,10 @@
compiler typescript compiler typescript
setlocal autoindent setlocal autoindent
setlocal cindent
setlocal smartindent setlocal smartindent
setlocal indentexpr& setlocal indentexpr&
setlocal cindent
setlocal cino=j1J1
setlocal commentstring=//\ %s setlocal commentstring=//\ %s

View File

@ -25,6 +25,7 @@ let s:block_skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" . s:s
let s:block_start = 'do\|fn' let s:block_start = 'do\|fn'
let s:block_middle = 'else\|match\|elsif\|catch\|after\|rescue' let s:block_middle = 'else\|match\|elsif\|catch\|after\|rescue'
let s:block_end = 'end' let s:block_end = 'end'
let s:pipeline = '^\s*|>.*$'
let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$' let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$'
let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>' let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>'
@ -38,7 +39,7 @@ function! GetElixirIndent(...)
return 0 return 0
endif endif
if synIDattr(synID(v:lnum, 1, 1), "name") !~ '\(Comment\|String\)$' if synIDattr(synID(v:lnum, 1, 1), "name") !~ s:skip_syntax
let splited_line = split(getline(lnum), '\zs') let splited_line = split(getline(lnum), '\zs')
let opened_symbol = 0 let opened_symbol = 0
let opened_symbol += count(splited_line, '[') - count(splited_line, ']') let opened_symbol += count(splited_line, '[') - count(splited_line, ']')
@ -51,6 +52,29 @@ function! GetElixirIndent(...)
let ind += &sw let ind += &sw
endif endif
" if line starts with pipeline
" and last line doesn't start with pipeline
if getline(v:lnum) =~ s:pipeline &&
\ getline(lnum) !~ s:pipeline
let ind += &sw
endif
" if last line starts with pipeline
" and currentline doesn't start with pipeline
if getline(lnum) =~ s:pipeline &&
\ getline(v:lnum) !~ s:pipeline
let ind -= &sw
endif
" if last line starts with pipeline
" and current line doesn't start with pipeline
" but last line started a block
if getline(lnum) =~ s:pipeline &&
\ getline(v:lnum) !~ s:pipeline &&
\ getline(lnum) =~ s:block_start
let ind += &sw
endif
if getline(v:lnum) =~ s:deindent_keywords if getline(v:lnum) =~ s:deindent_keywords
let bslnum = searchpair( '\<\%(' . s:block_start . '\):\@!\>', let bslnum = searchpair( '\<\%(' . s:block_start . '\):\@!\>',
\ '\<\%(' . s:block_middle . '\):\@!\>\zs', \ '\<\%(' . s:block_middle . '\):\@!\>\zs',

View File

@ -343,27 +343,27 @@ fun! HtmlIndentGet(lnum)
let lind = indent(lnum) let lind = indent(lnum)
for tags in s:omittable " for tags in s:omittable
let tags_exp = '<\(' . join(tags, '\|') . '\)>' " let tags_exp = '<\(' . join(tags, '\|') . '\)>'
let close_tags_exp = '</\(' . join(tags, '\|') . '\)>' " let close_tags_exp = '</\(' . join(tags, '\|') . '\)>'
if getline(a:lnum) =~ tags_exp " if getline(a:lnum) =~ tags_exp
let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW') " let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
let prev_tag = search(tags_exp, 'bW', block_start) " let prev_tag = search(tags_exp, 'bW', block_start)
let prev_closetag = search(close_tags_exp, 'W', a:lnum) " let prev_closetag = search(close_tags_exp, 'W', a:lnum)
if prev_tag && !prev_closetag " if prev_tag && !prev_closetag
let ind = ind - 1 " let ind = ind - 1
endif " endif
endif " endif
if getline(a:lnum) =~ '</\w\+>' " if getline(a:lnum) =~ '</\w\+>'
let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW') " let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
let prev_tag = search(tags_exp, 'bW', block_start) " let prev_tag = search(tags_exp, 'bW', block_start)
let prev_closetag = search(close_tags_exp, 'W', a:lnum) " let prev_closetag = search(close_tags_exp, 'W', a:lnum)
if prev_tag && !prev_closetag " if prev_tag && !prev_closetag
let ind = ind - 1 " let ind = ind - 1
endif " endif
endif " endif
endfor " endfor
if restore_ic == 0 if restore_ic == 0
setlocal noic setlocal noic

View File

@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Rust " Language: Rust
" Author: Chris Morgan <me@chrismorgan.info> " Author: Chris Morgan <me@chrismorgan.info>
" Last Change: 2013 Jul 10 " Last Change: 2013 Oct 29
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
if exists("b:did_indent") if exists("b:did_indent")
@ -104,8 +104,23 @@ function GetRustIndent(lnum)
let prevline = s:get_line_trimmed(prevnonblank(a:lnum - 1)) let prevline = s:get_line_trimmed(prevnonblank(a:lnum - 1))
if prevline[len(prevline) - 1] == "," if prevline[len(prevline) - 1] == ","
\ && s:get_line_trimmed(a:lnum) !~ "^\\s*[\\[\\]{}]" \ && s:get_line_trimmed(a:lnum) !~ "^\\s*[\\[\\]{}]"
\ && prevline !~ "^\\s*fn\\s"
" Oh ho! The previous line ended in a comma! I bet cindent will try to " Oh ho! The previous line ended in a comma! I bet cindent will try to
" take this too far... For now, let's use the previous line's indent " take this too far... For now, let's normally use the previous line's
" indent.
" One case where this doesn't work out is where *this* line contains
" square or curly brackets; then we normally *do* want to be indenting
" further.
"
" Another case where we don't want to is one like a function
" definition with arguments spread over multiple lines:
"
" fn foo(baz: Baz,
" baz: Baz) // <-- cindent gets this right by itself
"
" There are probably other cases where we don't want to do this as
" well. Add them as needed.
return GetRustIndent(a:lnum - 1) return GetRustIndent(a:lnum - 1)
endif endif

View File

@ -38,7 +38,7 @@ syntax match clojureKeyword "\v<:{1,2}%([^ \n\r\t()\[\]{}";@^`~\\%/]+/)*[^ \n\r\
syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained syntax match clojureStringEscape "\v\\%([\\btnfr"]|u\x{4}|[0-3]\o{2}|\o{1,2})" contained
syntax region clojureString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape syntax region clojureString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=clojureStringEscape,@Spell
syntax match clojureCharacter "\\." syntax match clojureCharacter "\\."
syntax match clojureCharacter "\\o\%([0-3]\o\{2\}\|\o\{1,2\}\)" syntax match clojureCharacter "\\o\%([0-3]\o\{2\}\|\o\{1,2\}\)"

View File

@ -15,9 +15,6 @@ silent! unlet b:current_syntax
" Highlight long strings. " Highlight long strings.
syntax sync fromstart syntax sync fromstart
" CoffeeScript identifiers can have dollar signs.
setlocal isident+=$
" These are `matches` instead of `keywords` because vim's highlighting " These are `matches` instead of `keywords` because vim's highlighting
" priority for keywords is higher than matches. This causes keywords to be " priority for keywords is higher than matches. This causes keywords to be
" highlighted inside matches, even if a match says it shouldn't contain them -- " highlighted inside matches, even if a match says it shouldn't contain them --
@ -67,7 +64,7 @@ syn match coffeeSpecialVar /\<\%(this\|prototype\|arguments\)\>/ display
hi def link coffeeSpecialVar Special hi def link coffeeSpecialVar Special
" An @-variable " An @-variable
syn match coffeeSpecialIdent /@\%(\I\i*\)\?/ display syn match coffeeSpecialIdent /@\%(\%(\I\|\$\)\%(\i\|\$\)*\)\?/ display
hi def link coffeeSpecialIdent Identifier hi def link coffeeSpecialIdent Identifier
" A class-like name that starts with a capital letter " A class-like name that starts with a capital letter
@ -95,15 +92,16 @@ syn region coffeeString start=/'/ skip=/\\\\\|\\'/ end=/'/
hi def link coffeeString String hi def link coffeeString String
" A integer, including a leading plus or minus " A integer, including a leading plus or minus
syn match coffeeNumber /\i\@<![-+]\?\d\+\%([eE][+-]\?\d\+\)\?/ display syn match coffeeNumber /\%(\i\|\$\)\@<![-+]\?\d\+\%([eE][+-]\?\d\+\)\?/ display
" A hex, binary, or octal number " A hex, binary, or octal number
syn match coffeeNumber /\<0[xX]\x\+\>/ display syn match coffeeNumber /\<0[xX]\x\+\>/ display
syn match coffeeNumber /\<0[bB][01]\+\>/ display syn match coffeeNumber /\<0[bB][01]\+\>/ display
syn match coffeeNumber /\<0[oO][0-7]\+\>/ display syn match coffeeNumber /\<0[oO][0-7]\+\>/ display
syn match coffeeNumber /\<\%(Infinity\|NaN\)\>/ display
hi def link coffeeNumber Number hi def link coffeeNumber Number
" A floating-point number, including a leading plus or minus " A floating-point number, including a leading plus or minus
syn match coffeeFloat /\i\@<![-+]\?\d*\.\@<!\.\d\+\%([eE][+-]\?\d\+\)\?/ syn match coffeeFloat /\%(\i\|\$\)\@<![-+]\?\d*\.\@<!\.\d\+\%([eE][+-]\?\d\+\)\?/
\ display \ display
hi def link coffeeFloat Float hi def link coffeeFloat Float
@ -114,7 +112,7 @@ syn match coffeeReservedError /\<\%(case\|default\|function\|var\|void\|with\|co
hi def link coffeeReservedError Error hi def link coffeeReservedError Error
" A normal object assignment " A normal object assignment
syn match coffeeObjAssign /@\?\I\i*\s*\ze::\@!/ contains=@coffeeIdentifier display syn match coffeeObjAssign /@\?\%(\I\|\$\)\%(\i\|\$\)*\s*\ze::\@!/ contains=@coffeeIdentifier display
hi def link coffeeObjAssign Identifier hi def link coffeeObjAssign Identifier
syn keyword coffeeTodo TODO FIXME XXX contained syn keyword coffeeTodo TODO FIXME XXX contained
@ -148,7 +146,7 @@ hi def link coffeeEscape SpecialChar
" A regex -- must not follow a parenthesis, number, or identifier, and must not " A regex -- must not follow a parenthesis, number, or identifier, and must not
" be followed by a number " be followed by a number
syn region coffeeRegex start=#\%(\%()\|\i\@<!\d\)\s*\|\i\)\@<!/=\@!\s\@!# syn region coffeeRegex start=#\%(\%()\|\%(\i\|\$\)\@<!\d\)\s*\|\i\)\@<!/=\@!\s\@!#
\ end=#/[gimy]\{,4}\d\@!# \ end=#/[gimy]\{,4}\d\@!#
\ oneline contains=@coffeeBasicString,coffeeRegexCharSet \ oneline contains=@coffeeBasicString,coffeeRegexCharSet
syn region coffeeRegexCharSet start=/\[/ end=/]/ contained syn region coffeeRegexCharSet start=/\[/ end=/]/ contained
@ -182,11 +180,11 @@ syn match coffeeSemicolonError /;$/ display
hi def link coffeeSemicolonError Error hi def link coffeeSemicolonError Error
" Ignore reserved words in dot accesses. " Ignore reserved words in dot accesses.
syn match coffeeDotAccess /\.\@<!\.\s*\I\i*/he=s+1 contains=@coffeeIdentifier syn match coffeeDotAccess /\.\@<!\.\s*\%(\I\|\$\)\%(\i\|\$\)*/he=s+1 contains=@coffeeIdentifier
hi def link coffeeDotAccess coffeeExtendedOp hi def link coffeeDotAccess coffeeExtendedOp
" Ignore reserved words in prototype accesses. " Ignore reserved words in prototype accesses.
syn match coffeeProtoAccess /::\s*\I\i*/he=s+2 contains=@coffeeIdentifier syn match coffeeProtoAccess /::\s*\%(\I\|\$\)\%(\i\|\$\)*/he=s+2 contains=@coffeeIdentifier
hi def link coffeeProtoAccess coffeeExtendedOp hi def link coffeeProtoAccess coffeeExtendedOp
" This is required for interpolations to work. " This is required for interpolations to work.

View File

@ -7,7 +7,7 @@ if exists("b:current_syntax")
endif endif
syn case match syn case match
syn match godocTitle "^\([A-Z]*\)$" syn match godocTitle "^\([A-Z][A-Z ]*\)$"
command -nargs=+ HiLink hi def link <args> command -nargs=+ HiLink hi def link <args>

105
syntax/mason.vim Normal file
View File

@ -0,0 +1,105 @@
" Vim syntax file
" Language: Mason (Perl embedded in HTML)
" Maintainer: vim-perl <vim-perl@googlegroups.com>
" Homepage: http://github.com/vim-perl/vim-perl/tree/master
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
" Last Change: {{LAST_CHANGE}}
" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
" Andrew Smith <andrewdsmith@yahoo.com>
"
" TODO:
" - Fix <%text> blocks to show HTML tags but ignore Mason tags.
"
" Clear previous syntax settings unless this is v6 or above, in which case just
" exit without doing anything.
"
if version < 600
syn clear
elseif exists("b:current_syntax")
finish
endif
" The HTML syntax file included below uses this variable.
"
if !exists("main_syntax")
let main_syntax = 'mason'
endif
" First pull in the HTML syntax.
"
if version < 600
so <sfile>:p:h/html.vim
else
runtime! syntax/html.vim
unlet b:current_syntax
endif
syn cluster htmlPreproc add=@masonTop
" Now pull in the Perl syntax.
"
if version < 600
syn include @perlTop <sfile>:p:h/perl.vim
unlet b:current_syntax
syn include @podTop <sfile>:p:h/pod.vim
else
syn include @perlTop syntax/perl.vim
unlet b:current_syntax
syn include @podTop syntax/pod.vim
endif
" It's hard to reduce down to the correct sub-set of Perl to highlight in some
" of these cases so I've taken the safe option of just using perlTop in all of
" them. If you have any suggestions, please let me know.
"
syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop
syn region masonPerlBraces start="{" end="}" contained
syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop,masonPerlBraces
syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop
syn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=masonPod,@perlTop
syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%(\a\+:\)\?[._/[:alnum:]]*" end="&>" contains=@perlTop
syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop
syn region masonInit matchgroup=Delimiter start="<%init>" end="</%init>" contains=masonPod,@perlTop
syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="</%cleanup>" contains=masonPod,@perlTop
syn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contains=masonPod,@perlTop
syn region masonClass matchgroup=Delimiter start="<%class>" end="</%class>" contains=masonPod,@perlTop
syn region masonShared matchgroup=Delimiter start="<%shared>" end="</%shared>" contains=masonPod,@perlTop
syn region masonDef matchgroup=Delimiter start="<%def\s*[._/[:alnum:]]\+\s*>" end="</%def>" contains=@htmlTop
syn region masonMethod matchgroup=Delimiter start="<%method\s*[._/[:alnum:]]\+\s*>" end="</%method>" contains=@htmlTop
syn region masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=masonPod,@perlTop
syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=masonPod,@perlTop
syn region masonFilter matchgroup=Delimiter start="<%filter>" end="</%filter>" contains=masonPod,@perlTop
syn region masonDoc matchgroup=Delimiter start="<%doc>" end="</%doc>"
syn region masonText matchgroup=Delimiter start="<%text>" end="</%text>"
syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText
" Set up default highlighting. Almost all of this is done in the included
" syntax files.
"
if version >= 508 || !exists("did_mason_syn_inits")
if version < 508
let did_mason_syn_inits = 1
com -nargs=+ HiLink hi link <args>
else
com -nargs=+ HiLink hi def link <args>
endif
HiLink masonDoc Comment
HiLink masonPod Comment
delc HiLink
endif
let b:current_syntax = "mason"
if main_syntax == 'mason'
unlet main_syntax
endif

View File

@ -371,13 +371,6 @@ syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgr
syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
if !exists("perl_no_scope_in_variables")
syn match perlFunctionPRef "\h\w*::" contained
syn match perlFunctionName "\h\w*[^:]" contained
else
syn match perlFunctionName "\h[[:alnum:]_:]*" contained
endif
" The => operator forces a bareword to the left of it to be interpreted as " The => operator forces a bareword to the left of it to be interpreted as
" a string " a string
syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@=" syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="

View File

@ -3,7 +3,7 @@
" Maintainer: Patrick Walton <pcwalton@mozilla.com> " Maintainer: Patrick Walton <pcwalton@mozilla.com>
" Maintainer: Ben Blum <bblum@cs.cmu.edu> " Maintainer: Ben Blum <bblum@cs.cmu.edu>
" Maintainer: Chris Morgan <me@chrismorgan.info> " Maintainer: Chris Morgan <me@chrismorgan.info>
" Last Change: 2013 Sep 4 " Last Change: 2013 Oct 29
if version < 600 if version < 600
syntax clear syntax clear
@ -61,48 +61,48 @@ syn keyword rustEnumVariant Ok Err
" Functions {{{3 " Functions {{{3
"syn keyword rustFunction print println "syn keyword rustFunction print println
"syn keyword rustFunction range "syn keyword rustFunction range
"syn keyword rustFunction from_str
" Types and traits {{{3 " Types and traits {{{3
syn keyword rustTrait Any AnyOwnExt AnyRefExt AnyMutRefExt
syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr ToBytesConsume
syn keyword rustTrait Bool
syn keyword rustTrait ToCStr syn keyword rustTrait ToCStr
syn keyword rustTrait Char
syn keyword rustTrait Clone DeepClone syn keyword rustTrait Clone DeepClone
syn keyword rustTrait Eq ApproxEq Ord TotalEq TotalOrd Ordering Equiv syn keyword rustTrait Eq ApproxEq Ord TotalEq TotalOrd Ordering Equiv
syn keyword rustEnumVariant Less Equal Greater syn keyword rustEnumVariant Less Equal Greater
syn keyword rustTrait Char
syn keyword rustTrait Container Mutable Map MutableMap Set MutableSet syn keyword rustTrait Container Mutable Map MutableMap Set MutableSet
syn keyword rustTrait Default
syn keyword rustTrait Hash syn keyword rustTrait Hash
syn keyword rustTrait Times syn keyword rustTrait FromStr
syn keyword rustTrait FromIterator Extendable syn keyword rustTrait FromIterator Extendable
syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator ClonableIterator syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator ClonableIterator
syn keyword rustTrait OrdIterator MutableDoubleEndedIterator ExactSize syn keyword rustTrait OrdIterator MutableDoubleEndedIterator ExactSize
syn keyword rustTrait Times
syn keyword rustTrait Algebraic Trigonometric Exponential Hyperbolic
syn keyword rustTrait Bitwise BitCount Bounded
syn keyword rustTrait Integer Fractional Real RealExt
syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul
syn keyword rustTrait Orderable Signed Unsigned Round syn keyword rustTrait Orderable Signed Unsigned Round
syn keyword rustTrait Algebraic Trigonometric Exponential Hyperbolic syn keyword rustTrait Primitive Int Float ToStrRadix ToPrimitive FromPrimitive
syn keyword rustTrait Integer Fractional Real RealExt syn keyword rustTrait GenericPath Path PosixPath WindowsPath
syn keyword rustTrait Bitwise BitCount Bounded
syn keyword rustTrait Primitive Int Float ToStrRadix
syn keyword rustTrait GenericPath
syn keyword rustTrait Path
syn keyword rustTrait PosixPath
syn keyword rustTrait WindowsPath
syn keyword rustTrait RawPtr syn keyword rustTrait RawPtr
syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr ToBytesConsume syn keyword rustTrait SendStr SendStrOwned SendStrStatic IntoSendStr
syn keyword rustTrait Str StrVector StrSlice OwnedStr syn keyword rustTrait Str StrVector StrSlice OwnedStr
syn keyword rustTrait FromStr
syn keyword rustTrait IterBytes syn keyword rustTrait IterBytes
syn keyword rustTrait ToStr ToStrConsume syn keyword rustTrait ToStr ToStrConsume
syn keyword rustTrait CopyableTuple ImmutableTuple syn keyword rustTrait CopyableTuple ImmutableTuple
syn keyword rustTrait CloneableTuple1 ImmutableTuple1 syn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4
syn keyword rustTrait CloneableTuple2 CloneableTuple3 CloneableTuple4 CloneableTuple5 syn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8
syn keyword rustTrait CloneableTuple6 CloneableTuple7 CloneableTuple8 CloneableTuple9 syn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12
syn keyword rustTrait CloneableTuple10 CloneableTuple11 CloneableTuple12 syn keyword rustTrait ImmutableTuple1 ImmutableTuple2 ImmutableTuple3 ImmutableTuple4
syn keyword rustTrait ImmutableTuple2 ImmutableTuple3 ImmutableTuple4 ImmutableTuple5 syn keyword rustTrait ImmutableTuple5 ImmutableTuple6 ImmutableTuple7 ImmutableTuple8
syn keyword rustTrait ImmutableTuple6 ImmutableTuple7 ImmutableTuple8 ImmutableTuple9 syn keyword rustTrait ImmutableTuple9 ImmutableTuple10 ImmutableTuple11 ImmutableTuple12
syn keyword rustTrait ImmutableTuple10 ImmutableTuple11 ImmutableTuple12
syn keyword rustTrait Vector VectorVector CopyableVector ImmutableVector
syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCopyableVector syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCopyableVector
syn keyword rustTrait OwnedVector OwnedCopyableVector OwnedEqVector MutableVector syn keyword rustTrait OwnedVector OwnedCopyableVector OwnedEqVector MutableVector
syn keyword rustTrait Reader ReaderUtil Writer WriterUtil syn keyword rustTrait Vector VectorVector CopyableVector ImmutableVector
syn keyword rustTrait Default
"syn keyword rustFunction stream "syn keyword rustFunction stream
syn keyword rustTrait Port Chan GenericChan GenericSmartChan GenericPort Peekable syn keyword rustTrait Port Chan GenericChan GenericSmartChan GenericPort Peekable
@ -145,7 +145,7 @@ syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
syn match rustFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn?]\|\[\^\=.[^]]*\]\)" contained syn match rustFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn?]\|\[\^\=.[^]]*\]\)" contained
syn match rustFormat display "%%" contained syn match rustFormat display "%%" contained
syn match rustSpecial display contained /\\\([nrt\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/ syn match rustSpecial display contained /\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/
syn match rustStringContinuation display contained /\\\n\s*/ syn match rustStringContinuation display contained /\\\n\s*/
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustTodo,rustFormat,rustSpecial,rustStringContinuation syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustTodo,rustFormat,rustSpecial,rustStringContinuation
syn region rustString start='r\z(#*\)"' end='"\z1' syn region rustString start='r\z(#*\)"' end='"\z1'
@ -174,13 +174,13 @@ syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9
syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>" syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>"
" For the benefit of delimitMate " For the benefit of delimitMate
syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate
syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting "rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting
syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"
syn match rustCharacter /'\([^'\\]\|\\\([nrt\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial syn match rustCharacter /'\([^'\\]\|\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial
syn region rustCommentML start="/\*" end="\*/" contains=rustTodo syn region rustCommentML start="/\*" end="\*/" contains=rustTodo
syn region rustComment start="//" end="$" contains=rustTodo keepend syn region rustComment start="//" end="$" contains=rustTodo keepend

View File

@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: sbt " Language: sbt
" Maintainer: Derek Wyatt <derek@{myfirstname}{mylastname}.org> " Maintainer: Derek Wyatt <derek@{myfirstname}{mylastname}.org>
" Last Change: 2012 Jan 19 " Last Change: 2013 Oct 20
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -15,6 +15,7 @@ syn match sbtStringEscape "\\[nrfvb\\\"]" contained
syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)" syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)"
syn match sbtBeginningSeq "^[Ss]eq\>" syn match sbtBeginningSeq "^[Ss]eq\>"
syn match sbtAddPlugin "^addSbtPlugin\>"
syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)" syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)"
@ -25,6 +26,7 @@ syn region sbtDocComment start="/\*\*" end="\*/" keepend
hi link sbtString String hi link sbtString String
hi link sbtIdentitifer Keyword hi link sbtIdentitifer Keyword
hi link sbtBeginningSeq Keyword hi link sbtBeginningSeq Keyword
hi link sbtAddPlugin Keyword
hi link sbtSpecial Special hi link sbtSpecial Special
hi link sbtComment Comment hi link sbtComment Comment
hi link sbtLineComment Comment hi link sbtLineComment Comment