mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-10 04:23:51 -05:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a2b4f5cd8 | ||
|
|
f211f02d1e | ||
|
|
e45b23b6ee | ||
|
|
a0c5f3ee55 | ||
|
|
6b8c72637f | ||
|
|
d330fdc01b | ||
|
|
c225bf8826 | ||
|
|
20125ac3ac | ||
|
|
9f19823a30 | ||
|
|
56d5fc498b |
@@ -5,4 +5,4 @@ before_install: sudo apt-get install vim-gtk
|
||||
before_script:
|
||||
- "export DISPLAY=:99.0"
|
||||
- "sh -e /etc/init.d/xvfb start"
|
||||
script: bundle exec rspec
|
||||
script: bundle exec rspec --format=documentation
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
||||
au BufNewFile,BufRead *.clj,*.cljs,*.edn setf clojure
|
||||
autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure
|
||||
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
||||
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
||||
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
|
||||
@@ -108,7 +108,7 @@ au BufNewFile,BufRead *.jbuilder set filetype=ruby
|
||||
au BufNewFile,BufRead Puppetfile set filetype=ruby
|
||||
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
|
||||
au BufNewFile,BufRead Appraisals set filetype=ruby
|
||||
au BufRead,BufNewFile *.rs,*.rc set filetype=rust
|
||||
au BufRead,BufNewFile *.rs set filetype=rust
|
||||
au BufRead,BufNewFile *.sbt set filetype=sbt
|
||||
fun! s:DetectScala()
|
||||
if getline(1) == '#!/usr/bin/env scala'
|
||||
@@ -117,7 +117,7 @@ fun! s:DetectScala()
|
||||
endfun
|
||||
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
|
||||
au BufRead,BufNewFile * call s:DetectScala()
|
||||
autocmd BufNewFile,BufRead *.slim setf slim
|
||||
autocmd BufNewFile,BufRead *.slim set filetype=slim
|
||||
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
||||
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
||||
au BufRead,BufNewFile *.textile set filetype=textile
|
||||
|
||||
@@ -137,6 +137,7 @@ fu! <sid>Init(startline, endline) "{{{3
|
||||
\ . "| unlet! b:csv_SplitWindow b:csv_headerline"
|
||||
\ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep"
|
||||
\. " | unlet! b:browsefilter b:csv_cmt"
|
||||
\. " | unlet! b:csv_arrange_leftalign"
|
||||
|
||||
" Delete all functions
|
||||
" disabled currently, because otherwise when switching ft
|
||||
@@ -696,7 +697,11 @@ endfu
|
||||
|
||||
fu! <sid>UnArrangeCol(match) "{{{3
|
||||
" Strip leading white space, also trims empty records:
|
||||
return substitute(a:match, '^\s\+', '', '')
|
||||
if get(b:, 'csv_arrange_leftalign',0)
|
||||
return substitute(a:match, '\s\+\ze'. b:delimiter. '\?$', '', '')
|
||||
else
|
||||
return substitute(a:match, '^\s\+', '', '')
|
||||
endif
|
||||
" only strip leading white space, if a non-white space follows:
|
||||
"return substitute(a:match, '^\s\+\ze\S', '', '')
|
||||
endfu
|
||||
@@ -744,9 +749,18 @@ fu! <sid>Columnize(field) "{{{3
|
||||
let width=get(b:col_width, (s:columnize_count % s:max_cols), 20)
|
||||
|
||||
let s:columnize_count += 1
|
||||
let has_delimiter = (a:field =~# b:delimiter.'$')
|
||||
if v:version > 703 || v:version == 703 && has("patch713")
|
||||
" printf knows about %S (e.g. can handle char length
|
||||
return printf("%*S", width+1 , a:field)
|
||||
if get(b:, 'csv_arrange_leftalign',0)
|
||||
" left-align content
|
||||
return printf("%-*S%s", width+1 ,
|
||||
\ (has_delimiter ?
|
||||
\ matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
|
||||
\ (has_delimiter ? b:delimiter : ''))
|
||||
else
|
||||
return printf("%*S", width+1 , a:field)
|
||||
endif
|
||||
else
|
||||
" printf only handles bytes
|
||||
if !exists("g:csv_no_multibyte") &&
|
||||
@@ -768,7 +782,14 @@ fu! <sid>Columnize(field) "{{{3
|
||||
" Column has correct length, don't use printf()
|
||||
return a:field
|
||||
else
|
||||
return printf("%*s", width , a:field)
|
||||
if get(b:, 'csv_arrange_leftalign',0)
|
||||
" left-align content
|
||||
return printf("%-*s%s", width,
|
||||
\ (has_delimiter ? matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
|
||||
\ (has_delimiter ? b:delimiter : ''))
|
||||
else
|
||||
return printf("%*s", width , a:field)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfun
|
||||
@@ -1250,8 +1271,8 @@ fu! <sid>SumColumn(list) "{{{3
|
||||
if empty(item)
|
||||
continue
|
||||
endif
|
||||
let nr = matchstr(item, '\d\(.*\d\)\?$')
|
||||
let format1 = '^\d\+\zs\V' . s:nr_format[0] . '\m\ze\d'
|
||||
let nr = matchstr(item, '-\?\d\(.*\d\)\?$')
|
||||
let format1 = '^-\?\d\+\zs\V' . s:nr_format[0] . '\m\ze\d'
|
||||
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
|
||||
try
|
||||
let nr = substitute(nr, format1, '', '')
|
||||
@@ -2379,7 +2400,7 @@ fu! csv#EvalColumn(nr, func, first, last) range "{{{3
|
||||
endif
|
||||
let save = winsaveview()
|
||||
call <sid>CheckHeaderLine()
|
||||
let nr = matchstr(a:nr, '^\d\+')
|
||||
let nr = matchstr(a:nr, '^\-\?\d\+')
|
||||
let col = (empty(nr) ? <sid>WColumn() : nr)
|
||||
" don't take the header line into consideration
|
||||
let start = a:first - 1 + s:csv_fold_headerline
|
||||
|
||||
@@ -365,7 +365,7 @@ function! s:ExtractLabels()
|
||||
let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )
|
||||
|
||||
" Ignore cref entries (because they are duplicates)
|
||||
if curname =~ "\@cref"
|
||||
if curname =~ "\@cref\|cref\@"
|
||||
continue
|
||||
endif
|
||||
|
||||
|
||||
@@ -325,7 +325,7 @@ function! LatexBox_Latexmk(force)
|
||||
let g:latexmk_running_pids[basepath] = pid
|
||||
else
|
||||
let pid = substitute(system('pgrep -f "perl.*'
|
||||
\ . mainfile . '"'),'\D','','')
|
||||
\ . mainfile . '" | head -n 1'),'\D','','')
|
||||
let g:latexmk_running_pids[basepath] = pid
|
||||
endif
|
||||
else
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
setlocal textwidth=140
|
||||
setlocal shiftwidth=2
|
||||
setlocal softtabstop=2
|
||||
setlocal expandtab
|
||||
setlocal formatoptions=tcqr
|
||||
setlocal commentstring=//%s
|
||||
let &l:include = '^\s*import'
|
||||
let &l:includeexpr = 'substitute(v:fname,"\\.","/","g")'
|
||||
|
||||
@@ -148,6 +148,10 @@ if exists("*searchpairpos")
|
||||
return val
|
||||
endfunction
|
||||
|
||||
function! s:StripNamespaceAndMacroChars(word)
|
||||
return substitute(a:word, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
|
||||
endfunction
|
||||
|
||||
function! s:ClojureIsMethodSpecialCaseWorker(position)
|
||||
" Find the next enclosing form.
|
||||
call search('\S', 'Wb')
|
||||
@@ -167,7 +171,8 @@ if exists("*searchpairpos")
|
||||
call cursor(nextParen)
|
||||
|
||||
call search('\S', 'W')
|
||||
if g:clojure_special_indent_words =~ '\<' . s:CurrentWord() . '\>'
|
||||
let w = s:StripNamespaceAndMacroChars(s:CurrentWord())
|
||||
if g:clojure_special_indent_words =~ '\<' . w . '\>'
|
||||
return 1
|
||||
endif
|
||||
|
||||
@@ -273,7 +278,7 @@ if exists("*searchpairpos")
|
||||
" metacharacters.
|
||||
"
|
||||
" e.g. clojure.core/defn and #'defn should both indent like defn.
|
||||
let ww = substitute(w, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
|
||||
let ww = s:StripNamespaceAndMacroChars(w)
|
||||
|
||||
if &lispwords =~ '\V\<' . ww . '\>'
|
||||
return paren[1] + &shiftwidth - 1
|
||||
|
||||
@@ -10,7 +10,7 @@ let b:did_indent = 1
|
||||
|
||||
setlocal nosmartindent
|
||||
|
||||
setlocal indentexpr=GetElixirIndent(v:lnum)
|
||||
setlocal indentexpr=GetElixirIndent()
|
||||
setlocal indentkeys+==end,=else:,=match:,=elsif:,=catch:,=after:,=rescue:
|
||||
|
||||
if exists("*GetElixirIndent")
|
||||
@@ -25,12 +25,13 @@ let s:block_skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" . s:s
|
||||
let s:block_start = 'do\|fn'
|
||||
let s:block_middle = 'else\|match\|elsif\|catch\|after\|rescue'
|
||||
let s:block_end = 'end'
|
||||
let s:arrow = '^.*->$'
|
||||
let s:pipeline = '^\s*|>.*$'
|
||||
|
||||
let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$'
|
||||
let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>'
|
||||
let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$' . '\|' . s:arrow
|
||||
let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>' . '\|' . s:arrow
|
||||
|
||||
function! GetElixirIndent(...)
|
||||
function! GetElixirIndent()
|
||||
let lnum = prevnonblank(v:lnum - 1)
|
||||
let ind = indent(lnum)
|
||||
|
||||
@@ -39,50 +40,60 @@ function! GetElixirIndent(...)
|
||||
return 0
|
||||
endif
|
||||
|
||||
" TODO: Remove these 2 lines
|
||||
" I don't know why, but for the test on spec/indent/lists_spec.rb:24.
|
||||
" Vim is making some mess on parsing the syntax of 'end', it is being
|
||||
" recognized as 'elixirString' when should be recognized as 'elixirBlock'.
|
||||
" This forces vim to sync the syntax.
|
||||
call synID(v:lnum, 1, 1)
|
||||
syntax sync fromstart
|
||||
|
||||
if synIDattr(synID(v:lnum, 1, 1), "name") !~ s:skip_syntax
|
||||
let splited_line = split(getline(lnum), '\zs')
|
||||
let opened_symbol = 0
|
||||
let current_line = getline(v:lnum)
|
||||
let last_line = getline(lnum)
|
||||
|
||||
let splited_line = split(last_line, '\zs')
|
||||
let opened_symbol = 0
|
||||
let opened_symbol += count(splited_line, '[') - count(splited_line, ']')
|
||||
let opened_symbol += count(splited_line, '{') - count(splited_line, '}')
|
||||
|
||||
let ind += opened_symbol * &sw
|
||||
|
||||
if getline(lnum) =~ s:indent_keywords .
|
||||
\ '\|^\s*\%(.*->\)$'
|
||||
if last_line =~ s:indent_keywords
|
||||
let ind += &sw
|
||||
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
|
||||
" and last line is an attribution
|
||||
" indents pipeline in same level as attribution
|
||||
if current_line =~ s:pipeline &&
|
||||
\ last_line =~ '^[^=]\+=.\+$'
|
||||
let b:old_ind = ind
|
||||
let ind = float2nr(matchend(last_line, '=\s*[^ ]') / &sw) * &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
|
||||
" returns the indentation before the pipeline
|
||||
if last_line =~ s:pipeline &&
|
||||
\ current_line !~ s:pipeline
|
||||
let ind = b:old_ind
|
||||
endif
|
||||
|
||||
if getline(v:lnum) =~ s:deindent_keywords
|
||||
if current_line =~ s:deindent_keywords
|
||||
let bslnum = searchpair( '\<\%(' . s:block_start . '\):\@!\>',
|
||||
\ '\<\%(' . s:block_middle . '\):\@!\>\zs',
|
||||
\ '\<:\@<!' . s:block_end . '\>\zs',
|
||||
\ 'nbW',
|
||||
\ s:block_skip )
|
||||
|
||||
let ind = indent(bslnum)
|
||||
endif
|
||||
|
||||
" indent case statements '->'
|
||||
if current_line =~ s:arrow
|
||||
let ind += &sw
|
||||
endif
|
||||
endif
|
||||
|
||||
return ind
|
||||
|
||||
@@ -22,7 +22,7 @@ setlocal nosmartindent
|
||||
|
||||
" Now, set up our indentation expression and keys that trigger it.
|
||||
setlocal indentexpr=GetRubyIndent(v:lnum)
|
||||
setlocal indentkeys=0{,0},0),0],!^F,o,O,e,:
|
||||
setlocal indentkeys=0{,0},0),0],!^F,o,O,e,:,.
|
||||
setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end
|
||||
setlocal indentkeys+==private,=protected,=public
|
||||
|
||||
@@ -55,9 +55,10 @@ let s:skip_expr =
|
||||
\ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
|
||||
|
||||
" Regex used for words that, at the start of a line, add a level of indent.
|
||||
let s:ruby_indent_keywords = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
|
||||
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure' .
|
||||
\ '\|rescue\):\@!\>' .
|
||||
let s:ruby_indent_keywords =
|
||||
\ '^\s*\zs\<\%(module\|class\|if\|for' .
|
||||
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue' .
|
||||
\ '\|\%(public\|protected\|private\)\=\s*def\):\@!\>' .
|
||||
\ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' .
|
||||
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>'
|
||||
|
||||
@@ -70,7 +71,8 @@ let s:ruby_deindent_keywords =
|
||||
" TODO: the do here should be restricted somewhat (only at end of line)?
|
||||
let s:end_start_regex =
|
||||
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
|
||||
\ '\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\):\@!\>' .
|
||||
\ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
|
||||
\ '\|\%(public\|protected\|private\)\=\s*def\):\@!\>' .
|
||||
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
|
||||
|
||||
" Regex that defines the middle-match for the 'end' keyword.
|
||||
@@ -99,10 +101,10 @@ let s:bracket_continuation_regex = '%\@<!\%([({[]\)\s*\%(#.*\)\=$'
|
||||
let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that describes all indent access modifiers
|
||||
let s:access_modifier_regex = '\C^\s*\%(private\|public\|protected\)\s*\%(#.*\)\=$'
|
||||
let s:access_modifier_regex = '\C^\s*\%(public\|protected\|private\)\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that describes the indent access modifiers (excludes public)
|
||||
let s:indent_access_modifier_regex = '\C^\s*\%(private\|protected\)\s*\%(#.*\)\=$'
|
||||
let s:indent_access_modifier_regex = '\C^\s*\%(protected\|private\)\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that defines blocks.
|
||||
"
|
||||
@@ -118,6 +120,9 @@ let s:block_regex =
|
||||
|
||||
let s:block_continuation_regex = '^\s*[^])}\t ].*'.s:block_regex
|
||||
|
||||
" Regex that describes a leading operator (only a method call's dot for now)
|
||||
let s:leading_operator_regex = '^\s*[.]'
|
||||
|
||||
" 2. Auxiliary Functions {{{1
|
||||
" ======================
|
||||
|
||||
@@ -177,7 +182,11 @@ function s:GetMSL(lnum)
|
||||
" Otherwise, terminate search as we have found our MSL already.
|
||||
let line = getline(lnum)
|
||||
|
||||
if s:Match(lnum, s:splat_regex)
|
||||
if s:Match(msl, s:leading_operator_regex)
|
||||
" If the current line starts with a leading operator, keep its indent
|
||||
" and keep looking for an MSL.
|
||||
let msl = lnum
|
||||
elseif s:Match(lnum, s:splat_regex)
|
||||
" If the above line looks like the "*" of a splat, use the current one's
|
||||
" indentation.
|
||||
"
|
||||
@@ -440,6 +449,11 @@ function GetRubyIndent(...)
|
||||
return 0
|
||||
endif
|
||||
|
||||
" If the current line starts with a leading operator, add a level of indent.
|
||||
if s:Match(clnum, s:leading_operator_regex)
|
||||
return indent(s:GetMSL(clnum)) + &sw
|
||||
endif
|
||||
|
||||
" 3.3. Work on the previous line. {{{2
|
||||
" -------------------------------
|
||||
|
||||
@@ -479,6 +493,12 @@ function GetRubyIndent(...)
|
||||
return indent(s:GetMSL(lnum)) + &sw
|
||||
endif
|
||||
|
||||
" If the previous line started with a leading operator, use its MSL's level
|
||||
" of indent
|
||||
if s:Match(lnum, s:leading_operator_regex)
|
||||
return indent(s:GetMSL(lnum))
|
||||
endif
|
||||
|
||||
" If the previous line ended with the "*" of a splat, add a level of indent
|
||||
if line =~ s:splat_regex
|
||||
return indent(lnum) + &sw
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
require 'spec_helper'
|
||||
require 'timeout'
|
||||
|
||||
describe "My Vim plugin" do
|
||||
languages = Dir["#{$plugin_path}/syntax/*.vim"].map { |f| f.split('/').last.gsub('.vim', '') }
|
||||
|
||||
languages.each do |lang|
|
||||
it "should parse .#{lang} file" do
|
||||
write_file "test.#{lang}", ""
|
||||
vim.edit "test.#{lang}"
|
||||
vim.insert "sample"
|
||||
vim.write
|
||||
extensions = `cat ftdetect/polyglot.vim | grep '^au' | tr "\t" ' ' | cut -d ' ' -f 3 | grep -v / | grep -v '^\*$' | grep -v '^$'`.strip
|
||||
|
||||
extensions.gsub!(/\[(.).+\]/) { $1 }.gsub!('*', 'test')
|
||||
|
||||
extensions = extensions.split(/[\n,]/)
|
||||
|
||||
extensions.each do |ext|
|
||||
it "should parse #{ext} file" do
|
||||
Timeout::timeout(5) do
|
||||
write_file "#{ext}", ""
|
||||
vim.edit "#{ext}"
|
||||
vim.insert "sample"
|
||||
vim.write
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,7 +6,7 @@ $plugin_path = File.expand_path('../..', __FILE__)
|
||||
Vimrunner::RSpec.configure do |config|
|
||||
# Use a single Vim instance for the test suite. Set to false to use an
|
||||
# instance per test (slower, but can be easier to manage).
|
||||
config.reuse_server = true
|
||||
config.reuse_server = !ENV['REUSE_SERVER'].nil?
|
||||
|
||||
# Decide how to start a Vim instance. In this block, an instance should be
|
||||
# spawned and set up with anything project-specific.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -65,8 +65,8 @@ syn region elixirInterpolation matchgroup=elixirDelimiter start="#{" end="}" con
|
||||
|
||||
syn region elixirDocStringStart matchgroup=elixirDocString start=+"""+ end=+$+ oneline contains=ALLBUT,@elixirNotTop
|
||||
syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop
|
||||
syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo fold keepend
|
||||
syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo fold keepend
|
||||
syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend
|
||||
syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend
|
||||
|
||||
syn match elixirSymbolInterpolated ':\("\)\@=' contains=elixirString
|
||||
syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)"
|
||||
@@ -91,6 +91,10 @@ syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]<"
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]\[" end="\]" skip="\\\\\|\\\]" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw](" end=")" skip="\\\\\|\\)" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
|
||||
|
||||
" Sigils surrounded with docString
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start=+%[BCRWbcrw]\z("""\)+ end=+^\s*\zs\z1+ skip=+\\"+ fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start=+%[BCRWbcrw]\z('''\)+ end=+^\s*\zs\z1+ skip=+\\'+ fold
|
||||
|
||||
" Defines
|
||||
syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl
|
||||
syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl
|
||||
@@ -149,7 +153,7 @@ hi def link elixirBoolean Boolean
|
||||
hi def link elixirVariable Identifier
|
||||
hi def link elixirUnusedVariable Comment
|
||||
hi def link elixirNumber Number
|
||||
hi def link elixirDocString Comment
|
||||
hi def link elixirDocString String
|
||||
hi def link elixirSymbolInterpolated elixirSymbol
|
||||
hi def link elixirRegex elixirString
|
||||
hi def link elixirRegexEscape elixirSpecial
|
||||
|
||||
@@ -70,7 +70,7 @@ syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+
|
||||
syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained
|
||||
syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
|
||||
|
||||
syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" keepend nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
|
||||
syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
|
||||
syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
|
||||
syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
|
||||
syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
|
||||
|
||||
@@ -176,10 +176,10 @@ endif
|
||||
" File Descriptors
|
||||
syn match perlFiledescRead "<\h\w*>"
|
||||
|
||||
syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement
|
||||
syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
|
||||
syn match perlFiledescStatementComma "(\=\s*\<\u\w*\>\s*,"me=e-1 transparent contained contains=perlFiledescStatement
|
||||
syn match perlFiledescStatementNocomma "(\=\s*\<\u\w*\>\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
|
||||
|
||||
syn match perlFiledescStatement "\u\w*" contained
|
||||
syn match perlFiledescStatement "\<\u\w*\>" contained
|
||||
|
||||
" Special characters in strings and matches
|
||||
syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
|
||||
|
||||
133
syntax/php.vim
133
syntax/php.vim
File diff suppressed because one or more lines are too long
@@ -121,7 +121,7 @@ syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV
|
||||
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"
|
||||
|
||||
" Normal Regular Expression
|
||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
|
||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
|
||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
|
||||
|
||||
" Generalized Regular Expression
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
" Maintainer: Patrick Walton <pcwalton@mozilla.com>
|
||||
" Maintainer: Ben Blum <bblum@cs.cmu.edu>
|
||||
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||
" Last Change: 2013 Dec 10
|
||||
" Last Change: 2014 Jan 4
|
||||
|
||||
if version < 600
|
||||
syntax clear
|
||||
@@ -71,20 +71,19 @@ syn keyword rustTrait Bool
|
||||
syn keyword rustTrait ToCStr
|
||||
syn keyword rustTrait Char
|
||||
syn keyword rustTrait Clone DeepClone
|
||||
syn keyword rustTrait Eq ApproxEq Ord TotalEq TotalOrd Ordering Equiv
|
||||
syn keyword rustTrait Eq Ord TotalEq TotalOrd Ordering Equiv
|
||||
syn keyword rustEnumVariant Less Equal Greater
|
||||
syn keyword rustTrait Container Mutable Map MutableMap Set MutableSet
|
||||
syn keyword rustTrait Default
|
||||
syn keyword rustTrait Hash
|
||||
syn keyword rustTrait FromStr
|
||||
syn keyword rustTrait FromIterator Extendable
|
||||
syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator ClonableIterator
|
||||
syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator CloneableIterator
|
||||
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 Bitwise Bounded Integer Fractional Real RealExt
|
||||
syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul
|
||||
syn keyword rustTrait Orderable Signed Unsigned Round
|
||||
syn keyword rustTrait Primitive Int Float ToStrRadix ToPrimitive FromPrimitive
|
||||
@@ -148,8 +147,8 @@ syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
|
||||
syn match rustSpecialError display contained /\\./
|
||||
syn match rustSpecial display contained /\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/
|
||||
syn match rustStringContinuation display contained /\\\n\s*/
|
||||
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation
|
||||
syn region rustString start='r\z(#*\)"' end='"\z1'
|
||||
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation,@Spell
|
||||
syn region rustString start='r\z(#*\)"' end='"\z1' contains=@Spell
|
||||
|
||||
syn region rustAttribute start="#\[" end="\]" contains=rustString,rustDeriving
|
||||
syn region rustDeriving start="deriving(" end=")" contained contains=rustTrait
|
||||
@@ -180,10 +179,10 @@ syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit
|
||||
syn match rustCharacter /'\([^'\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial,rustSpecialError
|
||||
|
||||
syn cluster rustComment contains=rustCommentLine,rustCommentLineDoc,rustCommentBlock,rustCommentBlockDoc
|
||||
syn region rustCommentLine start="//" end="$" contains=rustTodo
|
||||
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo
|
||||
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,@rustComment keepend extend
|
||||
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,@rustComment keepend extend
|
||||
syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell
|
||||
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell
|
||||
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,@rustComment,@Spell keepend extend
|
||||
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,@rustComment,@Spell keepend extend
|
||||
" FIXME: this is a really ugly and not fully correct implementation. Most
|
||||
" importantly, a case like ``/* */*`` should have the final ``*`` not being in
|
||||
" a comment, but in practice at present it leaves comments open two levels
|
||||
|
||||
@@ -12,12 +12,14 @@ syn sync minlines=200 maxlines=1000
|
||||
syn keyword scalaKeyword catch do else final finally for forSome if
|
||||
syn keyword scalaKeyword match return throw try while yield
|
||||
syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite
|
||||
syn keyword scalaKeyword type nextgroup=scalaTypeDeclaration skipwhite
|
||||
syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite
|
||||
syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
|
||||
syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite
|
||||
hi link scalaKeyword Keyword
|
||||
|
||||
syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome
|
||||
hi link scalaAkkaSpecialWord PreProc
|
||||
|
||||
syn match scalaSymbol /'[_A-Za-z0-9$]\+/
|
||||
hi link scalaSymbol Number
|
||||
|
||||
@@ -28,35 +30,61 @@ hi link scalaChar Character
|
||||
hi link scalaEscapedChar Function
|
||||
hi link scalaUnicodeChar Special
|
||||
|
||||
syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained
|
||||
syn match scalaNameDefinition /`[^`]\+`/ contained
|
||||
syn match scalaOperator "||"
|
||||
syn match scalaOperator "&&"
|
||||
hi link scalaOperator Special
|
||||
|
||||
syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition
|
||||
syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition
|
||||
syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration
|
||||
hi link scalaNameDefinition Function
|
||||
|
||||
syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained
|
||||
syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash
|
||||
syn match scalaInstanceDeclaration /`[^`]\+`/ contained
|
||||
syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration
|
||||
hi link scalaInstanceDeclaration Special
|
||||
hi link scalaInstanceHash Type
|
||||
|
||||
syn match scalaTypeDeclaration /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension,scalaTypeEquals skipwhite
|
||||
syn match scalaTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypePostDeclaration skipwhite
|
||||
syn match scalaTypeExtension /\%(=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypeDeclaration skipwhite
|
||||
syn match scalaTypePostDeclaration /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypePostExtension skipwhite
|
||||
syn match scalaTypePostExtension /\%(=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypePostDeclaration skipwhite
|
||||
syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/
|
||||
hi link scalaCapitalWord Special
|
||||
|
||||
" Handle type declarations specially
|
||||
syn region scalaTypeStatement matchgroup=Keyword start=/\<type\_s\+\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement
|
||||
|
||||
" Ugh... duplication of all the scalaType* stuff to handle special highlighting
|
||||
" of `type X =` declarations
|
||||
syn match scalaTypeTypeDeclaration /(/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals contains=scalaRoundBrackets skipwhite
|
||||
syn match scalaTypeTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeTypeDeclaration contains=scalaTypeTypeExtension skipwhite
|
||||
syn match scalaTypeTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals skipwhite
|
||||
syn match scalaTypeTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite
|
||||
syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeTypeDeclaration skipwhite
|
||||
syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite
|
||||
syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite
|
||||
hi link scalaTypeTypeDeclaration Type
|
||||
hi link scalaTypeTypeExtension Keyword
|
||||
hi link scalaTypeTypePostDeclaration Special
|
||||
hi link scalaTypeTypePostExtension Keyword
|
||||
|
||||
syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite
|
||||
syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite
|
||||
syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite
|
||||
syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeDeclaration skipwhite
|
||||
hi link scalaTypeDeclaration Type
|
||||
hi link scalaTypeExtension Keyword
|
||||
hi link scalaTypePostDeclaration Special
|
||||
hi link scalaTypePostExtension Keyword
|
||||
|
||||
syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$)\s]:\_s*\)\@<=[_(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeExtension contains=scalaRoundBrackets
|
||||
hi link scalaTypeAnnotation Type
|
||||
syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets
|
||||
syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration
|
||||
hi link scalaTypeAnnotation Normal
|
||||
|
||||
syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]*\>/ contained
|
||||
syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained
|
||||
syn match scalaCaseFollowing /`[^`]\+`/ contained
|
||||
hi link scalaCaseFollowing Special
|
||||
|
||||
syn keyword scalaKeywordModifier abstract override final implicit lazy private protected sealed null require super
|
||||
syn keyword scalaKeywordModifier abstract override final lazy implicit implicitly private protected sealed null require super
|
||||
hi link scalaKeywordModifier Function
|
||||
|
||||
syn keyword scalaSpecial this true false package import
|
||||
syn keyword scalaSpecial this true false package import ne eq
|
||||
syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
|
||||
syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)"
|
||||
syn match scalaSpecial /`[^`]*`/ " Backtick literals
|
||||
@@ -83,28 +111,28 @@ syn region scalaQuasiQuotes matchgroup=Type start=/\<q"/ skip=/\\"/ end=/"/ cont
|
||||
syn region scalaQuasiQuotes matchgroup=Type start=/\<[tcp]q"/ skip=/\\"/ end=/"/ contains=scalaInterpolation
|
||||
hi link scalaQuasiQuotes String
|
||||
|
||||
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<q"""/ end=/"""/ contains=scalaInterpolation
|
||||
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<[tcp]q"""/ end=/"""/ contains=scalaInterpolation
|
||||
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<q"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation
|
||||
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<[tcp]q"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation
|
||||
hi link scalaTripleQuasiQuotes String
|
||||
|
||||
syn region scalaTripleString start=/"""/ end=/"""/ contains=scalaEscapedChar,scalaUnicodeChar
|
||||
syn region scalaTripleSString matchgroup=Special start=/s"""/ end=/"""/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar
|
||||
syn region scalaTripleFString matchgroup=Special start=/f"""/ end=/"""/ contains=scalaInterpolation,scalaFInterpolation,scalaEscapedChar,scalaUnicodeChar
|
||||
syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar
|
||||
syn region scalaTripleSString matchgroup=Special start=/s"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar
|
||||
syn region scalaTripleFString matchgroup=Special start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation,scalaFInterpolation,scalaEscapedChar,scalaUnicodeChar
|
||||
hi link scalaTripleString String
|
||||
hi link scalaTripleSString String
|
||||
hi link scalaTripleFString String
|
||||
|
||||
syn match scalaNumber /\<0[dDfFlL]\?\>/
|
||||
syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/
|
||||
syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/
|
||||
syn match scalaNumber "\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\="
|
||||
syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
|
||||
syn match scalaNumber "\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>"
|
||||
syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0
|
||||
syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ " A multi-digit number - octal numbers with leading 0's are deprecated in Scala
|
||||
syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ " Hex number
|
||||
syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1
|
||||
syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2
|
||||
syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3
|
||||
hi link scalaNumber Number
|
||||
|
||||
syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets
|
||||
syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets
|
||||
|
||||
syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" skipwhite nextgroup=scalaTypeEquals,scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter
|
||||
syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter
|
||||
syn match scalaTypeOperator /[-+=:<>]\+/ contained
|
||||
syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained
|
||||
hi link scalaTypeOperator Keyword
|
||||
@@ -128,3 +156,17 @@ hi link scalaAnnotation PreProc
|
||||
|
||||
syn match scalaTrailingComment "//.*$"
|
||||
hi link scalaTrailingComment Comment
|
||||
|
||||
syn match scalaAkkaFSM /goto([^)]*)\_s\+\<using\>/ contains=scalaAkkaFSMGotoUsing
|
||||
syn match scalaAkkaFSM /stay\_s\+using/
|
||||
syn match scalaAkkaFSM /^\s*stay\s*$/
|
||||
syn match scalaAkkaFSM /when\ze([^)]*)/
|
||||
syn match scalaAkkaFSM /startWith\ze([^)]*)/
|
||||
syn match scalaAkkaFSM /initialize\ze()/
|
||||
syn match scalaAkkaFSM /onTransition/
|
||||
syn match scalaAkkaFSM /onTermination/
|
||||
syn match scalaAkkaFSM /whenUnhandled/
|
||||
syn match scalaAkkaFSMGotoUsing /\<using\>/
|
||||
syn match scalaAkkaFSMGotoUsing /\<goto\>/
|
||||
hi link scalaAkkaFSM PreProc
|
||||
hi link scalaAkkaFSMGotoUsing PreProc
|
||||
|
||||
@@ -35,6 +35,7 @@ syn keyword slimDocType contained html 5 1.1 strict frameset mobile basic
|
||||
syn match slimDocTypeKeyword "^\s*\(doctype\)\s\+" nextgroup=slimDocType
|
||||
|
||||
syn keyword slimTodo FIXME TODO NOTE OPTIMIZE XXX contained
|
||||
syn keyword htmlTagName contained script
|
||||
|
||||
syn match slimTag "\w\+" contained contains=htmlTagName nextgroup=@slimComponent
|
||||
syn match slimIdChar "#{\@!" contained nextgroup=slimId
|
||||
@@ -61,6 +62,7 @@ syn region slimInnerAttrString start=+\s*"+ skip=+\%(\\\\\)*\\"+ end=+"\s*+ cont
|
||||
syn region slimInnerAttrString start=+\s*'+ skip=+\%(\\\\\)*\\"+ end=+'\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr
|
||||
|
||||
syn region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs
|
||||
syn region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{{" end="}}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs
|
||||
syn match slimInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
|
||||
|
||||
syn region slimRuby matchgroup=slimRubyOutputChar start="\s*[=]\==[']\=" skip=",\s*$" end="$" contained contains=@slimRubyTop keepend
|
||||
|
||||
Reference in New Issue
Block a user