mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 12:03:53 -05:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7dd2e11698 | ||
|
|
9197c69900 | ||
|
|
c7dfe2f626 | ||
|
|
af87010071 | ||
|
|
ef369d45a5 | ||
|
|
64938393bd | ||
|
|
79fce146dd |
@@ -8,7 +8,7 @@ A collection of language packs for Vim.
|
|||||||
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
||||||
|
|
||||||
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
||||||
- It **installs and updates 70+ times faster** than 70+ packages it consist of.
|
- It **installs and updates 100+ times faster** than 100+ packages it consist of.
|
||||||
- Solid syntax and indentation support. Only the best language packs.
|
- Solid syntax and indentation support. Only the best language packs.
|
||||||
- All unnecessary files are ignored (like enormous documentation from php support).
|
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||||
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
||||||
@@ -40,6 +40,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
|||||||
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim) (syntax)
|
- [apiblueprint](https://github.com/sheerun/apiblueprint.vim) (syntax)
|
||||||
- [applescript](https://github.com/vim-scripts/applescript.vim) (syntax)
|
- [applescript](https://github.com/vim-scripts/applescript.vim) (syntax)
|
||||||
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent)
|
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent)
|
||||||
|
- [asciidoc](https://github.com/asciidoc/vim-asciidoc) (syntax)
|
||||||
- [blade](https://github.com/jwalton512/vim-blade) (syntax, indent, ftplugin)
|
- [blade](https://github.com/jwalton512/vim-blade) (syntax, indent, ftplugin)
|
||||||
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
|
||||||
- [c/c++](https://github.com/vim-jp/vim-cpp) (syntax)
|
- [c/c++](https://github.com/vim-jp/vim-cpp) (syntax)
|
||||||
@@ -64,6 +65,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
|||||||
- [glsl](https://github.com/tikhomirov/vim-glsl) (syntax, indent)
|
- [glsl](https://github.com/tikhomirov/vim-glsl) (syntax, indent)
|
||||||
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax)
|
- [gnuplot](https://github.com/vim-scripts/gnuplot-syntax-highlighting) (syntax)
|
||||||
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent)
|
- [go](https://github.com/fatih/vim-go) (syntax, compiler, indent)
|
||||||
|
- [graphql](https://github.com/jparise/vim-graphql) (syntax, ftplugin)
|
||||||
- [groovy](https://github.com/vim-scripts/groovy.vim) (syntax)
|
- [groovy](https://github.com/vim-scripts/groovy.vim) (syntax)
|
||||||
- [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin)
|
- [haml](https://github.com/sheerun/vim-haml) (syntax, indent, compiler, ftplugin)
|
||||||
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, indent, ftplugin)
|
- [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, indent, ftplugin)
|
||||||
@@ -86,7 +88,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
|||||||
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin)
|
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin)
|
||||||
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax)
|
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax)
|
||||||
- [mathematica](https://github.com/rsmenon/vim-mathematica) (syntax, ftplugin)
|
- [mathematica](https://github.com/rsmenon/vim-mathematica) (syntax, ftplugin)
|
||||||
- [nginx](https://github.com/othree/nginx-contrib-vim) (syntax, indent, ftplugin)
|
- [nginx](https://github.com/chr4/nginx.vim) (syntax, indent, ftplugin)
|
||||||
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent)
|
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent)
|
||||||
- [nix](https://github.com/spwhitt/vim-nix) (syntax, ftplugin)
|
- [nix](https://github.com/spwhitt/vim-nix) (syntax, ftplugin)
|
||||||
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
|
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
|
||||||
|
|||||||
@@ -18,6 +18,38 @@ if g:terraform_align && exists(':Tabularize')
|
|||||||
endfunction
|
endfunction
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
function! TerraformFolds()
|
||||||
|
let thisline = getline(v:lnum)
|
||||||
|
if match(thisline, '^resource') >= 0
|
||||||
|
return ">1"
|
||||||
|
elseif match(thisline, '^provider') >= 0
|
||||||
|
return ">1"
|
||||||
|
elseif match(thisline, '^module') >= 0
|
||||||
|
return ">1"
|
||||||
|
elseif match(thisline, '^variable') >= 0
|
||||||
|
return ">1"
|
||||||
|
elseif match(thisline, '^output') >= 0
|
||||||
|
return ">1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
setlocal foldmethod=expr
|
||||||
|
setlocal foldexpr=TerraformFolds()
|
||||||
|
setlocal foldlevel=1
|
||||||
|
|
||||||
|
function! TerraformFoldText()
|
||||||
|
let foldsize = (v:foldend-v:foldstart)
|
||||||
|
return getline(v:foldstart).' ('.foldsize.' lines)'
|
||||||
|
endfunction
|
||||||
|
setlocal foldtext=TerraformFoldText()
|
||||||
|
|
||||||
|
"inoremap <space> <C-O>za
|
||||||
|
nnoremap <space> za
|
||||||
|
onoremap <space> <C-C>za
|
||||||
|
vnoremap <space> zf
|
||||||
|
|
||||||
" Match the identation put in place by Hashicorp and :TerraformFmt, https://github.com/hashivim/vim-terraform/issues/21
|
" Match the identation put in place by Hashicorp and :TerraformFmt, https://github.com/hashivim/vim-terraform/issues/21
|
||||||
if get(g:, "terraform_align", 1)
|
if get(g:, "terraform_align", 1)
|
||||||
setlocal tabstop=2
|
setlocal tabstop=2
|
||||||
@@ -25,4 +57,5 @@ if get(g:, "terraform_align", 1)
|
|||||||
setlocal shiftwidth=2
|
setlocal shiftwidth=2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ syn keyword yamlConstant NULL Null null NONE None none NIL Nil nil
|
|||||||
syn keyword yamlConstant TRUE True true YES Yes yes ON On on
|
syn keyword yamlConstant TRUE True true YES Yes yes ON On on
|
||||||
syn keyword yamlConstant FALSE False false NO No no OFF Off off
|
syn keyword yamlConstant FALSE False false NO No no OFF Off off
|
||||||
|
|
||||||
syn match yamlKey "^\s*\zs\S\+\ze\s*:"
|
syn match yamlKey "^\s*\zs[^ \t\"]\+\ze\s*:"
|
||||||
syn match yamlKey "^\s*-\s*\zs\S\+\ze\s*:"
|
syn match yamlKey "^\s*-\s*\zs[^ \t\"]\+\ze\s*:"
|
||||||
syn match yamlAnchor "&\S\+"
|
syn match yamlAnchor "&\S\+"
|
||||||
syn match yamlAlias "*\S\+"
|
syn match yamlAlias "*\S\+"
|
||||||
|
|
||||||
|
|||||||
@@ -1,219 +1,347 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
|
|
||||||
let s:NO_COLON_BEFORE = ':\@<!'
|
function! elixir#indent#debug(str)
|
||||||
let s:NO_COLON_AFTER = ':\@!'
|
if exists("g:elixir_indent_debug") && g:elixir_indent_debug
|
||||||
let s:ENDING_SYMBOLS = '\]\|}\|)'
|
echom a:str
|
||||||
let s:ARROW = '->'
|
endif
|
||||||
let s:END_WITH_ARROW = s:ARROW.'$'
|
|
||||||
let s:SKIP_SYNTAX = '\%(Comment\|String\)$'
|
|
||||||
let s:BLOCK_SKIP = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '".s:SKIP_SYNTAX."'"
|
|
||||||
let s:DEF = '^\s*def'
|
|
||||||
let s:FN = '\<fn\>'
|
|
||||||
let s:MULTILINE_FN = s:FN.'\%(.*end\)\@!'
|
|
||||||
let s:BLOCK_START = '\%(\<do\>\|'.s:FN.'\)\>'
|
|
||||||
let s:MULTILINE_BLOCK = '\%(\<do\>'.s:NO_COLON_AFTER.'\|'.s:MULTILINE_FN.'\)'
|
|
||||||
let s:BLOCK_MIDDLE = '\<\%(else\|match\|elsif\|catch\|after\|rescue\)\>'
|
|
||||||
let s:BLOCK_END = 'end'
|
|
||||||
let s:STARTS_WITH_PIPELINE = '^\s*|>.*$'
|
|
||||||
let s:QUERY_FROM = '^\s*\<from\>.*\<in\>.*,'
|
|
||||||
let s:ENDING_WITH_ASSIGNMENT = '=\s*$'
|
|
||||||
let s:INDENT_KEYWORDS = s:NO_COLON_BEFORE.'\%('.s:MULTILINE_BLOCK.'\|'.s:BLOCK_MIDDLE.'\)'
|
|
||||||
let s:DEINDENT_KEYWORDS = '^\s*\<\%('.s:BLOCK_END.'\|'.s:BLOCK_MIDDLE.'\)\>'
|
|
||||||
let s:PAIR_START = '\<\%('.s:NO_COLON_BEFORE.s:BLOCK_START.'\)\>'.s:NO_COLON_AFTER
|
|
||||||
let s:PAIR_MIDDLE = '^\s*\%('.s:BLOCK_MIDDLE.'\)\>'.s:NO_COLON_AFTER.'\zs'
|
|
||||||
let s:PAIR_END = '\<\%('.s:NO_COLON_BEFORE.s:BLOCK_END.'\)\>\zs'
|
|
||||||
let s:LINE_COMMENT = '^\s*#'
|
|
||||||
let s:MATCH_OPERATOR = '[^!><=]=[^~=>]'
|
|
||||||
|
|
||||||
function! s:pending_parenthesis(line)
|
|
||||||
if a:line.last_non_blank.text !~ s:ARROW
|
|
||||||
return elixir#util#count_indentable_symbol_diff(a:line.last_non_blank, '(', '\%(end\s*\)\@<!)')
|
|
||||||
end
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:pending_square_brackets(line)
|
" Returns 0 or 1 based on whether or not the text starts with the given
|
||||||
if a:line.last_non_blank.text !~ s:ARROW
|
" expression and is not a string or comment
|
||||||
return elixir#util#count_indentable_symbol_diff(a:line.last_non_blank, '[', ']')
|
function! elixir#indent#starts_with(text, expr, lnum)
|
||||||
end
|
let pos = match(a:text, '^\s*'.a:expr)
|
||||||
endfunction
|
if pos == -1
|
||||||
|
return 0
|
||||||
function! s:pending_brackets(line)
|
|
||||||
if a:line.last_non_blank.text !~ s:ARROW
|
|
||||||
return elixir#util#count_indentable_symbol_diff(a:line.last_non_blank, '{', '}')
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#deindent_case_arrow(ind, line)
|
|
||||||
if get(b:old_ind, 'arrow', 0) > 0
|
|
||||||
\ && (a:line.current.text =~ s:ARROW
|
|
||||||
\ || a:line.current.text =~ s:BLOCK_END)
|
|
||||||
let ind = b:old_ind.arrow
|
|
||||||
let b:old_ind.arrow = 0
|
|
||||||
return ind
|
|
||||||
else
|
else
|
||||||
return a:ind
|
" NOTE: @jbodah 2017-02-24: pos is the index of the match which is
|
||||||
end
|
" zero-indexed. Add one to make it the column number
|
||||||
endfunction
|
if elixir#indent#is_string_or_comment(a:lnum, pos + 1)
|
||||||
|
return 0
|
||||||
function! elixir#indent#deindent_ending_symbols(ind, line)
|
|
||||||
if a:line.current.text =~ '^\s*\('.s:ENDING_SYMBOLS.'\)'
|
|
||||||
return a:ind - &sw
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#deindent_keywords(ind, line)
|
|
||||||
if a:line.current.text =~ s:DEINDENT_KEYWORDS
|
|
||||||
let bslnum = searchpair(
|
|
||||||
\ s:PAIR_START,
|
|
||||||
\ s:PAIR_MIDDLE,
|
|
||||||
\ s:PAIR_END,
|
|
||||||
\ 'nbW',
|
|
||||||
\ s:BLOCK_SKIP
|
|
||||||
\ )
|
|
||||||
|
|
||||||
return indent(bslnum)
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#deindent_opened_symbols(ind, line)
|
|
||||||
let s:opened_symbol =
|
|
||||||
\ s:pending_parenthesis(a:line)
|
|
||||||
\ + s:pending_square_brackets(a:line)
|
|
||||||
\ + s:pending_brackets(a:line)
|
|
||||||
|
|
||||||
if s:opened_symbol < 0
|
|
||||||
let ind = get(b:old_ind, 'symbol', a:ind + (s:opened_symbol * &sw))
|
|
||||||
let ind = float2nr(ceil(floor(ind)/&sw)*&sw)
|
|
||||||
return ind <= 0 ? 0 : ind
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_after_pipeline(ind, line)
|
|
||||||
if exists("b:old_ind.pipeline")
|
|
||||||
\ && elixir#util#is_blank(a:line.last.text)
|
|
||||||
\ && a:line.current.text !~ s:STARTS_WITH_PIPELINE
|
|
||||||
" Reset indentation in pipelines if there is a blank line between
|
|
||||||
" pipes
|
|
||||||
let ind = b:old_ind.pipeline
|
|
||||||
unlet b:old_ind.pipeline
|
|
||||||
return ind
|
|
||||||
elseif a:line.last_non_blank.text =~ s:STARTS_WITH_PIPELINE
|
|
||||||
if empty(substitute(a:line.current.text, ' ', '', 'g'))
|
|
||||||
\ || a:line.current.text =~ s:STARTS_WITH_PIPELINE
|
|
||||||
return indent(a:line.last_non_blank.num)
|
|
||||||
elseif a:line.last_non_blank.text !~ s:INDENT_KEYWORDS
|
|
||||||
let ind = b:old_ind.pipeline
|
|
||||||
unlet b:old_ind.pipeline
|
|
||||||
return ind
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return a:ind
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_assignment(ind, line)
|
|
||||||
if a:line.last_non_blank.text =~ s:ENDING_WITH_ASSIGNMENT
|
|
||||||
let b:old_ind.pipeline = indent(a:line.last_non_blank.num) " FIXME: side effect
|
|
||||||
return a:ind + &sw
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_brackets(ind, line)
|
|
||||||
if s:pending_brackets(a:line) > 0
|
|
||||||
return a:ind + &sw
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_case_arrow(ind, line)
|
|
||||||
if a:line.last_non_blank.text =~ s:END_WITH_ARROW && a:line.last_non_blank.text !~ '\<fn\>'
|
|
||||||
let b:old_ind.arrow = a:ind
|
|
||||||
return a:ind + &sw
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_ending_symbols(ind, line)
|
|
||||||
if a:line.last_non_blank.text =~ '^\s*\('.s:ENDING_SYMBOLS.'\)\s*$'
|
|
||||||
return a:ind + &sw
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_keywords(ind, line)
|
|
||||||
if a:line.last_non_blank.text =~ s:INDENT_KEYWORDS && a:line.last_non_blank.text !~ s:LINE_COMMENT
|
|
||||||
return a:ind + &sw
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_parenthesis(ind, line)
|
|
||||||
if s:pending_parenthesis(a:line) > 0
|
|
||||||
\ && a:line.last_non_blank.text !~ s:DEF
|
|
||||||
\ && a:line.last_non_blank.text !~ s:END_WITH_ARROW
|
|
||||||
let b:old_ind.symbol = a:ind
|
|
||||||
return matchend(a:line.last_non_blank.text, '(')
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_pipeline_assignment(ind, line)
|
|
||||||
if a:line.current.text =~ s:STARTS_WITH_PIPELINE
|
|
||||||
\ && a:line.last_non_blank.text =~ s:MATCH_OPERATOR
|
|
||||||
let b:old_ind.pipeline = indent(a:line.last_non_blank.num)
|
|
||||||
" if line starts with pipeline
|
|
||||||
" and last_non_blank line is an attribution
|
|
||||||
" indents pipeline in same level as attribution
|
|
||||||
let assign_pos = match(a:line.last_non_blank.text, '=\s*\zs[^ ]')
|
|
||||||
return (elixir#util#is_indentable_at(a:line.last_non_blank.num, assign_pos) ? assign_pos : a:ind)
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_pipeline_continuation(ind, line)
|
|
||||||
if a:line.last_non_blank.text =~ s:STARTS_WITH_PIPELINE
|
|
||||||
\ && a:line.current.text =~ s:STARTS_WITH_PIPELINE
|
|
||||||
return indent(a:line.last_non_blank.num)
|
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#indent#indent_square_brackets(ind, line)
|
|
||||||
if s:pending_square_brackets(a:line) > 0
|
|
||||||
if a:line.last_non_blank.text =~ '[\s*$'
|
|
||||||
return a:ind + &sw
|
|
||||||
else
|
else
|
||||||
" if start symbol is followed by a character, indent based on the
|
return 1
|
||||||
" whitespace after the symbol, otherwise use the default shiftwidth
|
|
||||||
" Avoid negative indentation index
|
|
||||||
return matchend(a:line.last_non_blank.text, '[\s*')
|
|
||||||
end
|
end
|
||||||
else
|
|
||||||
return a:ind
|
|
||||||
end
|
end
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! elixir#indent#indent_ecto_queries(ind, line)
|
" Returns 0 or 1 based on whether or not the text ends with the given
|
||||||
if a:line.last_non_blank.text =~ s:QUERY_FROM
|
" expression and is not a string or comment
|
||||||
return a:ind + &sw
|
function! elixir#indent#ends_with(text, expr, lnum)
|
||||||
|
let pos = match(a:text, a:expr.'\s*$')
|
||||||
|
if pos == -1
|
||||||
|
return 0
|
||||||
else
|
else
|
||||||
return a:ind
|
if elixir#indent#is_string_or_comment(a:lnum, pos)
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Returns 0 or 1 based on whether or not the text matches the given expression
|
||||||
|
function! elixir#indent#contains(text, expr)
|
||||||
|
return a:text =~ a:expr
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Returns 0 or 1 based on whether or not the given line number and column
|
||||||
|
" number pair is a string or comment
|
||||||
|
function! elixir#indent#is_string_or_comment(line, col)
|
||||||
|
return synIDattr(synID(a:line, a:col, 1), "name") =~ '\%(String\|Comment\)'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Skip expression for searchpair. Returns 0 or 1 based on whether the value
|
||||||
|
" under the cursor is a string or comment
|
||||||
|
function! elixir#indent#searchpair_back_skip()
|
||||||
|
" NOTE: @jbodah 2017-02-27: for some reason this function gets called with
|
||||||
|
" and index that doesn't exist in the line sometimes. Detect and account for
|
||||||
|
" that situation
|
||||||
|
let curr_col = col('.')
|
||||||
|
if getline('.')[curr_col-1] == ''
|
||||||
|
let curr_col = curr_col-1
|
||||||
|
endif
|
||||||
|
return elixir#indent#is_string_or_comment(line('.'), curr_col)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" DRY up searchpair calls
|
||||||
|
function! elixir#indent#searchpair_back(start, mid, end)
|
||||||
|
let line = line('.')
|
||||||
|
return searchpair(a:start, a:mid, a:end, 'bnW', "line('.') == " . line . " || elixir#indent#searchpair_back_skip()")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" DRY up searchpairpos calls
|
||||||
|
function! elixir#indent#searchpairpos_back(start, mid, end)
|
||||||
|
let line = line('.')
|
||||||
|
return searchpairpos(a:start, a:mid, a:end, 'bnW', "line('.') == " . line . " || elixir#indent#searchpair_back_skip()")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" DRY up regex for keywords that 1) makes sure we only look at complete words
|
||||||
|
" and 2) ignores atoms
|
||||||
|
function! elixir#indent#keyword(expr)
|
||||||
|
return ':\@<!\<\C\%('.a:expr.'\)\>:\@!'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#starts_with_comment(text)
|
||||||
|
return match(a:text, '^\s*#') != -1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Start at the end of text and search backwards looking for a match. Also peek
|
||||||
|
" ahead if we get a match to make sure we get a complete match. This means
|
||||||
|
" that the result should be the position of the start of the right-most match
|
||||||
|
function! elixir#indent#find_last_pos(lnum, text, match)
|
||||||
|
let last = len(a:text) - 1
|
||||||
|
let c = last
|
||||||
|
|
||||||
|
while c >= 0
|
||||||
|
let substr = strpart(a:text, c, last)
|
||||||
|
let peek = strpart(a:text, c - 1, last)
|
||||||
|
let ss_match = match(substr, a:match)
|
||||||
|
if ss_match != -1
|
||||||
|
let peek_match = match(peek, a:match)
|
||||||
|
if peek_match == ss_match + 1
|
||||||
|
let syng = synIDattr(synID(a:lnum, c + ss_match, 1), 'name')
|
||||||
|
if syng !~ '\%(String\|Comment\)'
|
||||||
|
return c + ss_match
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
let c -= 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
return -1
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_top_of_file(_lnum, _text, prev_nb_lnum, _prev_nb_text)
|
||||||
|
if a:prev_nb_lnum == 0
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
end
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" TODO: @jbodah 2017-03-31: remove
|
||||||
|
function! elixir#indent#handle_following_trailing_do(lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
|
if elixir#indent#ends_with(a:prev_nb_text, elixir#indent#keyword('do'), a:prev_nb_lnum)
|
||||||
|
if elixir#indent#starts_with(a:text, elixir#indent#keyword('end'), a:lnum)
|
||||||
|
return indent(a:prev_nb_lnum)
|
||||||
|
else
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_following_trailing_binary_operator(lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
|
let binary_operator = '\%(=\|<>\|>>>\|<=\|||\|+\|\~\~\~\|-\|&&\|<<<\|/\|\^\^\^\|\*\)'
|
||||||
|
|
||||||
|
if elixir#indent#ends_with(a:prev_nb_text, binary_operator, a:prev_nb_lnum)
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_starts_with_pipe(lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
|
if elixir#indent#starts_with(a:text, '|>', a:lnum)
|
||||||
|
let match_operator = '\%(!\|=\|<\|>\)\@<!=\%(=\|>\|\~\)\@!'
|
||||||
|
let pos = elixir#indent#find_last_pos(a:prev_nb_lnum, a:prev_nb_text, match_operator)
|
||||||
|
if pos == -1
|
||||||
|
return indent(a:prev_nb_lnum)
|
||||||
|
else
|
||||||
|
let next_word_pos = match(strpart(a:prev_nb_text, pos+1, len(a:prev_nb_text)-1), '\S')
|
||||||
|
if next_word_pos == -1
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
else
|
||||||
|
return pos + 1 + next_word_pos
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_starts_with_comment(_lnum, text, prev_nb_lnum, _prev_nb_text)
|
||||||
|
if elixir#indent#starts_with_comment(a:text)
|
||||||
|
return indent(a:prev_nb_lnum)
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_starts_with_end(lnum, text, _prev_nb_lnum, _prev_nb_text)
|
||||||
|
if elixir#indent#starts_with(a:text, elixir#indent#keyword('end'), a:lnum)
|
||||||
|
let pair_lnum = elixir#indent#searchpair_back(elixir#indent#keyword('do\|fn'), '', elixir#indent#keyword('end').'\zs')
|
||||||
|
return indent(pair_lnum)
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_starts_with_mid_or_end_block_keyword(lnum, text, _prev_nb_lnum, _prev_nb_text)
|
||||||
|
if elixir#indent#starts_with(a:text, elixir#indent#keyword('catch\|rescue\|after\|else'), a:lnum)
|
||||||
|
let pair_lnum = elixir#indent#searchpair_back(elixir#indent#keyword('with\|receive\|try\|if\|fn'), elixir#indent#keyword('catch\|rescue\|after\|else').'\zs', elixir#indent#keyword('end'))
|
||||||
|
return indent(pair_lnum)
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_starts_with_close_bracket(lnum, text, _prev_nb_lnum, _prev_nb_text)
|
||||||
|
if elixir#indent#starts_with(a:text, '\%(\]\|}\|)\)', a:lnum)
|
||||||
|
let pair_lnum = elixir#indent#searchpair_back('\%(\[\|{\|(\)', '', '\%(\]\|}\|)\)')
|
||||||
|
return indent(pair_lnum)
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_starts_with_binary_operator(lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
|
let binary_operator = '\%(=\|<>\|>>>\|<=\|||\|+\|\~\~\~\|-\|&&\|<<<\|/\|\^\^\^\|\*\)'
|
||||||
|
|
||||||
|
if elixir#indent#starts_with(a:text, binary_operator, a:lnum)
|
||||||
|
let match_operator = '\%(!\|=\|<\|>\)\@<!=\%(=\|>\|\~\)\@!'
|
||||||
|
let pos = elixir#indent#find_last_pos(a:prev_nb_lnum, a:prev_nb_text, match_operator)
|
||||||
|
if pos == -1
|
||||||
|
return indent(a:prev_nb_lnum)
|
||||||
|
else
|
||||||
|
let next_word_pos = match(strpart(a:prev_nb_text, pos+1, len(a:prev_nb_text)-1), '\S')
|
||||||
|
if next_word_pos == -1
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
else
|
||||||
|
return pos + 1 + next_word_pos
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" To handle nested structures properly we need to find the innermost
|
||||||
|
" nested structure. For example, we might be in a function in a map in a
|
||||||
|
" function, etc... so we need to first figure out what the innermost structure
|
||||||
|
" is then forward execution to the proper handler
|
||||||
|
function! elixir#indent#handle_inside_nested_construct(lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
|
let start_pattern = '\C\%(\<if\>\|\<case\>\|\<cond\>\|\<try\>\|\<receive\>\|\<fn\>\|{\|\[\|(\)'
|
||||||
|
let end_pattern = '\C\%(\<end\>\|\]\|}\|)\)'
|
||||||
|
let pair_info = elixir#indent#searchpairpos_back(start_pattern, '', end_pattern)
|
||||||
|
let pair_lnum = pair_info[0]
|
||||||
|
let pair_col = pair_info[1]
|
||||||
|
if pair_lnum != 0 || pair_col != 0
|
||||||
|
let pair_text = getline(pair_lnum)
|
||||||
|
let pair_char = pair_text[pair_col - 1]
|
||||||
|
if pair_char == 'f'
|
||||||
|
call elixir#indent#debug("testing elixir#indent#do_handle_inside_fn")
|
||||||
|
return elixir#indent#do_handle_inside_fn(pair_lnum, pair_col, a:lnum, a:text, a:prev_nb_lnum, a:prev_nb_text)
|
||||||
|
elseif pair_char == '['
|
||||||
|
call elixir#indent#debug("testing elixir#indent#do_handle_inside_square_brace")
|
||||||
|
return elixir#indent#do_handle_inside_square_brace(pair_lnum, pair_col, a:lnum, a:text, a:prev_nb_lnum, a:prev_nb_text)
|
||||||
|
elseif pair_char == '{'
|
||||||
|
call elixir#indent#debug("testing elixir#indent#do_handle_inside_curly_brace")
|
||||||
|
return elixir#indent#do_handle_inside_curly_brace(pair_lnum, pair_col, a:lnum, a:text, a:prev_nb_lnum, a:prev_nb_text)
|
||||||
|
elseif pair_char == '('
|
||||||
|
call elixir#indent#debug("testing elixir#indent#do_handle_inside_parens")
|
||||||
|
return elixir#indent#do_handle_inside_parens(pair_lnum, pair_col, a:lnum, a:text, a:prev_nb_lnum, a:prev_nb_text)
|
||||||
|
else
|
||||||
|
call elixir#indent#debug("testing elixir#indent#do_handle_inside_keyword_block")
|
||||||
|
return elixir#indent#do_handle_inside_keyword_block(pair_lnum, pair_col, a:lnum, a:text, a:prev_nb_lnum, a:prev_nb_text)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
end
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#do_handle_inside_keyword_block(pair_lnum, _pair_col, _lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
|
let keyword_pattern = '\C\%(\<case\>\|\<cond\>\|\<try\>\|\<receive\>\|\<after\>\|\<catch\>\|\<rescue\>\|\<else\>\)'
|
||||||
|
if a:pair_lnum
|
||||||
|
" last line is a "receive" or something
|
||||||
|
if elixir#indent#starts_with(a:prev_nb_text, keyword_pattern, a:prev_nb_lnum)
|
||||||
|
call elixir#indent#debug("prev nb line is keyword")
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
elseif elixir#indent#contains(a:text, '->')
|
||||||
|
call elixir#indent#debug("contains ->")
|
||||||
|
" TODO: @jbodah 2017-03-31: test contains ignores str + comments
|
||||||
|
return indent(a:pair_lnum) + &sw
|
||||||
|
elseif elixir#indent#contains(a:prev_nb_text, '->')
|
||||||
|
call elixir#indent#debug("prev nb line contains ->")
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
else
|
||||||
|
call elixir#indent#debug("doesnt start with comment or contain ->")
|
||||||
|
return indent(a:prev_nb_lnum)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#do_handle_inside_fn(pair_lnum, _pair_col, lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
|
if a:pair_lnum && a:pair_lnum != a:lnum
|
||||||
|
if elixir#indent#contains(a:text, '->')
|
||||||
|
return indent(a:pair_lnum) + &sw
|
||||||
|
else
|
||||||
|
if elixir#indent#ends_with(a:prev_nb_text, '->', a:prev_nb_lnum)
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
else
|
||||||
|
return indent(a:prev_nb_lnum)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#do_handle_inside_square_brace(pair_lnum, pair_col, _lnum, _text, _prev_nb_lnum, _prev_nb_text)
|
||||||
|
" If in list...
|
||||||
|
if a:pair_lnum != 0 || a:pair_col != 0
|
||||||
|
let pair_text = getline(a:pair_lnum)
|
||||||
|
let substr = strpart(pair_text, a:pair_col, len(pair_text)-1)
|
||||||
|
let indent_pos = match(substr, '\S')
|
||||||
|
if indent_pos != -1
|
||||||
|
return indent_pos + a:pair_col
|
||||||
|
else
|
||||||
|
return indent(a:pair_lnum) + &sw
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
end
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#do_handle_inside_curly_brace(pair_lnum, _pair_col, _lnum, _text, _prev_nb_lnum, _prev_nb_text)
|
||||||
|
return indent(a:pair_lnum) + &sw
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#do_handle_inside_parens(pair_lnum, pair_col, _lnum, _text, prev_nb_lnum, prev_nb_text)
|
||||||
|
if a:pair_lnum
|
||||||
|
if elixir#indent#ends_with(a:prev_nb_text, '(', a:prev_nb_lnum)
|
||||||
|
return indent(a:prev_nb_lnum) + &sw
|
||||||
|
elseif a:pair_lnum == a:prev_nb_lnum
|
||||||
|
" Align indent (e.g. "def add(a,")
|
||||||
|
let pos = elixir#indent#find_last_pos(a:prev_nb_lnum, a:prev_nb_text, '[^(]\+,')
|
||||||
|
if pos == -1
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return pos
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return indent(a:prev_nb_lnum)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! elixir#indent#handle_inside_generic_block(lnum, _text, prev_nb_lnum, prev_nb_text)
|
||||||
|
let pair_lnum = searchpair(elixir#indent#keyword('do\|fn'), '', elixir#indent#keyword('end'), 'bW', "line('.') == ".a:lnum." || elixir#indent#is_string_or_comment(line('.'), col('.'))")
|
||||||
|
if pair_lnum
|
||||||
|
" TODO: @jbodah 2017-03-29: this should probably be the case in *all*
|
||||||
|
" blocks
|
||||||
|
if elixir#indent#ends_with(a:prev_nb_text, ',', a:prev_nb_lnum)
|
||||||
|
return indent(pair_lnum) + 2 * &sw
|
||||||
|
else
|
||||||
|
return indent(pair_lnum) + &sw
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,52 +1,28 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
|
|
||||||
let s:SKIP_SYNTAX = '\%(Comment\|String\)$'
|
function! elixir#util#get_filename(word) abort
|
||||||
|
let word = a:word
|
||||||
|
|
||||||
function! elixir#util#is_indentable_at(line, col)
|
" get first thing that starts uppercase, until the first space or end of line
|
||||||
if a:col == -1 " skip synID lookup for not found match
|
let word = substitute(word,'^\s*\(\u[^ ]\+\).*$','\1','g')
|
||||||
return 1
|
|
||||||
end
|
|
||||||
" 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'.
|
|
||||||
call synID(a:line, a:col, 1)
|
|
||||||
" This forces vim to sync the syntax. Using fromstart is very slow on files
|
|
||||||
" over 1k lines
|
|
||||||
syntax sync minlines=20 maxlines=150
|
|
||||||
|
|
||||||
return synIDattr(synID(a:line, a:col, 1), "name")
|
" remove any trailing characters that don't look like a nested module
|
||||||
\ !~ s:SKIP_SYNTAX
|
let word = substitute(word,'\.\U.*$','','g')
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! elixir#util#count_indentable_symbol_diff(line, open, close)
|
" replace module dots with slash
|
||||||
return
|
let word = substitute(word,'\.','/','g')
|
||||||
\ s:match_count(a:line, a:open)
|
|
||||||
\ - s:match_count(a:line, a:close)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:match_count(line, pattern)
|
" remove any special chars
|
||||||
let size = strlen(a:line.text)
|
let word = substitute(word,'[^A-z0-9-_/]','','g')
|
||||||
let index = 0
|
|
||||||
let counter = 0
|
|
||||||
|
|
||||||
while index < size
|
" convert to snake_case
|
||||||
let index = match(a:line.text, a:pattern, index)
|
let word = substitute(word,'\(\u\+\)\(\u\l\)','\1_\2','g')
|
||||||
if index >= 0
|
let word = substitute(word,'\(\u\+\)\(\u\l\)','\1_\2','g')
|
||||||
let index += 1
|
let word = substitute(word,'\(\l\|\d\)\(\u\)','\1_\2','g')
|
||||||
if elixir#util#is_indentable_at(a:line.num, index)
|
let word = substitute(word,'-','_','g')
|
||||||
let counter +=1
|
let word = tolower(word)
|
||||||
end
|
|
||||||
else
|
|
||||||
break
|
|
||||||
end
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
return counter
|
return word
|
||||||
endfunction
|
|
||||||
|
|
||||||
function elixir#util#is_blank(string)
|
|
||||||
return a:string =~ '^\s*$'
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -371,6 +371,7 @@ let linkreltypes = linkreltypes + ['pgpkey']
|
|||||||
" a and button are special elements for interactive, some element can't be its descendent
|
" a and button are special elements for interactive, some element can't be its descendent
|
||||||
let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|textarea'
|
let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|textarea'
|
||||||
|
|
||||||
|
let crossorigin = ['anonymous', 'use-credentials']
|
||||||
|
|
||||||
|
|
||||||
let g:xmldata_html5 = {
|
let g:xmldata_html5 = {
|
||||||
@@ -582,7 +583,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'img': [
|
\ 'img': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'src': [], 'alt': [], 'height': [], 'width': [], 'usemap': [], 'ismap': ['ismap', ''], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url']})
|
\ extend(copy(global_attributes), {'src': [], 'alt': [], 'height': [], 'width': [], 'usemap': [], 'ismap': ['ismap', ''], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url'], 'crossorigin': ['anonymous', 'use-credentials']})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'input': [
|
\ 'input': [
|
||||||
\ [],
|
\ [],
|
||||||
@@ -614,7 +615,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'link': [
|
\ 'link': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'href': [], 'rel': linkreltypes, 'hreflang': lang_tag, 'media': [], 'type': [], 'sizes': ['any'], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url']})
|
\ extend(copy(global_attributes), {'href': [], 'rel': linkreltypes, 'hreflang': lang_tag, 'media': [], 'type': [], 'sizes': ['any'], 'referrerpolicy': ['no-referrer', 'no-referrer-when-downgrade', 'origin', 'origin-when-cross-origin', 'unsafe-url'], 'crossorigin': crossorigin, 'preload': ['preload', ''], 'prefetch': ['prefetch', '']})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'main': [
|
\ 'main': [
|
||||||
\ flow_elements + ['style'],
|
\ flow_elements + ['style'],
|
||||||
@@ -722,7 +723,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'script': [
|
\ 'script': [
|
||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'src': [], 'defer': ['defer', ''], 'async': ['async', ''], 'type': [], 'charset': charset, 'nonce': []})
|
\ extend(copy(global_attributes), {'src': [], 'defer': ['defer', ''], 'async': ['async', ''], 'type': [], 'charset': charset, 'nonce': [], 'crossorigin': crossorigin})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'section': [
|
\ 'section': [
|
||||||
\ flow_elements + ['style'],
|
\ flow_elements + ['style'],
|
||||||
@@ -834,7 +835,7 @@ let g:xmldata_html5 = {
|
|||||||
\ ],
|
\ ],
|
||||||
\ 'video': [
|
\ 'video': [
|
||||||
\ flow_elements + ['source', 'track'],
|
\ flow_elements + ['source', 'track'],
|
||||||
\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'playsinline': ['playsinline', ''], 'poster': [], 'height': [], 'width': [], 'src': []})
|
\ extend(copy(global_attributes), {'autoplay': ['autoplay', ''], 'preload': ['none', 'metadata', 'auto', ''], 'controls': ['controls', ''], 'loop': ['loop', ''], 'playsinline': ['playsinline', ''], 'poster': [], 'height': [], 'width': [], 'src': [], 'crossorigin': crossorigin})
|
||||||
\ ],
|
\ ],
|
||||||
\ 'wbr': [
|
\ 'wbr': [
|
||||||
\ [],
|
\ [],
|
||||||
|
|||||||
7
build
7
build
@@ -29,6 +29,9 @@ download() {
|
|||||||
|
|
||||||
extract() {
|
extract() {
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
|
cat config.vim >> tmp/polyglot.vim
|
||||||
|
|
||||||
for pack in $1; do
|
for pack in $1; do
|
||||||
name="$(printf "$pack" | cut -d ':' -f 1)"
|
name="$(printf "$pack" | cut -d ':' -f 1)"
|
||||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||||
@@ -106,6 +109,7 @@ EOF
|
|||||||
PACKS="
|
PACKS="
|
||||||
apiblueprint:sheerun/apiblueprint.vim
|
apiblueprint:sheerun/apiblueprint.vim
|
||||||
applescript:vim-scripts/applescript.vim
|
applescript:vim-scripts/applescript.vim
|
||||||
|
asciidoc:asciidoc/vim-asciidoc
|
||||||
yaml:stephpy/vim-yaml
|
yaml:stephpy/vim-yaml
|
||||||
ansible:pearofducks/ansible-vim
|
ansible:pearofducks/ansible-vim
|
||||||
arduino:sudar/vim-arduino-syntax
|
arduino:sudar/vim-arduino-syntax
|
||||||
@@ -133,6 +137,7 @@ PACKS="
|
|||||||
glsl:tikhomirov/vim-glsl
|
glsl:tikhomirov/vim-glsl
|
||||||
gnuplot:vim-scripts/gnuplot-syntax-highlighting
|
gnuplot:vim-scripts/gnuplot-syntax-highlighting
|
||||||
go:fatih/vim-go:_BASIC
|
go:fatih/vim-go:_BASIC
|
||||||
|
graphql:jparise/vim-graphql
|
||||||
groovy:vim-scripts/groovy.vim
|
groovy:vim-scripts/groovy.vim
|
||||||
haml:sheerun/vim-haml
|
haml:sheerun/vim-haml
|
||||||
handlebars:mustache/vim-mustache-handlebars
|
handlebars:mustache/vim-mustache-handlebars
|
||||||
@@ -155,7 +160,7 @@ PACKS="
|
|||||||
mako:sophacles/vim-bundle-mako
|
mako:sophacles/vim-bundle-mako
|
||||||
markdown:plasticboy/vim-markdown:_SYNTAX
|
markdown:plasticboy/vim-markdown:_SYNTAX
|
||||||
mathematica:rsmenon/vim-mathematica
|
mathematica:rsmenon/vim-mathematica
|
||||||
nginx:othree/nginx-contrib-vim
|
nginx:chr4/nginx.vim
|
||||||
nim:zah/nim.vim:_BASIC
|
nim:zah/nim.vim:_BASIC
|
||||||
nix:spwhitt/vim-nix
|
nix:spwhitt/vim-nix
|
||||||
objc:b4winckler/vim-objc
|
objc:b4winckler/vim-objc
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
|
||||||
|
|
||||||
|
" Vim compiler plugin
|
||||||
|
" Language: JavaScript
|
||||||
|
" Maintainer: vim-javascript community
|
||||||
|
" URL: https://github.com/pangloss/vim-javascript
|
||||||
|
|
||||||
if exists("current_compiler")
|
if exists("current_compiler")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ CompilerSet errorformat=
|
|||||||
\%D(in\ %f),
|
\%D(in\ %f),
|
||||||
\%\\s%#from\ %f:%l:%m,
|
\%\\s%#from\ %f:%l:%m,
|
||||||
\%\\s%#from\ %f:%l:,
|
\%\\s%#from\ %f:%l:,
|
||||||
\%\\s%##\ %f:%l:%m,
|
\%\\s%##\ %f:%l:%m%\\&%.%#%\\D:%.%#,
|
||||||
\%\\s%##\ %f:%l,
|
\%\\s%##\ %f:%l%\\&%.%#%\\D:%.%#,
|
||||||
\%\\s%#[%f:%l:\ %#%m,
|
\%\\s%#[%f:%l:\ %#%m%\\&%.%#%\\D:%.%#,
|
||||||
\%\\s%#%f:%l:\ %#%m,
|
\%\\s%#%f:%l:\ %#%m%\\&%.%#%\\D:%.%#,
|
||||||
\%\\s%#%f:%l:,
|
\%\\s%#%f:%l:,
|
||||||
\%m\ [%f:%l]:,
|
\%m\ [%f:%l]:,
|
||||||
\%+Erake\ aborted!,
|
\%+Erake\ aborted!,
|
||||||
|
|||||||
@@ -1,3 +1,14 @@
|
|||||||
|
" Enable jsx syntax by default
|
||||||
|
if !exists('g:jsx_ext_required')
|
||||||
|
let g:jsx_ext_required = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Disable json concealing by default
|
||||||
|
if !exists('g:vim_json_syntax_conceal')
|
||||||
|
let g:vim_json_syntax_conceal = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let g:filetype_euphoria = 'elixir'
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" apiblueprint:sheerun/apiblueprint.vim
|
" apiblueprint:sheerun/apiblueprint.vim
|
||||||
autocmd BufReadPost,BufNewFile *.apib set filetype=apiblueprint
|
autocmd BufReadPost,BufNewFile *.apib set filetype=apiblueprint
|
||||||
@@ -9,6 +20,12 @@ augroup filetypedetect
|
|||||||
" applescript:vim-scripts/applescript.vim
|
" applescript:vim-scripts/applescript.vim
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
|
augroup filetypedetect
|
||||||
|
" asciidoc:asciidoc/vim-asciidoc
|
||||||
|
autocmd BufNewFile,BufRead *.asciidoc,*.adoc
|
||||||
|
\ set ft=asciidoc
|
||||||
|
augroup END
|
||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" yaml:stephpy/vim-yaml
|
" yaml:stephpy/vim-yaml
|
||||||
augroup END
|
augroup END
|
||||||
@@ -154,8 +171,6 @@ au BufRead,BufNewFile *.ex,*.exs call s:setf('elixir')
|
|||||||
au BufRead,BufNewFile *.eex call s:setf('eelixir')
|
au BufRead,BufNewFile *.eex call s:setf('eelixir')
|
||||||
au BufRead,BufNewFile * call s:DetectElixir()
|
au BufRead,BufNewFile * call s:DetectElixir()
|
||||||
|
|
||||||
au FileType elixir,eelixir setl sw=2 sts=2 et iskeyword+=!,?
|
|
||||||
|
|
||||||
function! s:setf(filetype) abort
|
function! s:setf(filetype) abort
|
||||||
let &filetype = a:filetype
|
let &filetype = a:filetype
|
||||||
endfunction
|
endfunction
|
||||||
@@ -272,7 +287,9 @@ augroup filetypedetect
|
|||||||
" Language: OpenGL Shading Language
|
" Language: OpenGL Shading Language
|
||||||
" Maintainer: Sergey Tikhomirov <sergey@tikhomirov.io>
|
" Maintainer: Sergey Tikhomirov <sergey@tikhomirov.io>
|
||||||
|
|
||||||
autocmd! BufNewFile,BufRead *.glsl,*.geom,*.vert,*.frag,*.gsh,*.vsh,*.fsh,*.vs,*.fs,*.gs,*.tcs,*.tes,*.tesc,*.tese,*.comp set filetype=glsl
|
" Extensions supported by Khronos reference compiler
|
||||||
|
" https://github.com/KhronosGroup/glslang
|
||||||
|
autocmd! BufNewFile,BufRead *.vert,*.tesc,*.tese,*.geom,*.frag,*.comp set filetype=glsl
|
||||||
|
|
||||||
" vim:set sts=2 sw=2 :
|
" vim:set sts=2 sw=2 :
|
||||||
augroup END
|
augroup END
|
||||||
@@ -316,6 +333,11 @@ au BufRead,BufNewFile *.tmpl set filetype=gohtmltmpl
|
|||||||
" vim: sw=2 ts=2 et
|
" vim: sw=2 ts=2 et
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
|
augroup filetypedetect
|
||||||
|
" graphql:jparise/vim-graphql
|
||||||
|
au BufRead,BufNewFile *.graphql,*.gql setfiletype graphql
|
||||||
|
augroup END
|
||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" groovy:vim-scripts/groovy.vim
|
" groovy:vim-scripts/groovy.vim
|
||||||
augroup END
|
augroup END
|
||||||
@@ -365,10 +387,16 @@ augroup END
|
|||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" javascript:pangloss/vim-javascript:_JAVASCRIPT
|
" javascript:pangloss/vim-javascript:_JAVASCRIPT
|
||||||
au BufNewFile,BufRead *.js setf javascript
|
au BufNewFile,BufRead *.{js,jsm,es,es6},Jakefile setf javascript
|
||||||
au BufNewFile,BufRead *.jsm setf javascript
|
|
||||||
au BufNewFile,BufRead Jakefile setf javascript
|
fun! s:SourceFlowSyntax()
|
||||||
au BufNewFile,BufRead *.es6 setf javascript
|
if !exists('javascript_plugin_flow') && !exists('b:flow_active') &&
|
||||||
|
\ search('\v\C%^\_s*%(//\s*|/\*[ \t\n*]*)\@flow>','nw')
|
||||||
|
runtime extras/flow.vim
|
||||||
|
let b:flow_active = 1
|
||||||
|
endif
|
||||||
|
endfun
|
||||||
|
au FileType javascript au BufRead,BufWritePost <buffer> call s:SourceFlowSyntax()
|
||||||
|
|
||||||
fun! s:SelectJavascript()
|
fun! s:SelectJavascript()
|
||||||
if getline(1) =~# '^#!.*/bin/\%(env\s\+\)\?node\>'
|
if getline(1) =~# '^#!.*/bin/\%(env\s\+\)\?node\>'
|
||||||
@@ -511,11 +539,12 @@ augroup filetypedetect
|
|||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" nginx:othree/nginx-contrib-vim
|
" nginx:chr4/nginx.vim
|
||||||
au BufRead,BufNewFile *.nginx set ft=nginx
|
au BufRead,BufNewFile *.nginx set ft=nginx
|
||||||
|
au BufRead,BufNewFile nginx*.conf set ft=nginx
|
||||||
|
au BufRead,BufNewFile *nginx.conf set ft=nginx
|
||||||
au BufRead,BufNewFile */etc/nginx/* set ft=nginx
|
au BufRead,BufNewFile */etc/nginx/* set ft=nginx
|
||||||
au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx
|
au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx
|
||||||
au BufRead,BufNewFile nginx.conf set ft=nginx
|
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
@@ -605,11 +634,6 @@ augroup END
|
|||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" plantuml:aklt/plantuml-syntax
|
" plantuml:aklt/plantuml-syntax
|
||||||
" Vim ftdetect file
|
|
||||||
" Language: PlantUML
|
|
||||||
" Maintainer: Aaron C. Meadows < language name at shadowguarddev dot com>
|
|
||||||
" Version: 0.1
|
|
||||||
|
|
||||||
if did_filetype()
|
if did_filetype()
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
@@ -964,6 +988,12 @@ augroup END
|
|||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" twig:lumiliet/vim-twig
|
" twig:lumiliet/vim-twig
|
||||||
|
|
||||||
|
if !exists('g:vim_twig_filetype_detected') && has("autocmd")
|
||||||
|
au BufNewFile,BufRead *.twig set filetype=html.twig
|
||||||
|
au BufNewFile,BufRead *.html.twig set filetype=html.twig
|
||||||
|
au BufNewFile,BufRead *.xml.twig set filetype=xml.twig
|
||||||
|
endif
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
@@ -991,7 +1021,7 @@ augroup END
|
|||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
" vue:posva/vim-vue
|
" vue:posva/vim-vue
|
||||||
au BufNewFile,BufRead *.vue setf vue.html.javascript.css
|
au BufNewFile,BufRead *.vue setf vue
|
||||||
augroup END
|
augroup END
|
||||||
|
|
||||||
augroup filetypedetect
|
augroup filetypedetect
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ if !exists("g:eelixir_default_subtype")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists("b:eelixir_subtype")
|
if !exists("b:eelixir_subtype")
|
||||||
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
let s:lines = join(getline(1, 5) + [getline('$')], "\n")
|
||||||
let b:eelixir_subtype = matchstr(s:lines,'eelixir_subtype=\zs\w\+')
|
let b:eelixir_subtype = matchstr(s:lines,'eelixir_subtype=\zs\w\+')
|
||||||
if b:eelixir_subtype == ''
|
if b:eelixir_subtype == ''
|
||||||
let b:eelixir_subtype = matchstr(&filetype,'^eex\.\zs\w\+')
|
let b:eelixir_subtype = matchstr(&filetype,'^eex\.\zs\w\+')
|
||||||
@@ -100,7 +100,7 @@ endif
|
|||||||
setlocal comments=:<%#
|
setlocal comments=:<%#
|
||||||
setlocal commentstring=<%#\ %s\ %>
|
setlocal commentstring=<%#\ %s\ %>
|
||||||
|
|
||||||
let b:undo_ftplugin = "setl cms< "
|
let b:undo_ftplugin = "setl cms< " .
|
||||||
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
let &cpo = s:save_cpo
|
||||||
|
|||||||
@@ -17,45 +17,24 @@ if exists("loaded_matchit") && !exists("b:match_words")
|
|||||||
\ ',{:},\[:\],(:)'
|
\ ',{:},\[:\],(:)'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
setlocal shiftwidth=2 softtabstop=2 expandtab iskeyword+=!,?
|
||||||
setlocal comments=:#
|
setlocal comments=:#
|
||||||
setlocal commentstring=#\ %s
|
setlocal commentstring=#\ %s
|
||||||
|
|
||||||
function! GetElixirFilename(word)
|
|
||||||
let word = a:word
|
|
||||||
|
|
||||||
" get first thing that starts uppercase, until the first space or end of line
|
|
||||||
let word = substitute(word,'^\s*\(\u[^ ]\+\).*$','\1','g')
|
|
||||||
|
|
||||||
" remove any trailing characters that don't look like a nested module
|
|
||||||
let word = substitute(word,'\.\U.*$','','g')
|
|
||||||
|
|
||||||
" replace module dots with slash
|
|
||||||
let word = substitute(word,'\.','/','g')
|
|
||||||
|
|
||||||
" remove any special chars
|
|
||||||
let word = substitute(word,'[^A-z0-9-_/]','','g')
|
|
||||||
|
|
||||||
" convert to snake_case
|
|
||||||
let word = substitute(word,'\(\u\+\)\(\u\l\)','\1_\2','g')
|
|
||||||
let word = substitute(word,'\(\u\+\)\(\u\l\)','\1_\2','g')
|
|
||||||
let word = substitute(word,'\(\l\|\d\)\(\u\)','\1_\2','g')
|
|
||||||
let word = substitute(word,'-','_','g')
|
|
||||||
let word = tolower(word)
|
|
||||||
|
|
||||||
return word
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let &l:path =
|
let &l:path =
|
||||||
\ join([
|
\ join([
|
||||||
\ getcwd().'/lib',
|
\ 'lib',
|
||||||
\ getcwd().'/src',
|
\ 'src',
|
||||||
\ getcwd().'/deps/**/lib',
|
\ 'deps/**/lib',
|
||||||
\ getcwd().'/deps/**/src',
|
\ 'deps/**/src',
|
||||||
\ &g:path
|
\ &g:path
|
||||||
\ ], ',')
|
\ ], ',')
|
||||||
setlocal includeexpr=GetElixirFilename(v:fname)
|
setlocal includeexpr=elixir#util#get_filename(v:fname)
|
||||||
setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl
|
setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl
|
||||||
|
|
||||||
silent! setlocal formatoptions-=t formatoptions+=croqlj
|
silent! setlocal formatoptions-=t formatoptions+=croqlj
|
||||||
|
|
||||||
|
let b:undo_ftplugin = 'setlocal sw< sts< et< isk< com< cms< path< inex< sua< '.
|
||||||
|
\ '| unlet! b:match_ignorecase b:match_words'
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
17
ftplugin/graphql.vim
Normal file
17
ftplugin/graphql.vim
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin
|
||||||
|
" Language: GraphQL
|
||||||
|
" Maintainer: Jon Parise <jon@indelible.org>
|
||||||
|
|
||||||
|
if (exists("b:did_ftplugin"))
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
setlocal comments=:#
|
||||||
|
setlocal commentstring=#\ %s
|
||||||
|
setlocal formatoptions-=t
|
||||||
|
setlocal iskeyword+=$,@-@
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -2,8 +2,4 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|||||||
|
|
||||||
setlocal commentstring=#\ %s
|
setlocal commentstring=#\ %s
|
||||||
|
|
||||||
setlocal iskeyword+=.
|
|
||||||
setlocal iskeyword+=/
|
|
||||||
setlocal iskeyword+=:
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,22 +1,17 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'plantuml') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'plantuml') == -1
|
||||||
|
|
||||||
" Vim plugin file
|
if exists('b:loaded_plantuml_plugin')
|
||||||
" Language: PlantUML
|
|
||||||
" Maintainer: Aaron C. Meadows < language name at shadowguarddev dot com>
|
|
||||||
" Version: 0.1
|
|
||||||
|
|
||||||
if exists("b:loaded_plantuml_plugin")
|
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let b:loaded_plantuml_plugin = 1
|
let b:loaded_plantuml_plugin = 1
|
||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
if !exists("g:plantuml_executable_script")
|
if !exists('g:plantuml_executable_script')
|
||||||
let g:plantuml_executable_script="plantuml"
|
let g:plantuml_executable_script='plantuml'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists("loaded_matchit")
|
if exists('loaded_matchit')
|
||||||
let b:match_ignorecase = 0
|
let b:match_ignorecase = 0
|
||||||
let b:match_words =
|
let b:match_words =
|
||||||
\ '\(\<ref\>\|\<box\>\|\<opt\>\|\<alt\>\|\<group\>\|\<loop\>\|\<note\>\|\<legend\>\):\<else\>:\<end\>' .
|
\ '\(\<ref\>\|\<box\>\|\<opt\>\|\<alt\>\|\<group\>\|\<loop\>\|\<note\>\|\<legend\>\):\<else\>:\<end\>' .
|
||||||
@@ -27,7 +22,7 @@ if exists("loaded_matchit")
|
|||||||
\ ',\<\while\>:\<endwhile\>'
|
\ ',\<\while\>:\<endwhile\>'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let &l:makeprg=g:plantuml_executable_script . " " . fnameescape(expand("%"))
|
let &l:makeprg=g:plantuml_executable_script . ' ' . fnameescape(expand('%'))
|
||||||
|
|
||||||
setlocal comments=s1:/',mb:',ex:'/,:' commentstring=/'%s'/ formatoptions-=t formatoptions+=croql
|
setlocal comments=s1:/',mb:',ex:'/,:' commentstring=/'%s'/ formatoptions-=t formatoptions+=croql
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ setlocal formatoptions=tcqro
|
|||||||
" Enable autocompletion of hyphenated PowerShell commands,
|
" Enable autocompletion of hyphenated PowerShell commands,
|
||||||
" e.g. Get-Content or Get-ADUser
|
" e.g. Get-Content or Get-ADUser
|
||||||
setlocal iskeyword+=-
|
setlocal iskeyword+=-
|
||||||
|
" MS applications (including PowerShell) require a Byte Order Mark (BOM) for UTF-8.
|
||||||
|
setlocal bomb
|
||||||
|
|
||||||
" Change the browse dialog on Win32 to show mainly PowerShell-related files
|
" Change the browse dialog on Win32 to show mainly PowerShell-related files
|
||||||
if has("gui_win32")
|
if has("gui_win32")
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ let b:did_ftplugin = 1
|
|||||||
setlocal tw=0
|
setlocal tw=0
|
||||||
setlocal commentstring=#%s
|
setlocal commentstring=#%s
|
||||||
setlocal formatoptions=tcqro
|
setlocal formatoptions=tcqro
|
||||||
|
" MS applications (including PowerShell) require a Byte Order Mark (BOM) for UTF-8.
|
||||||
|
setlocal bomb
|
||||||
|
|
||||||
" Change the browse dialog on Win32 to show mainly PowerShell-related files
|
" Change the browse dialog on Win32 to show mainly PowerShell-related files
|
||||||
if has("gui_win32")
|
if has("gui_win32")
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ endif
|
|||||||
|
|
||||||
function! s:query_path(root) abort
|
function! s:query_path(root) abort
|
||||||
let code = "print $:.join %q{,}"
|
let code = "print $:.join %q{,}"
|
||||||
if &shell =~# 'sh'
|
if &shell =~# 'sh' && empty(&shellxquote)
|
||||||
let prefix = 'env PATH='.shellescape($PATH).' '
|
let prefix = 'env PATH='.shellescape($PATH).' '
|
||||||
else
|
else
|
||||||
let prefix = ''
|
let prefix = ''
|
||||||
@@ -164,23 +164,23 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
|
|||||||
nmap <buffer><script> <SID>: :<C-U>
|
nmap <buffer><script> <SID>: :<C-U>
|
||||||
nmap <buffer><script> <SID>c: :<C-U><C-R>=v:count ? v:count : ''<CR>
|
nmap <buffer><script> <SID>c: :<C-U><C-R>=v:count ? v:count : ''<CR>
|
||||||
|
|
||||||
nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','n')<CR>
|
nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'b','n')<CR>
|
||||||
nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','n')<CR>
|
nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'','n')<CR>
|
||||||
nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','n')<CR>
|
nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'b','n')<CR>
|
||||||
nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','n')<CR>
|
nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'','n')<CR>
|
||||||
xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','v')<CR>
|
xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'b','v')<CR>
|
||||||
xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','v')<CR>
|
xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>',['rubyDefine'],'','v')<CR>
|
||||||
xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','v')<CR>
|
xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'b','v')<CR>
|
||||||
xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','v')<CR>
|
xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>',['rubyDefine'],'','v')<CR>
|
||||||
|
|
||||||
nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','n')<CR>
|
nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'b','n')<CR>
|
||||||
nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','n')<CR>
|
nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'','n')<CR>
|
||||||
nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','n')<CR>
|
nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'b','n')<CR>
|
||||||
nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','n')<CR>
|
nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'','n')<CR>
|
||||||
xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','v')<CR>
|
xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'b','v')<CR>
|
||||||
xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','v')<CR>
|
xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>',['rubyModule','rubyClass'],'','v')<CR>
|
||||||
xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','v')<CR>
|
xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'b','v')<CR>
|
||||||
xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','v')<CR>
|
xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>',['rubyModule','rubyClass'],'','v')<CR>
|
||||||
|
|
||||||
let b:undo_ftplugin = b:undo_ftplugin
|
let b:undo_ftplugin = b:undo_ftplugin
|
||||||
\."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['"
|
\."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['"
|
||||||
@@ -290,12 +290,13 @@ function! s:searchsyn(pattern, syn, flags, mode) abort
|
|||||||
norm! gv
|
norm! gv
|
||||||
endif
|
endif
|
||||||
let i = 0
|
let i = 0
|
||||||
|
call map(a:syn, 'hlID(v:val)')
|
||||||
while i < cnt
|
while i < cnt
|
||||||
let i = i + 1
|
let i = i + 1
|
||||||
let line = line('.')
|
let line = line('.')
|
||||||
let col = col('.')
|
let col = col('.')
|
||||||
let pos = search(a:pattern,'W'.a:flags)
|
let pos = search(a:pattern,'W'.a:flags)
|
||||||
while pos != 0 && s:synname() !~# a:syn
|
while pos != 0 && index(a:syn, s:synid()) < 0
|
||||||
let pos = search(a:pattern,'W'.a:flags)
|
let pos = search(a:pattern,'W'.a:flags)
|
||||||
endwhile
|
endwhile
|
||||||
if pos == 0
|
if pos == 0
|
||||||
@@ -305,8 +306,8 @@ function! s:searchsyn(pattern, syn, flags, mode) abort
|
|||||||
endwhile
|
endwhile
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:synname() abort
|
function! s:synid() abort
|
||||||
return synIDattr(synID(line('.'),col('.'),0),'name')
|
return synID(line('.'),col('.'),0)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:wrap_i(back,forward) abort
|
function! s:wrap_i(back,forward) abort
|
||||||
@@ -362,7 +363,7 @@ function! RubyCursorFile() abort
|
|||||||
let pre = matchstr(strpart(getline('.'), 0, col('.')-1), '.*\f\@<!')
|
let pre = matchstr(strpart(getline('.'), 0, col('.')-1), '.*\f\@<!')
|
||||||
let post = matchstr(strpart(getline('.'), col('.')), '\f\@!.*')
|
let post = matchstr(strpart(getline('.'), col('.')), '\f\@!.*')
|
||||||
let ext = getline('.') =~# '^\s*\%(require\%(_relative\)\=\|autoload\)\>' && cfile !~# '\.rb$' ? '.rb' : ''
|
let ext = getline('.') =~# '^\s*\%(require\%(_relative\)\=\|autoload\)\>' && cfile !~# '\.rb$' ? '.rb' : ''
|
||||||
if s:synname() ==# 'rubyConstant'
|
if s:synid() ==# hlID('rubyConstant')
|
||||||
let cfile = substitute(cfile,'\.\w\+[?!=]\=$','','')
|
let cfile = substitute(cfile,'\.\w\+[?!=]\=$','','')
|
||||||
let cfile = substitute(cfile,'::','/','g')
|
let cfile = substitute(cfile,'::','/','g')
|
||||||
let cfile = substitute(cfile,'\(\u\+\)\(\u\l\)','\1_\2', 'g')
|
let cfile = substitute(cfile,'\(\u\+\)\(\u\l\)','\1_\2', 'g')
|
||||||
|
|||||||
@@ -13,4 +13,11 @@ runtime! ftplugin/html.vim
|
|||||||
|
|
||||||
setlocal suffixesadd+=.vue
|
setlocal suffixesadd+=.vue
|
||||||
|
|
||||||
|
if exists('g:loaded_ale')
|
||||||
|
let g:ale_linters = get(g:, 'ale_linters', {})
|
||||||
|
let g:ale_linters.vue = get(g:ale_linters, 'vue', ['eslint'])
|
||||||
|
let g:ale_linter_aliases = get(g:, 'ale_linter_aliases', {})
|
||||||
|
let g:ale_linter_aliases.vue = get(g:ale_linter_aliases, 'vue', 'javascript')
|
||||||
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -27,7 +27,12 @@ endif
|
|||||||
|
|
||||||
function GetAnsibleIndent(lnum)
|
function GetAnsibleIndent(lnum)
|
||||||
if a:lnum == 1 || !prevnonblank(a:lnum-1)
|
if a:lnum == 1 || !prevnonblank(a:lnum-1)
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
if exists("g:ansible_unindent_after_newline")
|
||||||
|
if (a:lnum -1) != prevnonblank(a:lnum - 1)
|
||||||
return 0
|
return 0
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
let prevlnum = prevnonblank(a:lnum - 1)
|
let prevlnum = prevnonblank(a:lnum - 1)
|
||||||
let maintain = indent(prevlnum)
|
let maintain = indent(prevlnum)
|
||||||
|
|||||||
@@ -1,97 +1,48 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'elixir') == -1
|
||||||
|
|
||||||
setlocal nosmartindent
|
if exists("b:did_indent")
|
||||||
setlocal indentexpr=elixir#indent()
|
|
||||||
setlocal indentkeys+=0),0],0=\|>,=->
|
|
||||||
setlocal indentkeys+=0=end,0=else,0=match,0=elsif,0=catch,0=after,0=rescue
|
|
||||||
|
|
||||||
if exists("b:did_indent") || exists("*elixir#indent")
|
|
||||||
finish
|
finish
|
||||||
end
|
end
|
||||||
let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
|
|
||||||
let s:cpo_save = &cpo
|
setlocal indentexpr=elixir#indent(v:lnum)
|
||||||
set cpo&vim
|
|
||||||
|
|
||||||
function! elixir#indent()
|
setlocal indentkeys+=0=end,0=catch,0=rescue,0=after,0=else,=->,0},0],0),0=\|>,0=<>
|
||||||
" initiates the `old_ind` dictionary
|
" TODO: @jbodah 2017-02-27: all operators should cause reindent when typed
|
||||||
let b:old_ind = get(b:, 'old_ind', {})
|
|
||||||
" initiates the `line` dictionary
|
|
||||||
let line = s:build_line(v:lnum)
|
|
||||||
|
|
||||||
if s:is_beginning_of_file(line)
|
function! elixir#indent(lnum)
|
||||||
" Reset `old_ind` dictionary at the beginning of the file
|
let lnum = a:lnum
|
||||||
let b:old_ind = {}
|
let text = getline(lnum)
|
||||||
" At the start of the file use zero indent.
|
let prev_nb_lnum = prevnonblank(lnum-1)
|
||||||
return 0
|
let prev_nb_text = getline(prev_nb_lnum)
|
||||||
elseif !s:is_indentable_line(line)
|
|
||||||
" Keep last line indentation if the current line does not have an
|
call elixir#indent#debug("==> Indenting line " . lnum)
|
||||||
" indentable syntax
|
call elixir#indent#debug("text = '" . text . "'")
|
||||||
return indent(line.last_non_blank.num)
|
|
||||||
else
|
let handlers = [
|
||||||
" Calculates the indenation level based on the rules
|
\'top_of_file',
|
||||||
" All the rules are defined in `autoload/elixir/indent.vim`
|
\'starts_with_end',
|
||||||
let ind = indent(line.last_non_blank.num)
|
\'starts_with_mid_or_end_block_keyword',
|
||||||
call s:debug('>>> line = ' . string(line.current))
|
\'following_trailing_do',
|
||||||
call s:debug('>>> ind = ' . ind)
|
\'following_trailing_binary_operator',
|
||||||
let ind = s:indent('deindent_case_arrow', ind, line)
|
\'starts_with_pipe',
|
||||||
let ind = s:indent('indent_parenthesis', ind, line)
|
\'starts_with_close_bracket',
|
||||||
let ind = s:indent('indent_square_brackets', ind, line)
|
\'starts_with_binary_operator',
|
||||||
let ind = s:indent('indent_brackets', ind, line)
|
\'inside_nested_construct',
|
||||||
let ind = s:indent('deindent_opened_symbols', ind, line)
|
\'starts_with_comment',
|
||||||
let ind = s:indent('indent_pipeline_assignment', ind, line)
|
\'inside_generic_block'
|
||||||
let ind = s:indent('indent_pipeline_continuation', ind, line)
|
\]
|
||||||
let ind = s:indent('indent_after_pipeline', ind, line)
|
for handler in handlers
|
||||||
let ind = s:indent('indent_assignment', ind, line)
|
call elixir#indent#debug('testing handler elixir#indent#handle_'.handler)
|
||||||
let ind = s:indent('indent_ending_symbols', ind, line)
|
let indent = function('elixir#indent#handle_'.handler)(lnum, text, prev_nb_lnum, prev_nb_text)
|
||||||
let ind = s:indent('indent_keywords', ind, line)
|
if indent != -1
|
||||||
let ind = s:indent('deindent_keywords', ind, line)
|
call elixir#indent#debug('line '.lnum.': elixir#indent#handle_'.handler.' returned '.indent)
|
||||||
let ind = s:indent('deindent_ending_symbols', ind, line)
|
return indent
|
||||||
let ind = s:indent('indent_case_arrow', ind, line)
|
endif
|
||||||
let ind = s:indent('indent_ecto_queries', ind, line)
|
endfor
|
||||||
call s:debug('<<< final = ' . ind)
|
|
||||||
return ind
|
call elixir#indent#debug("defaulting")
|
||||||
end
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:indent(rule, ind, line)
|
|
||||||
let Fn = function('elixir#indent#'.a:rule)
|
|
||||||
let ind = Fn(a:ind, a:line)
|
|
||||||
call s:debug(a:rule . ' = ' . ind)
|
|
||||||
return ind
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:debug(message)
|
|
||||||
if get(g:, 'elixir_indent_debug', 0)
|
|
||||||
echom a:message
|
|
||||||
end
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:is_beginning_of_file(line)
|
|
||||||
return a:line.last_non_blank.num == 0
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:is_indentable_line(line)
|
|
||||||
return elixir#util#is_indentable_at(a:line.current.num, 1)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:build_line(line)
|
|
||||||
let line = { 'current': {}, 'last': {}, 'last_non_blank': {} }
|
|
||||||
let line.current = s:new_line(a:line)
|
|
||||||
let line.last = s:new_line(line.current.num - 1)
|
|
||||||
let line.last_non_blank = s:new_line(prevnonblank(line.current.num - 1))
|
|
||||||
|
|
||||||
return line
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:new_line(num)
|
|
||||||
return {
|
|
||||||
\ "num": a:num,
|
|
||||||
\ "text": getline(a:num)
|
|
||||||
\ }
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
|
||||||
unlet s:cpo_save
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -13,11 +13,7 @@ if exists('b:did_indent')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists('g:haskell_indent_disable')
|
if get(g:, 'haskell_indent_disable', 0)
|
||||||
let g:haskell_indent_disable = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if g:haskell_indent_disable != 0
|
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -68,7 +64,7 @@ if !exists('g:haskell_indent_guard')
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
setlocal indentexpr=GetHaskellIndent()
|
setlocal indentexpr=GetHaskellIndent()
|
||||||
setlocal indentkeys=0},0),0],!^F,o,O,0\=,0=where,0=let,0=deriving,<space>
|
setlocal indentkeys=0},0),0],!^F,o,O,0=where,0=let,0=deriving,<space>
|
||||||
|
|
||||||
function! s:isInBlock(hlstack)
|
function! s:isInBlock(hlstack)
|
||||||
return index(a:hlstack, 'haskellDelimiter') > -1 || index(a:hlstack, 'haskellParens') > -1 || index(a:hlstack, 'haskellBrackets') > -1 || index(a:hlstack, 'haskellBlock') > -1 || index(a:hlstack, 'haskellBlockComment') > -1 || index(a:hlstack, 'haskellPragma') > -1
|
return index(a:hlstack, 'haskellDelimiter') > -1 || index(a:hlstack, 'haskellParens') > -1 || index(a:hlstack, 'haskellBrackets') > -1 || index(a:hlstack, 'haskellBlock') > -1 || index(a:hlstack, 'haskellBlockComment') > -1 || index(a:hlstack, 'haskellPragma') > -1
|
||||||
@@ -159,15 +155,6 @@ function! GetHaskellIndent()
|
|||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" " comment indentation
|
|
||||||
" if l:line =~ '^\s*--'
|
|
||||||
" let l:s = match(l:prevline, '-- ')
|
|
||||||
" if l:s > -1
|
|
||||||
" endif
|
|
||||||
" " if l:prevline =~ '^\s*--'
|
|
||||||
" " return match(l:prevline, '\S')
|
|
||||||
" " endif
|
|
||||||
|
|
||||||
" { foo :: Int
|
" { foo :: Int
|
||||||
" >>,
|
" >>,
|
||||||
"
|
"
|
||||||
@@ -258,12 +245,16 @@ function! GetHaskellIndent()
|
|||||||
" where
|
" where
|
||||||
" >>foo
|
" >>foo
|
||||||
"
|
"
|
||||||
|
if l:prevline =~ '\C\<where\>\s*$'
|
||||||
|
return match(l:prevline, '\S') + get(g:, 'haskell_indent_after_bare_where', &shiftwidth)
|
||||||
|
endif
|
||||||
|
|
||||||
" do
|
" do
|
||||||
" >>foo
|
" >>foo
|
||||||
"
|
"
|
||||||
" foo =
|
" foo =
|
||||||
" >>bar
|
" >>bar
|
||||||
if l:prevline =~ '\C\(\<where\>\|\<do\>\|=\)\s*$'
|
if l:prevline =~ '\C\(\<do\>\|=\)\s*$'
|
||||||
return match(l:prevline, '\S') + &shiftwidth
|
return match(l:prevline, '\S') + &shiftwidth
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -279,7 +270,7 @@ function! GetHaskellIndent()
|
|||||||
" case foo of
|
" case foo of
|
||||||
" >>bar -> quux
|
" >>bar -> quux
|
||||||
if l:prevline =~ '\C\<case\>.\+\<of\>\s*$'
|
if l:prevline =~ '\C\<case\>.\+\<of\>\s*$'
|
||||||
if exists('g:haskell_indent_case_alternative') && g:haskell_indent_case_alternative
|
if get(g:,'haskell_indent_case_alternative', 0)
|
||||||
return match(l:prevline, '\S') + &shiftwidth
|
return match(l:prevline, '\S') + &shiftwidth
|
||||||
else
|
else
|
||||||
return match(l:prevline, '\C\<case\>') + g:haskell_indent_case
|
return match(l:prevline, '\C\<case\>') + g:haskell_indent_case
|
||||||
@@ -319,6 +310,14 @@ function! GetHaskellIndent()
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" foo :: Int
|
||||||
|
" -> Int
|
||||||
|
" >>>>-> Int
|
||||||
|
"
|
||||||
|
" foo :: Monad m
|
||||||
|
" => Functor f
|
||||||
|
" >>>>=> Int
|
||||||
|
"
|
||||||
" foo :: Int
|
" foo :: Int
|
||||||
" -> Int
|
" -> Int
|
||||||
" foo x
|
" foo x
|
||||||
@@ -327,32 +326,36 @@ function! GetHaskellIndent()
|
|||||||
" :: Int
|
" :: Int
|
||||||
" -> Int
|
" -> Int
|
||||||
" foo x
|
" foo x
|
||||||
if l:prevline =~ '^\s*[-=]>' && l:line !~ '^\s*[-=]>'
|
if l:prevline =~ '^\s*[-=]>'
|
||||||
if s:isInBlock(l:hlstack)
|
if l:line =~ '^\s*[-=]>'
|
||||||
return match(l:prevline, '[^\s-=>]')
|
return match(l:prevline, '[-=]')
|
||||||
else
|
else
|
||||||
let l:m = matchstr(l:line, '^\s*\zs\<\S\+\>\ze')
|
if s:isInBlock(l:hlstack)
|
||||||
let l:l = l:prevline
|
return match(l:prevline, '[^-=]')
|
||||||
let l:c = 1
|
else
|
||||||
|
let l:m = matchstr(l:line, '^\s*\zs\<\S\+\>\ze')
|
||||||
|
let l:l = l:prevline
|
||||||
|
let l:c = 1
|
||||||
|
|
||||||
while v:lnum != l:c
|
while v:lnum != l:c
|
||||||
" fun decl
|
" fun decl
|
||||||
if l:l =~ ('^\s*' . l:m . '\(\s*::\|\n\s\+::\)')
|
if l:l =~ ('^\s*' . l:m . '\(\s*::\|\n\s\+::\)')
|
||||||
let l:s = match(l:l, l:m)
|
let l:s = match(l:l, l:m)
|
||||||
if match(l:l, '\C^\s*\<default\>') > -1
|
if match(l:l, '\C^\s*\<default\>') > -1
|
||||||
return l:s - 8
|
return l:s - 8
|
||||||
else
|
else
|
||||||
return l:s
|
return l:s
|
||||||
|
endif
|
||||||
|
" empty line, stop looking
|
||||||
|
elseif l:l =~ '^$'
|
||||||
|
return 0
|
||||||
endif
|
endif
|
||||||
" empty line, stop looking
|
let l:c += 1
|
||||||
elseif l:l =~ '^$'
|
let l:l = getline(v:lnum - l:c)
|
||||||
return 0
|
endwhile
|
||||||
endif
|
|
||||||
let l:c += 1
|
|
||||||
let l:l = getline(v:lnum - l:c)
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -403,12 +406,17 @@ function! GetHaskellIndent()
|
|||||||
|
|
||||||
" in foo
|
" in foo
|
||||||
" where bar
|
" where bar
|
||||||
|
"
|
||||||
|
" or
|
||||||
|
"
|
||||||
|
" foo
|
||||||
|
" >>where
|
||||||
if l:line =~ '\C^\s*\<where\>'
|
if l:line =~ '\C^\s*\<where\>'
|
||||||
if match(l:prevline, '\C^\s\+in\s\+') == 0
|
if match(l:prevline, '\C^\s\+in\s\+') == 0
|
||||||
return match(l:prevline, 'in') - g:haskell_indent_in
|
return match(l:prevline, 'in') - g:haskell_indent_in
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return match(l:prevline, '\S') + &shiftwidth
|
return match(l:prevline, '\S') + get(g:, 'haskell_indent_before_where', &shiftwidth)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" let x = 1
|
" let x = 1
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') ==
|
|||||||
" Language: Javascript
|
" Language: Javascript
|
||||||
" Maintainer: Chris Paul ( https://github.com/bounceme )
|
" Maintainer: Chris Paul ( https://github.com/bounceme )
|
||||||
" URL: https://github.com/pangloss/vim-javascript
|
" URL: https://github.com/pangloss/vim-javascript
|
||||||
" Last Change: March 9, 2017
|
" Last Change: May 16, 2017
|
||||||
|
|
||||||
" 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')
|
||||||
@@ -12,6 +12,10 @@ if exists('b:did_indent')
|
|||||||
endif
|
endif
|
||||||
let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
" indent correctly if inside <script>
|
||||||
|
" vim/vim@690afe1 for the switch from cindent
|
||||||
|
let b:html_indent_script1 = 'inc'
|
||||||
|
|
||||||
" Now, set up our indentation expression and keys that trigger it.
|
" Now, set up our indentation expression and keys that trigger it.
|
||||||
setlocal indentexpr=GetJavascriptIndent()
|
setlocal indentexpr=GetJavascriptIndent()
|
||||||
setlocal autoindent nolisp nosmartindent
|
setlocal autoindent nolisp nosmartindent
|
||||||
@@ -23,6 +27,13 @@ setlocal indentkeys+=0],0)
|
|||||||
|
|
||||||
let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<'
|
let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<'
|
||||||
|
|
||||||
|
" Regex of syntax group names that are or delimit string or are comments.
|
||||||
|
let b:syng_strcom = get(b:,'syng_strcom','string\|comment\|regex\|special\|doc\|template\%(braces\)\@!')
|
||||||
|
let b:syng_str = get(b:,'syng_str','string\|template\|special')
|
||||||
|
" template strings may want to be excluded when editing graphql:
|
||||||
|
" au! Filetype javascript let b:syng_str = '^\%(.*template\)\@!.*string\|special'
|
||||||
|
" au! Filetype javascript let b:syng_strcom = '^\%(.*template\)\@!.*string\|comment\|regex\|special\|doc'
|
||||||
|
|
||||||
" Only define the function once.
|
" Only define the function once.
|
||||||
if exists('*GetJavascriptIndent')
|
if exists('*GetJavascriptIndent')
|
||||||
finish
|
finish
|
||||||
@@ -38,7 +49,7 @@ if exists('*shiftwidth')
|
|||||||
endfunction
|
endfunction
|
||||||
else
|
else
|
||||||
function s:sw()
|
function s:sw()
|
||||||
return &l:shiftwidth == 0 ? &l:tabstop : &l:shiftwidth
|
return &l:shiftwidth ? &l:shiftwidth : &l:tabstop
|
||||||
endfunction
|
endfunction
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -46,6 +57,10 @@ endif
|
|||||||
" matches before pos.
|
" matches before pos.
|
||||||
let s:z = has('patch-7.4.984') ? 'z' : ''
|
let s:z = has('patch-7.4.984') ? 'z' : ''
|
||||||
|
|
||||||
|
let s:syng_com = 'comment\|doc'
|
||||||
|
" Expression used to check whether we should skip a match with searchpair().
|
||||||
|
let s:skip_expr = "s:syn_at(line('.'),col('.')) =~? b:syng_strcom"
|
||||||
|
|
||||||
" searchpair() wrapper
|
" searchpair() wrapper
|
||||||
if has('reltime')
|
if has('reltime')
|
||||||
function s:GetPair(start,end,flags,skip,time,...)
|
function s:GetPair(start,end,flags,skip,time,...)
|
||||||
@@ -57,56 +72,80 @@ else
|
|||||||
endfunction
|
endfunction
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Regex of syntax group names that are or delimit string or are comments.
|
function s:syn_at(l,c)
|
||||||
let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template\%(braces\)\@!'
|
let pos = join([a:l,a:c],',')
|
||||||
let s:syng_str = 'string\|template\|special'
|
if has_key(s:synId_cache,pos)
|
||||||
let s:syng_com = 'comment\|doc'
|
return s:synId_cache[pos]
|
||||||
" Expression used to check whether we should skip a match with searchpair().
|
endif
|
||||||
let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'"
|
let s:synId_cache[pos] = synIDattr(synID(a:l,a:c,0),'name')
|
||||||
|
return s:synId_cache[pos]
|
||||||
function s:parse_cino(f) abort
|
|
||||||
return float2nr(eval(substitute(substitute(join(split(
|
|
||||||
\ matchstr(&cino,'\C.*'.a:f.'\zs[^,]*'), 's',1), '*'.s:W)
|
|
||||||
\ , '^-\=\zs\*','',''), '^-\=\zs\.','0.','')))
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function s:parse_cino(f)
|
||||||
|
let [cin, divider, n] = [strridx(&cino,a:f), 0, '']
|
||||||
|
if cin == -1
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
let [sign, cstr] = &cino[cin+1] ==# '-' ? [-1, &cino[cin+2:]] : [1, &cino[cin+1:]]
|
||||||
|
for c in split(cstr,'\zs')
|
||||||
|
if c ==# '.' && !divider
|
||||||
|
let divider = 1
|
||||||
|
elseif c ==# 's'
|
||||||
|
if n is ''
|
||||||
|
let n = s:W
|
||||||
|
else
|
||||||
|
let n = str2nr(n) * s:W
|
||||||
|
endif
|
||||||
|
break
|
||||||
|
elseif c =~ '\d'
|
||||||
|
let [n, divider] .= [c, 0]
|
||||||
|
else
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return sign * str2nr(n) / max([str2nr(divider),1])
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Optimized {skip} expr, used only once per GetJavascriptIndent() call
|
||||||
function s:skip_func()
|
function s:skip_func()
|
||||||
if getline('.') =~ '\%<'.col('.').'c\/.\{-}\/\|\%>'.col('.').'c[''"]\|\\$'
|
if s:topCol == 1 || line('.') < s:scriptTag
|
||||||
return eval(s:skip_expr)
|
return {} " E728, used as limit condition for loops and searchpair()
|
||||||
|
endif
|
||||||
|
let s:topCol = col('.')
|
||||||
|
if getline('.') =~ '\%<'.s:topCol.'c\/.\{-}\/\|\%>'.s:topCol.'c[''"]\|\\$'
|
||||||
|
if eval(s:skip_expr)
|
||||||
|
let s:topCol = 0
|
||||||
|
endif
|
||||||
|
return !s:topCol
|
||||||
elseif s:checkIn || search('\m`\|\${\|\*\/','nW'.s:z,s:looksyn)
|
elseif s:checkIn || search('\m`\|\${\|\*\/','nW'.s:z,s:looksyn)
|
||||||
let s:checkIn = eval(s:skip_expr)
|
let s:checkIn = eval(s:skip_expr)
|
||||||
|
if s:checkIn
|
||||||
|
let s:topCol = 0
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
let s:looksyn = line('.')
|
let s:looksyn = line('.')
|
||||||
return s:checkIn
|
return s:checkIn
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:alternatePair(stop)
|
function s:alternatePair()
|
||||||
let pos = getpos('.')[1:2]
|
let [l:pos, pat, l:for] = [getpos('.'), '[][(){};]', 3]
|
||||||
let pat = '[][(){};]'
|
while search('\m'.pat,'bW')
|
||||||
while search('\m'.pat,'bW',a:stop)
|
|
||||||
if s:skip_func() | continue | endif
|
if s:skip_func() | continue | endif
|
||||||
let idx = stridx('])};',s:looking_at())
|
let idx = stridx('])};',s:looking_at())
|
||||||
if idx is 3 | let pat = '[{}()]' | continue | endif
|
if idx is 3
|
||||||
if idx + 1
|
if l:for is 1
|
||||||
if s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop) <= 0
|
return s:GetPair('{','}','bW','s:skip_func()',2000) > 0 || setpos('.',l:pos)
|
||||||
|
endif
|
||||||
|
let [pat, l:for] = ['[{}();]', l:for - 1]
|
||||||
|
elseif idx + 1
|
||||||
|
if s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000) < 1
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
call call('cursor',pos)
|
call setpos('.',l:pos)
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:save_pos(f,...)
|
|
||||||
let l:pos = getpos('.')[1:2]
|
|
||||||
let ret = call(a:f,a:000)
|
|
||||||
call call('cursor',l:pos)
|
|
||||||
return ret
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:syn_at(l,c)
|
|
||||||
return synIDattr(synID(a:l,a:c,0),'name')
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:looking_at()
|
function s:looking_at()
|
||||||
@@ -118,10 +157,10 @@ function s:token()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:previous_token()
|
function s:previous_token()
|
||||||
let l:pos = getpos('.')[1:2]
|
let l:pos = getpos('.')
|
||||||
if search('\m\k\{1,}\|\S','ebW')
|
if search('\m\k\{1,}\|\S','ebW')
|
||||||
if (getline('.')[col('.')-2:col('.')-1] == '*/' || line('.') != l:pos[0] &&
|
if (strpart(getline('.'),col('.')-2,2) == '*/' || line('.') != l:pos[1] &&
|
||||||
\ getline('.') =~ '\%<'.col('.').'c\/\/') && s:syn_at(line('.'),col('.')) =~? s:syng_com
|
\ getline('.')[:col('.')-1] =~ '\/\/') && s:syn_at(line('.'),col('.')) =~? s:syng_com
|
||||||
while search('\m\S\ze\_s*\/[/*]','bW')
|
while search('\m\S\ze\_s*\/[/*]','bW')
|
||||||
if s:syn_at(line('.'),col('.')) !~? s:syng_com
|
if s:syn_at(line('.'),col('.')) !~? s:syng_com
|
||||||
return s:token()
|
return s:token()
|
||||||
@@ -130,51 +169,66 @@ function s:previous_token()
|
|||||||
else
|
else
|
||||||
return s:token()
|
return s:token()
|
||||||
endif
|
endif
|
||||||
|
call setpos('.',l:pos)
|
||||||
endif
|
endif
|
||||||
call call('cursor',l:pos)
|
|
||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
for s:__ in ['__previous_token','__IsBlock']
|
||||||
|
function s:{s:__}(...)
|
||||||
|
let l:pos = getpos('.')
|
||||||
|
try
|
||||||
|
return call('s:'.matchstr(expand('<sfile>'),'.*__\zs\w\+'),a:000)
|
||||||
|
catch
|
||||||
|
finally
|
||||||
|
call setpos('.',l:pos)
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
endfor
|
||||||
|
|
||||||
function s:expr_col()
|
function s:expr_col()
|
||||||
if getline('.')[col('.')-2] == ':'
|
if getline('.')[col('.')-2] == ':'
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
let bal = 0
|
let [bal, l:pos] = [0, getpos('.')]
|
||||||
while search('\m[{}?:;]','bW')
|
while bal < 1 && search('\m[{}?:;]','bW',s:scriptTag)
|
||||||
if eval(s:skip_expr) | continue | endif
|
if eval(s:skip_expr)
|
||||||
" switch (looking_at())
|
continue
|
||||||
exe { '}': "if s:GetPair('{','}','bW',s:skip_expr,200) <= 0 | return | endif",
|
elseif s:looking_at() == ':'
|
||||||
\ ';': "return",
|
let bal -= strpart(getline('.'),col('.')-2,3) !~ '::'
|
||||||
\ '{': "return getpos('.')[1:2] != b:js_cache[1:] && !s:IsBlock()",
|
elseif s:looking_at() == '?'
|
||||||
\ ':': "let bal -= getline('.')[max([col('.')-2,0]):col('.')] !~ '::'",
|
let bal += 1
|
||||||
\ '?': "let bal += 1 | if bal > 0 | return 1 | endif" }[s:looking_at()]
|
elseif s:looking_at() == '{' && getpos('.')[1:2] != b:js_cache[1:] && !s:IsBlock()
|
||||||
|
let bal = 1
|
||||||
|
elseif s:looking_at() != '}' || s:GetPair('{','}','bW',s:skip_expr,200) < 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
|
call setpos('.',l:pos)
|
||||||
|
return max([bal,0])
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" configurable regexes that define continuation lines, not including (, {, or [.
|
" configurable regexes that define continuation lines, not including (, {, or [.
|
||||||
let s:opfirst = '^' . get(g:,'javascript_opfirst',
|
let s:opfirst = '^' . get(g:,'javascript_opfirst',
|
||||||
\ '\C\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)')
|
\ '\C\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)')
|
||||||
let s:continuation = get(g:,'javascript_continuation',
|
let s:continuation = get(g:,'javascript_continuation',
|
||||||
\ '\C\%([-+<>=,.~!?/*^%|&:]\|\<\%(typeof\|new\|delete\|void\|in\|instanceof\|await\)\)') . '$'
|
\ '\C\%([<=,.~!?/*^%|&:]\|+\@<!+\|-\@<!-\|=\@<!>\|\<\%(typeof\|new\|delete\|void\|in\|instanceof\|await\)\)') . '$'
|
||||||
|
|
||||||
function s:continues(ln,con)
|
function s:continues(ln,con)
|
||||||
if !cursor(a:ln, match(' '.a:con,s:continuation))
|
let token = matchstr(a:con[-15:],s:continuation)
|
||||||
let teol = s:looking_at()
|
if strlen(token)
|
||||||
if teol == '/'
|
call cursor(a:ln,strlen(a:con))
|
||||||
return s:syn_at(line('.'),col('.')) !~? 'regex'
|
if token =~ '[/>]'
|
||||||
elseif teol =~ '[-+>]'
|
return s:syn_at(a:ln,col('.')) !~? (token == '>' ? 'jsflow\|^html' : 'regex')
|
||||||
return getline('.')[col('.')-2] != tr(teol,'>','=')
|
elseif token =~ '\l'
|
||||||
elseif teol =~ '\l'
|
|
||||||
return s:previous_token() != '.'
|
return s:previous_token() != '.'
|
||||||
elseif teol == ':'
|
elseif token == ':'
|
||||||
return s:expr_col()
|
return s:expr_col()
|
||||||
endif
|
endif
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" get the line of code stripped of comments and move cursor to the last
|
|
||||||
" non-comment char.
|
|
||||||
function s:Trim(ln)
|
function s:Trim(ln)
|
||||||
let pline = substitute(getline(a:ln),'\s*$','','')
|
let pline = substitute(getline(a:ln),'\s*$','','')
|
||||||
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
|
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
|
||||||
@@ -183,24 +237,28 @@ function s:Trim(ln)
|
|||||||
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
|
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
|
||||||
let pline = substitute(pline[:-2],'\s*$','','')
|
let pline = substitute(pline[:-2],'\s*$','','')
|
||||||
endwhile
|
endwhile
|
||||||
return pline is '' || cursor(a:ln,strlen(pline)) ? pline : pline
|
return pline
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Find line above 'lnum' that isn't empty or in a comment
|
" Find line above 'lnum' that isn't empty or in a comment
|
||||||
function s:PrevCodeLine(lnum)
|
function s:PrevCodeLine(lnum)
|
||||||
let [l:pos, l:n] = [getpos('.')[1:2], prevnonblank(a:lnum)]
|
let l:n = prevnonblank(a:lnum)
|
||||||
while l:n
|
while l:n
|
||||||
if getline(l:n) =~ '^\s*\/[/*]'
|
if getline(l:n) =~ '^\s*\/[/*]'
|
||||||
|
if (stridx(getline(l:n),'`') > 0 || getline(l:n-1)[-1:] == '\') &&
|
||||||
|
\ s:syn_at(l:n,1) =~? b:syng_str
|
||||||
|
break
|
||||||
|
endif
|
||||||
let l:n = prevnonblank(l:n-1)
|
let l:n = prevnonblank(l:n-1)
|
||||||
elseif stridx(getline(l:n), '*/') + 1 && s:syn_at(l:n,1) =~? s:syng_com
|
elseif stridx(getline(l:n), '*/') + 1 && s:syn_at(l:n,1) =~? s:syng_com
|
||||||
|
let l:pos = getpos('.')
|
||||||
call cursor(l:n,1)
|
call cursor(l:n,1)
|
||||||
keepjumps norm! [*
|
let l:n = search('\m\S\_s*\/\*','nbW')
|
||||||
let l:n = search('\m\S','nbW')
|
call setpos('.',l:pos)
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
call call('cursor',l:pos)
|
|
||||||
return l:n
|
return l:n
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -210,14 +268,14 @@ function s:Balanced(lnum)
|
|||||||
let l:line = getline(a:lnum)
|
let l:line = getline(a:lnum)
|
||||||
let pos = match(l:line, '[][(){}]', 0)
|
let pos = match(l:line, '[][(){}]', 0)
|
||||||
while pos != -1
|
while pos != -1
|
||||||
if s:syn_at(a:lnum,pos + 1) !~? s:syng_strcom
|
if s:syn_at(a:lnum,pos + 1) !~? b:syng_strcom
|
||||||
let l:open += match(' ' . l:line[pos],'[[({]')
|
let l:open += match(' ' . l:line[pos],'[[({]')
|
||||||
if l:open < 0
|
if l:open < 0
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let pos = match(l:line, (l:open ?
|
let pos = match(l:line, (l:open ?
|
||||||
\ '['.escape(tr(l:line[pos],'({[]})',')}][{(').l:line[pos],']').']' :
|
\ '['.matchstr(['][','()','{}'],l:line[pos]).']' :
|
||||||
\ '[][(){}]'), pos + 1)
|
\ '[][(){}]'), pos + 1)
|
||||||
endwhile
|
endwhile
|
||||||
return !l:open
|
return !l:open
|
||||||
@@ -225,6 +283,7 @@ endfunction
|
|||||||
|
|
||||||
function s:OneScope(lnum)
|
function s:OneScope(lnum)
|
||||||
let pline = s:Trim(a:lnum)
|
let pline = s:Trim(a:lnum)
|
||||||
|
call cursor(a:lnum,strlen(pline))
|
||||||
let kw = 'else do'
|
let kw = 'else do'
|
||||||
if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
|
if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
|
||||||
if s:previous_token() =~# '^\%(await\|each\)$'
|
if s:previous_token() =~# '^\%(await\|each\)$'
|
||||||
@@ -235,7 +294,27 @@ function s:OneScope(lnum)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 &&
|
return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 &&
|
||||||
\ s:save_pos('s:previous_token') != '.'
|
\ s:__previous_token() != '.' && !s:doWhile()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function s:doWhile()
|
||||||
|
if expand('<cword>') ==# 'while'
|
||||||
|
let [bal, l:pos] = [0, getpos('.')]
|
||||||
|
call search('\m\<','cbW')
|
||||||
|
while bal < 1 && search('\m\C[{}]\|\<\%(do\|while\)\>','bW')
|
||||||
|
if eval(s:skip_expr)
|
||||||
|
continue
|
||||||
|
elseif s:looking_at() ==# 'd'
|
||||||
|
let bal += s:__IsBlock(1)
|
||||||
|
elseif s:looking_at() ==# 'w'
|
||||||
|
let bal -= s:__previous_token() != '.'
|
||||||
|
elseif s:looking_at() != '}' || s:GetPair('{','}','bW',s:skip_expr,200) < 1
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
call setpos('.',l:pos)
|
||||||
|
return max([bal,0])
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" returns braceless levels started by 'i' and above lines * &sw. 'num' is the
|
" returns braceless levels started by 'i' and above lines * &sw. 'num' is the
|
||||||
@@ -259,32 +338,36 @@ function s:iscontOne(i,num,cont)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader
|
" https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader
|
||||||
function s:IsBlock()
|
function s:IsBlock(...)
|
||||||
if s:looking_at() == '{'
|
if a:0 || s:looking_at() == '{'
|
||||||
let l:n = line('.')
|
let l:n = line('.')
|
||||||
let char = s:previous_token()
|
let char = s:previous_token()
|
||||||
if match(s:stack,'\cxml\|jsx') + 1 && s:syn_at(line('.'),col('.')-1) =~? 'xml\|jsx'
|
if match(s:stack,'\cxml\|jsx') + 1 && s:syn_at(line('.'),col('.')-1) =~? 'xml\|jsx'
|
||||||
return char != '{'
|
return char != '{'
|
||||||
elseif char =~ '\k'
|
elseif char =~ '\k'
|
||||||
if char ==# 'type'
|
if char ==# 'type'
|
||||||
return s:previous_token() !~# '^\%(im\|ex\)port$'
|
return s:__previous_token() !~# '^\%(im\|ex\)port$'
|
||||||
endif
|
endif
|
||||||
return index(split('return const let import export extends yield default delete var await void typeof throw case new of in instanceof')
|
return index(split('return const let import export extends yield default delete var await void typeof throw case new of in instanceof')
|
||||||
\ ,char) < (line('.') != l:n) || s:save_pos('s:previous_token') == '.'
|
\ ,char) < (line('.') != l:n) || s:__previous_token() == '.'
|
||||||
elseif char == '>'
|
elseif char == '>'
|
||||||
return getline('.')[col('.')-2] == '=' || s:syn_at(line('.'),col('.')) =~? '^jsflow'
|
return getline('.')[col('.')-2] == '=' || s:syn_at(line('.'),col('.')) =~? 'jsflow\|^html'
|
||||||
|
elseif char == '*'
|
||||||
|
return s:__previous_token() == ':'
|
||||||
elseif char == ':'
|
elseif char == ':'
|
||||||
return !s:save_pos('s:expr_col')
|
return !s:expr_col()
|
||||||
elseif char == '/'
|
elseif char == '/'
|
||||||
return s:syn_at(line('.'),col('.')) =~? 'regex'
|
return s:syn_at(line('.'),col('.')) =~? 'regex'
|
||||||
endif
|
endif
|
||||||
return char !~ '[=~!<*,?^%|&([]' &&
|
return char !~ '[=~!<,.?^%|&([]' &&
|
||||||
\ (char !~ '[-+]' || l:n != line('.') && getline('.')[col('.')-2] == char)
|
\ (char !~ '[-+]' || l:n != line('.') && getline('.')[col('.')-2] == char)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function GetJavascriptIndent()
|
function GetJavascriptIndent()
|
||||||
let b:js_cache = get(b:,'js_cache',[0,0,0])
|
let b:js_cache = get(b:,'js_cache',[0,0,0])
|
||||||
|
let s:synId_cache = {}
|
||||||
" Get the current line.
|
" Get the current line.
|
||||||
call cursor(v:lnum,1)
|
call cursor(v:lnum,1)
|
||||||
let l:line = getline('.')
|
let l:line = getline('.')
|
||||||
@@ -299,7 +382,7 @@ function GetJavascriptIndent()
|
|||||||
elseif l:line !~ '^\s*\/[/*]'
|
elseif l:line !~ '^\s*\/[/*]'
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
elseif syns =~? s:syng_str
|
elseif syns =~? b:syng_str
|
||||||
if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1)
|
if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1)
|
||||||
let b:js_cache[0] = v:lnum
|
let b:js_cache[0] = v:lnum
|
||||||
endif
|
endif
|
||||||
@@ -319,37 +402,33 @@ function GetJavascriptIndent()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" the containing paren, bracket, or curly. Many hacks for performance
|
" the containing paren, bracket, or curly. Many hacks for performance
|
||||||
let idx = index([']',')','}'],l:line[0])
|
let [ s:scriptTag, idx ] = [ get(get(b:,'hi_indent',{}),'blocklnr'),
|
||||||
|
\ index([']',')','}'],l:line[0]) ]
|
||||||
if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum &&
|
if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum &&
|
||||||
\ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum))
|
\ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum))
|
||||||
call call('cursor',b:js_cache[1:])
|
call call('cursor',b:js_cache[2] ? b:js_cache[1:] : [0,0])
|
||||||
else
|
else
|
||||||
let [s:looksyn, s:checkIn, top] = [v:lnum - 1, 0, (!indent(l:lnum) &&
|
let [s:looksyn, s:checkIn, s:topCol] = [v:lnum - 1, 0, 0]
|
||||||
\ s:syn_at(l:lnum,1) !~? s:syng_str) * l:lnum]
|
|
||||||
if idx + 1
|
if idx + 1
|
||||||
call s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:skip_func()',2000,top)
|
call s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:skip_func()',2000)
|
||||||
elseif getline(v:lnum) !~ '^\S' && syns =~? 'block'
|
elseif getline(v:lnum) !~ '^\S' && syns =~? 'block'
|
||||||
call s:GetPair('{','}','bW','s:skip_func()',2000,top)
|
call s:GetPair('{','}','bW','s:skip_func()',2000)
|
||||||
else
|
else
|
||||||
call s:alternatePair(top)
|
call s:alternatePair()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [0,0] : getpos('.')[1:2])
|
let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [s:scriptTag,0] : getpos('.')[1:2])
|
||||||
let num = b:js_cache[1]
|
let num = b:js_cache[1]
|
||||||
|
|
||||||
let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0]
|
let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0]
|
||||||
if !num || s:IsBlock()
|
if !b:js_cache[2] || s:IsBlock()
|
||||||
let ilnum = line('.')
|
let ilnum = line('.')
|
||||||
let pline = s:save_pos('s:Trim',l:lnum)
|
let pline = s:Trim(l:lnum)
|
||||||
if num && s:looking_at() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
|
if b:js_cache[2] && s:looking_at() == ')' && s:GetPair('(',')','bW',s:skip_expr,100) > 0
|
||||||
let num = ilnum == num ? line('.') : num
|
let num = ilnum == num ? line('.') : num
|
||||||
if idx < 0 && s:previous_token() ==# 'switch' && s:previous_token() != '.'
|
if idx < 0 && s:previous_token() ==# 'switch' && s:previous_token() != '.'
|
||||||
if &cino !~ ':'
|
let switch_offset = &cino !~ ':' ? s:W : max([-indent(num),s:parse_cino(':')])
|
||||||
let switch_offset = s:W
|
|
||||||
else
|
|
||||||
let switch_offset = max([-indent(num),s:parse_cino(':')])
|
|
||||||
endif
|
|
||||||
if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>'
|
if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>'
|
||||||
return indent(num) + switch_offset
|
return indent(num) + switch_offset
|
||||||
endif
|
endif
|
||||||
@@ -362,12 +441,13 @@ function GetJavascriptIndent()
|
|||||||
endif
|
endif
|
||||||
elseif idx < 0 && getline(b:js_cache[1])[b:js_cache[2]-1] == '(' && &cino =~ '('
|
elseif idx < 0 && getline(b:js_cache[1])[b:js_cache[2]-1] == '(' && &cino =~ '('
|
||||||
let pval = s:parse_cino('(')
|
let pval = s:parse_cino('(')
|
||||||
return !pval ? (s:parse_cino('w') ? 0 : -(!!search('\m\S','W'.s:z,num))) + virtcol('.') :
|
return !pval || !search('\m\S','nbW',num) && !s:parse_cino('U') ?
|
||||||
\ max([indent('.') + pval + (s:GetPair('(',')','nbrmW',s:skip_expr,100,num) * s:W),0])
|
\ (s:parse_cino('w') ? 0 : -!!search('\m\S','W'.s:z,num)) + virtcol('.') :
|
||||||
|
\ max([indent('.') + pval + s:GetPair('(',')','nbrmW',s:skip_expr,100,num) * s:W,0])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" main return
|
" main return
|
||||||
if l:line =~ '^\%([])}]\||}\)'
|
if l:line =~ '^[])}]\|^|}'
|
||||||
return max([indent(num),0])
|
return max([indent(num),0])
|
||||||
elseif num
|
elseif num
|
||||||
return indent(num) + s:W + switch_offset + bL + isOp
|
return indent(num) + s:W + switch_offset + bL + isOp
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'plantuml') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'plantuml') == -1
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists('b:did_indent')
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
@@ -9,7 +9,7 @@ setlocal indentexpr=GetPlantUMLIndent()
|
|||||||
setlocal indentkeys=o,O,<CR>,<:>,!^F,0end,0else,}
|
setlocal indentkeys=o,O,<CR>,<:>,!^F,0end,0else,}
|
||||||
|
|
||||||
" only define the indent code once
|
" only define the indent code once
|
||||||
if exists("*GetPlantUMLIndent")
|
if exists('*GetPlantUMLIndent')
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -49,22 +49,21 @@ set cpo&vim
|
|||||||
" 1. Variables {{{1
|
" 1. Variables {{{1
|
||||||
" ============
|
" ============
|
||||||
|
|
||||||
" Regex of syntax group names that are or delimit strings/symbols or are comments.
|
" Syntax group names that are strings.
|
||||||
let s:syng_strcom = '\<ruby\%(Regexp\|RegexpDelimiter\|RegexpEscape' .
|
|
||||||
\ '\|Symbol\|String\|StringDelimiter\|StringEscape\|ASCIICode' .
|
|
||||||
\ '\|Interpolation\|InterpolationDelimiter\|NoInterpolation\|Comment\|Documentation\)\>'
|
|
||||||
|
|
||||||
" Regex of syntax group names that are strings.
|
|
||||||
let s:syng_string =
|
let s:syng_string =
|
||||||
\ '\<ruby\%(String\|Interpolation\|InterpolationDelimiter\|NoInterpolation\|StringEscape\)\>'
|
\ ['String', 'Interpolation', 'InterpolationDelimiter', 'NoInterpolation', 'StringEscape']
|
||||||
|
|
||||||
" Regex of syntax group names that are strings or documentation.
|
" Syntax group names that are strings or documentation.
|
||||||
let s:syng_stringdoc =
|
let s:syng_stringdoc = s:syng_string + ['Documentation']
|
||||||
\ '\<ruby\%(String\|Interpolation\|InterpolationDelimiter\|NoInterpolation\|StringEscape\|Documentation\)\>'
|
|
||||||
|
" Syntax group names that are or delimit strings/symbols/regexes or are comments.
|
||||||
|
let s:syng_strcom = s:syng_stringdoc +
|
||||||
|
\ ['Regexp', 'RegexpDelimiter', 'RegexpEscape',
|
||||||
|
\ 'Symbol', 'StringDelimiter', 'ASCIICode', 'Comment']
|
||||||
|
|
||||||
" Expression used to check whether we should skip a match with searchpair().
|
" Expression used to check whether we should skip a match with searchpair().
|
||||||
let s:skip_expr =
|
let s:skip_expr =
|
||||||
\ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
|
\ 'index(map('.string(s:syng_strcom).',"hlID(''ruby''.v:val)"), synID(line("."),col("."),1)) >= 0'
|
||||||
|
|
||||||
" Regex used for words that, at the start of a line, add a level of indent.
|
" Regex used for words that, at the start of a line, add a level of indent.
|
||||||
let s:ruby_indent_keywords =
|
let s:ruby_indent_keywords =
|
||||||
@@ -152,7 +151,7 @@ let s:leading_operator_regex = '^\s*[.]'
|
|||||||
" 2. GetRubyIndent Function {{{1
|
" 2. GetRubyIndent Function {{{1
|
||||||
" =========================
|
" =========================
|
||||||
|
|
||||||
function GetRubyIndent(...)
|
function! GetRubyIndent(...) abort
|
||||||
" 2.1. Setup {{{2
|
" 2.1. Setup {{{2
|
||||||
" ----------
|
" ----------
|
||||||
|
|
||||||
@@ -255,7 +254,7 @@ endfunction
|
|||||||
" 3. Indenting Logic Callbacks {{{1
|
" 3. Indenting Logic Callbacks {{{1
|
||||||
" ============================
|
" ============================
|
||||||
|
|
||||||
function! s:AccessModifier(cline_info)
|
function! s:AccessModifier(cline_info) abort
|
||||||
let info = a:cline_info
|
let info = a:cline_info
|
||||||
|
|
||||||
" If this line is an access modifier keyword, align according to the closest
|
" If this line is an access modifier keyword, align according to the closest
|
||||||
@@ -279,7 +278,7 @@ function! s:AccessModifier(cline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ClosingBracketOnEmptyLine(cline_info)
|
function! s:ClosingBracketOnEmptyLine(cline_info) abort
|
||||||
let info = a:cline_info
|
let info = a:cline_info
|
||||||
|
|
||||||
" If we got a closing bracket on an empty line, find its match and indent
|
" If we got a closing bracket on an empty line, find its match and indent
|
||||||
@@ -308,7 +307,7 @@ function! s:ClosingBracketOnEmptyLine(cline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:BlockComment(cline_info)
|
function! s:BlockComment(cline_info) abort
|
||||||
" If we have a =begin or =end set indent to first column.
|
" If we have a =begin or =end set indent to first column.
|
||||||
if match(a:cline_info.cline, '^\s*\%(=begin\|=end\)$') != -1
|
if match(a:cline_info.cline, '^\s*\%(=begin\|=end\)$') != -1
|
||||||
return 0
|
return 0
|
||||||
@@ -316,7 +315,7 @@ function! s:BlockComment(cline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:DeindentingKeyword(cline_info)
|
function! s:DeindentingKeyword(cline_info) abort
|
||||||
let info = a:cline_info
|
let info = a:cline_info
|
||||||
|
|
||||||
" If we have a deindenting keyword, find its match and indent to its level.
|
" If we have a deindenting keyword, find its match and indent to its level.
|
||||||
@@ -357,7 +356,7 @@ function! s:DeindentingKeyword(cline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:MultilineStringOrLineComment(cline_info)
|
function! s:MultilineStringOrLineComment(cline_info) abort
|
||||||
let info = a:cline_info
|
let info = a:cline_info
|
||||||
|
|
||||||
" If we are in a multi-line string or line-comment, don't do anything to it.
|
" If we are in a multi-line string or line-comment, don't do anything to it.
|
||||||
@@ -367,7 +366,7 @@ function! s:MultilineStringOrLineComment(cline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ClosingHeredocDelimiter(cline_info)
|
function! s:ClosingHeredocDelimiter(cline_info) abort
|
||||||
let info = a:cline_info
|
let info = a:cline_info
|
||||||
|
|
||||||
" If we are at the closing delimiter of a "<<" heredoc-style string, set the
|
" If we are at the closing delimiter of a "<<" heredoc-style string, set the
|
||||||
@@ -381,7 +380,7 @@ function! s:ClosingHeredocDelimiter(cline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:LeadingOperator(cline_info)
|
function! s:LeadingOperator(cline_info) abort
|
||||||
" If the current line starts with a leading operator, add a level of indent.
|
" If the current line starts with a leading operator, add a level of indent.
|
||||||
if s:Match(a:cline_info.clnum, s:leading_operator_regex)
|
if s:Match(a:cline_info.clnum, s:leading_operator_regex)
|
||||||
return indent(s:GetMSL(a:cline_info.clnum)) + a:cline_info.sw
|
return indent(s:GetMSL(a:cline_info.clnum)) + a:cline_info.sw
|
||||||
@@ -389,7 +388,7 @@ function! s:LeadingOperator(cline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:EmptyInsideString(pline_info)
|
function! s:EmptyInsideString(pline_info) abort
|
||||||
" If the line is empty and inside a string (plnum would not be the real
|
" If the line is empty and inside a string (plnum would not be the real
|
||||||
" prevnonblank in that case), use the previous line's indent
|
" prevnonblank in that case), use the previous line's indent
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
@@ -400,7 +399,7 @@ function! s:EmptyInsideString(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:StartOfFile(pline_info)
|
function! s:StartOfFile(pline_info) abort
|
||||||
" At the start of the file use zero indent.
|
" At the start of the file use zero indent.
|
||||||
if a:pline_info.plnum == 0
|
if a:pline_info.plnum == 0
|
||||||
return 0
|
return 0
|
||||||
@@ -408,7 +407,7 @@ function! s:StartOfFile(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:AfterAccessModifier(pline_info)
|
function! s:AfterAccessModifier(pline_info) abort
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
|
|
||||||
if g:ruby_indent_access_modifier_style == 'indent'
|
if g:ruby_indent_access_modifier_style == 'indent'
|
||||||
@@ -434,7 +433,7 @@ endfunction
|
|||||||
" puts "foo"
|
" puts "foo"
|
||||||
" end
|
" end
|
||||||
"
|
"
|
||||||
function! s:ContinuedLine(pline_info)
|
function! s:ContinuedLine(pline_info) abort
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
|
|
||||||
let col = s:Match(info.plnum, s:ruby_indent_keywords)
|
let col = s:Match(info.plnum, s:ruby_indent_keywords)
|
||||||
@@ -456,7 +455,7 @@ function! s:ContinuedLine(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:AfterBlockOpening(pline_info)
|
function! s:AfterBlockOpening(pline_info) abort
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
|
|
||||||
" If the previous line ended with a block opening, add a level of indent.
|
" If the previous line ended with a block opening, add a level of indent.
|
||||||
@@ -482,7 +481,7 @@ function! s:AfterBlockOpening(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:AfterLeadingOperator(pline_info)
|
function! s:AfterLeadingOperator(pline_info) abort
|
||||||
" If the previous line started with a leading operator, use its MSL's level
|
" If the previous line started with a leading operator, use its MSL's level
|
||||||
" of indent
|
" of indent
|
||||||
if s:Match(a:pline_info.plnum, s:leading_operator_regex)
|
if s:Match(a:pline_info.plnum, s:leading_operator_regex)
|
||||||
@@ -491,7 +490,7 @@ function! s:AfterLeadingOperator(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:AfterHangingSplat(pline_info)
|
function! s:AfterHangingSplat(pline_info) abort
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
|
|
||||||
" If the previous line ended with the "*" of a splat, add a level of indent
|
" If the previous line ended with the "*" of a splat, add a level of indent
|
||||||
@@ -501,7 +500,7 @@ function! s:AfterHangingSplat(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:AfterUnbalancedBracket(pline_info)
|
function! s:AfterUnbalancedBracket(pline_info) abort
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
|
|
||||||
" If the previous line contained unclosed opening brackets and we are still
|
" If the previous line contained unclosed opening brackets and we are still
|
||||||
@@ -541,7 +540,7 @@ function! s:AfterUnbalancedBracket(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:AfterEndKeyword(pline_info)
|
function! s:AfterEndKeyword(pline_info) abort
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
" If the previous line ended with an "end", match that "end"s beginning's
|
" If the previous line ended with an "end", match that "end"s beginning's
|
||||||
" indent.
|
" indent.
|
||||||
@@ -562,7 +561,7 @@ function! s:AfterEndKeyword(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:AfterIndentKeyword(pline_info)
|
function! s:AfterIndentKeyword(pline_info) abort
|
||||||
let info = a:pline_info
|
let info = a:pline_info
|
||||||
let col = s:Match(info.plnum, s:ruby_indent_keywords)
|
let col = s:Match(info.plnum, s:ruby_indent_keywords)
|
||||||
|
|
||||||
@@ -589,7 +588,7 @@ function! s:AfterIndentKeyword(pline_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:PreviousNotMSL(msl_info)
|
function! s:PreviousNotMSL(msl_info) abort
|
||||||
let info = a:msl_info
|
let info = a:msl_info
|
||||||
|
|
||||||
" If the previous line wasn't a MSL
|
" If the previous line wasn't a MSL
|
||||||
@@ -608,7 +607,7 @@ function! s:PreviousNotMSL(msl_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:IndentingKeywordInMSL(msl_info)
|
function! s:IndentingKeywordInMSL(msl_info) abort
|
||||||
let info = a:msl_info
|
let info = a:msl_info
|
||||||
" If the MSL line had an indenting keyword in it, add a level of indent.
|
" If the MSL line had an indenting keyword in it, add a level of indent.
|
||||||
" TODO: this does not take into account contrived things such as
|
" TODO: this does not take into account contrived things such as
|
||||||
@@ -632,7 +631,7 @@ function! s:IndentingKeywordInMSL(msl_info)
|
|||||||
return -1
|
return -1
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ContinuedHangingOperator(msl_info)
|
function! s:ContinuedHangingOperator(msl_info) abort
|
||||||
let info = a:msl_info
|
let info = a:msl_info
|
||||||
|
|
||||||
" If the previous line ended with [*+/.,-=], but wasn't a block ending or a
|
" If the previous line ended with [*+/.,-=], but wasn't a block ending or a
|
||||||
@@ -652,32 +651,37 @@ endfunction
|
|||||||
" 4. Auxiliary Functions {{{1
|
" 4. Auxiliary Functions {{{1
|
||||||
" ======================
|
" ======================
|
||||||
|
|
||||||
|
function! s:IsInRubyGroup(groups, lnum, col) abort
|
||||||
|
let ids = map(copy(a:groups), 'hlID("ruby".v:val)')
|
||||||
|
return index(ids, synID(a:lnum, a:col, 1)) >= 0
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Check if the character at lnum:col is inside a string, comment, or is ascii.
|
" Check if the character at lnum:col is inside a string, comment, or is ascii.
|
||||||
function s:IsInStringOrComment(lnum, col)
|
function! s:IsInStringOrComment(lnum, col) abort
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_strcom
|
return s:IsInRubyGroup(s:syng_strcom, a:lnum, a:col)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Check if the character at lnum:col is inside a string.
|
" Check if the character at lnum:col is inside a string.
|
||||||
function s:IsInString(lnum, col)
|
function! s:IsInString(lnum, col) abort
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string
|
return s:IsInRubyGroup(s:syng_string, a:lnum, a:col)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Check if the character at lnum:col is inside a string or documentation.
|
" Check if the character at lnum:col is inside a string or documentation.
|
||||||
function s:IsInStringOrDocumentation(lnum, col)
|
function! s:IsInStringOrDocumentation(lnum, col) abort
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_stringdoc
|
return s:IsInRubyGroup(s:syng_stringdoc, a:lnum, a:col)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Check if the character at lnum:col is inside a string delimiter
|
" Check if the character at lnum:col is inside a string delimiter
|
||||||
function s:IsInStringDelimiter(lnum, col)
|
function! s:IsInStringDelimiter(lnum, col) abort
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') == 'rubyStringDelimiter'
|
return s:IsInRubyGroup(['StringDelimiter'], a:lnum, a:col)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:IsAssignment(str, pos)
|
function! s:IsAssignment(str, pos) abort
|
||||||
return strpart(a:str, 0, a:pos - 1) =~ '=\s*$'
|
return strpart(a:str, 0, a:pos - 1) =~ '=\s*$'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
|
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
|
||||||
function s:PrevNonBlankNonString(lnum)
|
function! s:PrevNonBlankNonString(lnum) abort
|
||||||
let in_block = 0
|
let in_block = 0
|
||||||
let lnum = prevnonblank(a:lnum)
|
let lnum = prevnonblank(a:lnum)
|
||||||
while lnum > 0
|
while lnum > 0
|
||||||
@@ -702,7 +706,7 @@ function s:PrevNonBlankNonString(lnum)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Find line above 'lnum' that started the continuation 'lnum' may be part of.
|
" Find line above 'lnum' that started the continuation 'lnum' may be part of.
|
||||||
function s:GetMSL(lnum)
|
function! s:GetMSL(lnum) abort
|
||||||
" Start on the line we're at and use its indent.
|
" Start on the line we're at and use its indent.
|
||||||
let msl = a:lnum
|
let msl = a:lnum
|
||||||
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
||||||
@@ -807,7 +811,7 @@ function s:GetMSL(lnum)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Check if line 'lnum' has more opening brackets than closing ones.
|
" Check if line 'lnum' has more opening brackets than closing ones.
|
||||||
function s:ExtraBrackets(lnum)
|
function! s:ExtraBrackets(lnum) abort
|
||||||
let opening = {'parentheses': [], 'braces': [], 'brackets': []}
|
let opening = {'parentheses': [], 'braces': [], 'brackets': []}
|
||||||
let closing = {'parentheses': [], 'braces': [], 'brackets': []}
|
let closing = {'parentheses': [], 'braces': [], 'brackets': []}
|
||||||
|
|
||||||
@@ -869,7 +873,7 @@ function s:ExtraBrackets(lnum)
|
|||||||
return [rightmost_opening, rightmost_closing]
|
return [rightmost_opening, rightmost_closing]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:Match(lnum, regex)
|
function! s:Match(lnum, regex) abort
|
||||||
let line = getline(a:lnum)
|
let line = getline(a:lnum)
|
||||||
let offset = match(line, '\C'.a:regex)
|
let offset = match(line, '\C'.a:regex)
|
||||||
let col = offset + 1
|
let col = offset + 1
|
||||||
@@ -889,7 +893,7 @@ endfunction
|
|||||||
" Locates the containing class/module's definition line, ignoring nested classes
|
" Locates the containing class/module's definition line, ignoring nested classes
|
||||||
" along the way.
|
" along the way.
|
||||||
"
|
"
|
||||||
function! s:FindContainingClass()
|
function! s:FindContainingClass() abort
|
||||||
let saved_position = getpos('.')
|
let saved_position = getpos('.')
|
||||||
|
|
||||||
while searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
|
while searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
|
||||||
|
|||||||
@@ -5,41 +5,64 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vue') == -1
|
|||||||
" Maintainer: Eduardo San Martin Morote
|
" Maintainer: Eduardo San Martin Morote
|
||||||
" Author: Adriaan Zonnenberg
|
" Author: Adriaan Zonnenberg
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists('b:did_indent')
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Load indent files for required languages
|
function! s:get_indentexpr(language)
|
||||||
for language in ['stylus', 'pug', 'css', 'javascript', 'html', 'coffee']
|
|
||||||
unlet! b:did_indent
|
unlet! b:did_indent
|
||||||
exe "runtime! indent/".language.".vim"
|
execute 'runtime! indent/' . a:language . '.vim'
|
||||||
exe "let s:".language."indent = &indentexpr"
|
return &indentexpr
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" The order is important here, tags without attributes go last.
|
||||||
|
" HTML is left out, it will be used when there is no match.
|
||||||
|
let s:languages = [
|
||||||
|
\ { 'name': 'pug', 'pairs': ['<template lang="pug"', '</template>'] },
|
||||||
|
\ { 'name': 'stylus', 'pairs': ['<style lang="stylus"', '</style>'] },
|
||||||
|
\ { 'name': 'css', 'pairs': ['<style', '</style>'] },
|
||||||
|
\ { 'name': 'coffee', 'pairs': ['<script lang="coffee"', '</script>'] },
|
||||||
|
\ { 'name': 'javascript', 'pairs': ['<script', '</script>'] },
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
for language in s:languages
|
||||||
|
" Set 'indentexpr' if the user has an indent file installed for the language
|
||||||
|
if strlen(globpath(&rtp, 'indent/'. language.name .'.vim'))
|
||||||
|
let language.indentexpr = s:get_indentexpr(language.name)
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
let s:html_indent = s:get_indentexpr('html')
|
||||||
|
|
||||||
let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
|
|
||||||
setlocal indentexpr=GetVueIndent()
|
setlocal indentexpr=GetVueIndent()
|
||||||
|
|
||||||
if exists("*GetVueIndent")
|
if exists('*GetVueIndent')
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! GetVueIndent()
|
function! GetVueIndent()
|
||||||
if searchpair('<template lang="pug"', '', '</template>', 'bWr')
|
for language in s:languages
|
||||||
exe "let indent = ".s:pugindent
|
let opening_tag_line = searchpair(language.pairs[0], '', language.pairs[1], 'bWr')
|
||||||
elseif searchpair('<style lang="stylus"', '', '</style>', 'bWr')
|
|
||||||
exe "let indent = ".s:stylusindent
|
if opening_tag_line
|
||||||
elseif searchpair('<style', '', '</style>', 'bWr')
|
execute 'let indent = ' . get(language, 'indentexpr', -1)
|
||||||
exe "let indent = ".s:cssindent
|
break
|
||||||
elseif searchpair('<script lang="coffee"', '', '</script>', 'bWr')
|
endif
|
||||||
exe "let indent = ".s:coffeeindent
|
endfor
|
||||||
elseif searchpair('<script', '', '</script>', 'bWr')
|
|
||||||
exe "let indent = ".s:javascriptindent
|
if exists('l:indent')
|
||||||
|
if (opening_tag_line == prevnonblank(v:lnum - 1) || opening_tag_line == v:lnum)
|
||||||
|
\ || getline(v:lnum) =~ '\v^\s*\</(script|style|template)'
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
exe "let indent = ".s:htmlindent
|
" Couldn't find language, fall back to html
|
||||||
|
execute 'let indent = ' . s:html_indent
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return indent > -1 ? indent : s:htmlindent
|
return indent
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
187
syntax/asciidoc.vim
Normal file
187
syntax/asciidoc.vim
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'asciidoc') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: AsciiDoc
|
||||||
|
" Author: Stuart Rackham <srackham@gmail.com> (inspired by Felix
|
||||||
|
" Obenhuber's original asciidoc.vim script).
|
||||||
|
" URL: http://asciidoc.org/
|
||||||
|
" Licence: GPL (http://www.gnu.org)
|
||||||
|
" Remarks: Vim 6 or greater
|
||||||
|
" Limitations:
|
||||||
|
"
|
||||||
|
" - Nested quoted text formatting is highlighted according to the outer
|
||||||
|
" format.
|
||||||
|
" - If a closing Example Block delimiter may be mistaken for a title
|
||||||
|
" underline. A workaround is to insert a blank line before the closing
|
||||||
|
" delimiter.
|
||||||
|
" - Lines within a paragraph starting with equals characters are
|
||||||
|
" highlighted as single-line titles.
|
||||||
|
" - Lines within a paragraph beginning with a period are highlighted as
|
||||||
|
" block titles.
|
||||||
|
|
||||||
|
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn clear
|
||||||
|
syn sync fromstart
|
||||||
|
syn sync linebreaks=100
|
||||||
|
|
||||||
|
" Run :help syn-priority to review syntax matching priority.
|
||||||
|
syn keyword asciidocToDo TODO FIXME CHECK TEST XXX ZZZ DEPRECATED
|
||||||
|
syn match asciidocBackslash /\\/
|
||||||
|
syn region asciidocIdMarker start=/^\$Id:\s/ end=/\s\$$/
|
||||||
|
syn match asciidocCallout /\\\@<!<\d\{1,2}>/
|
||||||
|
syn match asciidocOpenBlockDelimiter /^--$/
|
||||||
|
syn match asciidocLineBreak /[ \t]+$/ containedin=asciidocList
|
||||||
|
syn match asciidocRuler /^'\{3,}$/
|
||||||
|
syn match asciidocPagebreak /^<\{3,}$/
|
||||||
|
syn match asciidocEntityRef /\\\@<!&[#a-zA-Z]\S\{-};/
|
||||||
|
syn region asciidocLiteralParagraph start=/\(\%^\|\_^\s*\n\)\@<=\s\+\S\+/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocToDo
|
||||||
|
syn match asciidocURL /\\\@<!\<\(http\|https\|ftp\|file\|irc\):\/\/[^| \t]*\(\w\|\/\)/
|
||||||
|
syn match asciidocEmail /[\\.:]\@<!\(\<\|<\)\w\(\w\|[.-]\)*@\(\w\|[.-]\)*\w>\?[0-9A-Za-z_]\@!/
|
||||||
|
syn match asciidocAttributeRef /\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}/
|
||||||
|
|
||||||
|
" As a damage control measure quoted patterns always terminate at a blank
|
||||||
|
" line (see 'Limitations' above).
|
||||||
|
syn match asciidocQuotedAttributeList /\\\@<!\[[a-zA-Z0-9_-][a-zA-Z0-9 _-]*\][+_'`#*]\@=/
|
||||||
|
syn match asciidocQuotedSubscript /\\\@<!\~\S\_.\{-}\(\~\|\n\s*\n\)/ contains=asciidocEntityRef
|
||||||
|
syn match asciidocQuotedSuperscript /\\\@<!\^\S\_.\{-}\(\^\|\n\s*\n\)/ contains=asciidocEntityRef
|
||||||
|
|
||||||
|
syn match asciidocQuotedMonospaced /\(^\|[| \t([.,=\]]\)\@<=+\([+ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(+\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
||||||
|
syn match asciidocQuotedMonospaced2 /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(`\([| \t)[\],.?!;:=]\|$\)\@=\)/
|
||||||
|
syn match asciidocQuotedUnconstrainedMonospaced /[\\+]\@<!++\S\_.\{-}\(++\|\n\s*\n\)/ contains=asciidocEntityRef
|
||||||
|
|
||||||
|
syn match asciidocQuotedEmphasized /\(^\|[| \t([.,=\]]\)\@<=_\([_ \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(_\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
||||||
|
syn match asciidocQuotedEmphasized2 /\(^\|[| \t([.,=\]]\)\@<='\([' \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
||||||
|
syn match asciidocQuotedUnconstrainedEmphasized /\\\@<!__\S\_.\{-}\(__\|\n\s*\n\)/ contains=asciidocEntityRef
|
||||||
|
|
||||||
|
syn match asciidocQuotedBold /\(^\|[| \t([.,=\]]\)\@<=\*\([* \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(\*\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
||||||
|
syn match asciidocQuotedUnconstrainedBold /\\\@<!\*\*\S\_.\{-}\(\*\*\|\n\s*\n\)/ contains=asciidocEntityRef
|
||||||
|
|
||||||
|
" Don't allow ` in single quoted (a kludge to stop confusion with `monospaced`).
|
||||||
|
syn match asciidocQuotedSingleQuoted /\(^\|[| \t([.,=\]]\)\@<=`\([` \n\t]\)\@!\([^`]\|\n\(\s*\n\)\@!\)\{-}[^` \t]\('\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
||||||
|
|
||||||
|
syn match asciidocQuotedDoubleQuoted /\(^\|[| \t([.,=\]]\)\@<=``\([` \n\t]\)\@!\(.\|\n\(\s*\n\)\@!\)\{-}\S\(''\([| \t)[\],.?!;:=]\|$\)\@=\)/ contains=asciidocEntityRef
|
||||||
|
|
||||||
|
syn match asciidocDoubleDollarPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=\$\$..\{-}\(\$\$\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
|
||||||
|
syn match asciidocTriplePlusPassthrough /\\\@<!\(^\|[^0-9a-zA-Z$]\)\@<=+++..\{-}\(+++\([^0-9a-zA-Z$]\|$\)\@=\|^$\)/
|
||||||
|
|
||||||
|
syn match asciidocAdmonition /^\u\{3,15}:\(\s\+.*\)\@=/
|
||||||
|
|
||||||
|
syn region asciidocTable_OLD start=/^\([`.']\d*[-~_]*\)\+[-~_]\+\d*$/ end=/^$/
|
||||||
|
syn match asciidocBlockTitle /^\.[^. \t].*[^-~_]$/ contains=asciidocQuoted.*,asciidocAttributeRef
|
||||||
|
syn match asciidocTitleUnderline /[-=~^+]\{2,}$/ transparent contained contains=NONE
|
||||||
|
syn match asciidocOneLineTitle /^=\{1,5}\s\+\S.*$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash
|
||||||
|
syn match asciidocTwoLineTitle /^[^. +/].*[^.]\n[-=~^+]\{3,}$/ contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocTitleUnderline
|
||||||
|
|
||||||
|
syn match asciidocAttributeList /^\[[^[ \t].*\]$/
|
||||||
|
syn match asciidocQuoteBlockDelimiter /^_\{4,}$/
|
||||||
|
syn match asciidocExampleBlockDelimiter /^=\{4,}$/
|
||||||
|
syn match asciidocSidebarDelimiter /^*\{4,}$/
|
||||||
|
|
||||||
|
" See http://vimdoc.sourceforge.net/htmldoc/usr_44.html for excluding region
|
||||||
|
" contents from highlighting.
|
||||||
|
syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?|/ containedin=asciidocTableBlock contained
|
||||||
|
syn region asciidocTableBlock matchgroup=asciidocTableDelimiter start=/^|=\{3,}$/ end=/^|=\{3,}$/ keepend contains=ALL
|
||||||
|
syn match asciidocTablePrefix /\(\S\@<!\(\([0-9.]\+\)\([*+]\)\)\?\([<\^>.]\{,3}\)\?\([a-z]\)\?\)\?!/ containedin=asciidocTableBlock contained
|
||||||
|
syn region asciidocTableBlock2 matchgroup=asciidocTableDelimiter2 start=/^!=\{3,}$/ end=/^!=\{3,}$/ keepend contains=ALL
|
||||||
|
|
||||||
|
syn match asciidocListContinuation /^+$/
|
||||||
|
syn region asciidocLiteralBlock start=/^\.\{4,}$/ end=/^\.\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
|
||||||
|
syn region asciidocListingBlock start=/^-\{4,}$/ end=/^-\{4,}$/ contains=asciidocCallout,asciidocToDo keepend
|
||||||
|
syn region asciidocCommentBlock start="^/\{4,}$" end="^/\{4,}$" contains=asciidocToDo
|
||||||
|
syn region asciidocPassthroughBlock start="^+\{4,}$" end="^+\{4,}$"
|
||||||
|
|
||||||
|
" Allowing leading \w characters in the filter delimiter is to accomodate
|
||||||
|
" the pre version 8.2.7 syntax and may be removed in future releases.
|
||||||
|
syn region asciidocFilterBlock start=/^\w*\~\{4,}$/ end=/^\w*\~\{4,}$/
|
||||||
|
|
||||||
|
syn region asciidocMacroAttributes matchgroup=asciidocRefMacro start=/\\\@<!<<"\{-}\(\w\|-\|_\|:\|\.\)\+"\?,\?/ end=/\(>>\)\|^$/ contains=asciidocQuoted.* keepend
|
||||||
|
syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{2}\(\w\|-\|_\|:\|\.\)\+,\?/ end=/\]\{2}/ keepend
|
||||||
|
syn region asciidocMacroAttributes matchgroup=asciidocAnchorMacro start=/\\\@<!\[\{3}\(\w\|-\|_\|:\|\.\)\+/ end=/\]\{3}/ keepend
|
||||||
|
syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/[\\0-9a-zA-Z]\@<!\w\(\w\|-\)*:\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef,asciidocEntityRef keepend
|
||||||
|
" Highlight macro that starts with an attribute reference (a common idiom).
|
||||||
|
syn region asciidocMacroAttributes matchgroup=asciidocMacro start=/\(\\\@<!{\w\(\w\|[-,+]\)*\([=!@#$%?:].*\)\?}\)\@<=\S\{-}\[/ skip=/\\\]/ end=/\]\|^$/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
|
||||||
|
syn region asciidocMacroAttributes matchgroup=asciidocIndexTerm start=/\\\@<!(\{2,3}/ end=/)\{2,3}/ contains=asciidocQuoted.*,asciidocAttributeRef keepend
|
||||||
|
|
||||||
|
syn match asciidocCommentLine "^//\([^/].*\|\)$" contains=asciidocToDo
|
||||||
|
|
||||||
|
syn region asciidocAttributeEntry start=/^:\w/ end=/:\(\s\|$\)/ oneline
|
||||||
|
|
||||||
|
" Lists.
|
||||||
|
syn match asciidocListBullet /^\s*\zs\(-\|\*\{1,5}\)\ze\s/
|
||||||
|
syn match asciidocListNumber /^\s*\zs\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\ze\s\+/
|
||||||
|
syn region asciidocListLabel start=/^\s*/ end=/\(:\{2,4}\|;;\)$/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocToDo keepend
|
||||||
|
" DEPRECATED: Horizontal label.
|
||||||
|
syn region asciidocHLabel start=/^\s*/ end=/\(::\|;;\)\(\s\+\|\\$\)/ oneline contains=asciidocQuoted.*,asciidocMacroAttributes keepend
|
||||||
|
" Starts with any of the above.
|
||||||
|
syn region asciidocList start=/^\s*\(-\|\*\{1,5}\)\s/ start=/^\s*\(\(\d\+\.\)\|\.\{1,5}\|\(\a\.\)\|\([ivxIVX]\+)\)\)\s\+/ start=/.\+\(:\{2,4}\|;;\)$/ end=/\(^[=*]\{4,}$\)\@=/ end=/\(^\(+\|--\)\?\s*$\)\@=/ contains=asciidocList.\+,asciidocQuoted.*,asciidocMacroAttributes,asciidocAttributeRef,asciidocEntityRef,asciidocEmail,asciidocURL,asciidocBackslash,asciidocCommentLine,asciidocAttributeList,asciidocToDo
|
||||||
|
|
||||||
|
hi def link asciidocAdmonition Special
|
||||||
|
hi def link asciidocAnchorMacro Macro
|
||||||
|
hi def link asciidocAttributeEntry Special
|
||||||
|
hi def link asciidocAttributeList Special
|
||||||
|
hi def link asciidocAttributeMacro Macro
|
||||||
|
hi def link asciidocAttributeRef Special
|
||||||
|
hi def link asciidocBackslash Special
|
||||||
|
hi def link asciidocBlockTitle Title
|
||||||
|
hi def link asciidocCallout Label
|
||||||
|
hi def link asciidocCommentBlock Comment
|
||||||
|
hi def link asciidocCommentLine Comment
|
||||||
|
hi def link asciidocDoubleDollarPassthrough Special
|
||||||
|
hi def link asciidocEmail Macro
|
||||||
|
hi def link asciidocEntityRef Special
|
||||||
|
hi def link asciidocExampleBlockDelimiter Type
|
||||||
|
hi def link asciidocFilterBlock Type
|
||||||
|
hi def link asciidocHLabel Label
|
||||||
|
hi def link asciidocIdMarker Special
|
||||||
|
hi def link asciidocIndexTerm Macro
|
||||||
|
hi def link asciidocLineBreak Special
|
||||||
|
hi def link asciidocOpenBlockDelimiter Label
|
||||||
|
hi def link asciidocListBullet Label
|
||||||
|
hi def link asciidocListContinuation Label
|
||||||
|
hi def link asciidocListingBlock Identifier
|
||||||
|
hi def link asciidocListLabel Label
|
||||||
|
hi def link asciidocListNumber Label
|
||||||
|
hi def link asciidocLiteralBlock Identifier
|
||||||
|
hi def link asciidocLiteralParagraph Identifier
|
||||||
|
hi def link asciidocMacroAttributes Label
|
||||||
|
hi def link asciidocMacro Macro
|
||||||
|
hi def link asciidocOneLineTitle Title
|
||||||
|
hi def link asciidocPagebreak Type
|
||||||
|
hi def link asciidocPassthroughBlock Identifier
|
||||||
|
hi def link asciidocQuoteBlockDelimiter Type
|
||||||
|
hi def link asciidocQuotedAttributeList Special
|
||||||
|
hi def link asciidocQuotedBold Special
|
||||||
|
hi def link asciidocQuotedDoubleQuoted Label
|
||||||
|
hi def link asciidocQuotedEmphasized2 Type
|
||||||
|
hi def link asciidocQuotedEmphasized Type
|
||||||
|
hi def link asciidocQuotedMonospaced2 Identifier
|
||||||
|
hi def link asciidocQuotedMonospaced Identifier
|
||||||
|
hi def link asciidocQuotedSingleQuoted Label
|
||||||
|
hi def link asciidocQuotedSubscript Type
|
||||||
|
hi def link asciidocQuotedSuperscript Type
|
||||||
|
hi def link asciidocQuotedUnconstrainedBold Special
|
||||||
|
hi def link asciidocQuotedUnconstrainedEmphasized Type
|
||||||
|
hi def link asciidocQuotedUnconstrainedMonospaced Identifier
|
||||||
|
hi def link asciidocRefMacro Macro
|
||||||
|
hi def link asciidocRuler Type
|
||||||
|
hi def link asciidocSidebarDelimiter Type
|
||||||
|
hi def link asciidocTableBlock2 NONE
|
||||||
|
hi def link asciidocTableBlock NONE
|
||||||
|
hi def link asciidocTableDelimiter2 Label
|
||||||
|
hi def link asciidocTableDelimiter Label
|
||||||
|
hi def link asciidocTable_OLD Type
|
||||||
|
hi def link asciidocTablePrefix2 Label
|
||||||
|
hi def link asciidocTablePrefix Label
|
||||||
|
hi def link asciidocToDo Todo
|
||||||
|
hi def link asciidocTriplePlusPassthrough Special
|
||||||
|
hi def link asciidocTwoLineTitle Title
|
||||||
|
hi def link asciidocURL Macro
|
||||||
|
let b:current_syntax = "asciidoc"
|
||||||
|
|
||||||
|
" vim: wrap et sw=2 sts=2:
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'c/c++') == -1
|
|||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: C
|
" Language: C
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
" Last Change: 2016 Nov 17
|
" Last Change: 2016 Nov 18
|
||||||
|
|
||||||
" Quit when a (custom) syntax file was already loaded
|
" Quit when a (custom) syntax file was already loaded
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
@@ -365,7 +365,7 @@ syn match cPreConditMatch display "^\s*\zs\(%:\|#\)\s*\(else\|endif\)\>"
|
|||||||
if !exists("c_no_if0")
|
if !exists("c_no_if0")
|
||||||
syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
|
syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
|
||||||
syn region cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold
|
syn region cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold
|
||||||
syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\zs\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
|
syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
|
||||||
if !exists("c_no_if0_fold")
|
if !exists("c_no_if0_fold")
|
||||||
syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold
|
syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ end
|
|||||||
syn match crystalAliasDeclaration "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable nextgroup=crystalAliasDeclaration2 skipwhite
|
syn match crystalAliasDeclaration "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable nextgroup=crystalAliasDeclaration2 skipwhite
|
||||||
syn match crystalAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable
|
syn match crystalAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable
|
||||||
syn match crystalMethodDeclaration "[^[:space:];#(]\+" contained contains=crystalConstant,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable
|
syn match crystalMethodDeclaration "[^[:space:];#(]\+" contained contains=crystalConstant,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable
|
||||||
syn match crystalFunctionDeclaration "[^[:space:];#=]\+" contained contains=crystalConstant
|
syn match crystalFunctionDeclaration "[^[:space:];#(=]\+" contained contains=crystalConstant
|
||||||
syn match crystalTypeDeclaration "[^[:space:];#=]\+" contained contains=crystalConstant
|
syn match crystalTypeDeclaration "[^[:space:];#=]\+" contained contains=crystalConstant
|
||||||
syn match crystalClassDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
|
syn match crystalClassDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
|
||||||
syn match crystalModuleDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
|
syn match crystalModuleDeclaration "[^[:space:];#<]\+" contained contains=crystalConstant,crystalOperator
|
||||||
|
|||||||
@@ -28,15 +28,15 @@ syn region glslPreProc start="^\s*#\s*\(error\|pragma\|extension\|versi
|
|||||||
syn keyword glslBoolean true false
|
syn keyword glslBoolean true false
|
||||||
|
|
||||||
" Integer Numbers
|
" Integer Numbers
|
||||||
syn match glslDecimalInt display "\(0\|[1-9]\d*\)"
|
syn match glslDecimalInt display "\(0\|[1-9]\d*\)[uU]\?"
|
||||||
syn match glslOctalInt display "0\o\+"
|
syn match glslOctalInt display "0\o\+[uU]\?"
|
||||||
syn match glslHexInt display "0[xX]\x\+"
|
syn match glslHexInt display "0[xX]\x\+[uU]\?"
|
||||||
|
|
||||||
" Float Numbers
|
" Float Numbers
|
||||||
syn match glslFloat display "\d\+\.\([eE][+-]\=\d\+\)\="
|
syn match glslFloat display "\d\+\.\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\="
|
||||||
syn match glslFloat display "\.\d\+\([eE][+-]\=\d\+\)\="
|
syn match glslFloat display "\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\="
|
||||||
syn match glslFloat display "\d\+[eE][+-]\=\d\+"
|
syn match glslFloat display "\d\+[eE][+-]\=\d\+\(lf\|LF\|f\|F\)\="
|
||||||
syn match glslFloat display "\d\+\.\d\+\([eE][+-]\=\d\+\)\="
|
syn match glslFloat display "\d\+\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\="
|
||||||
|
|
||||||
" Swizzles
|
" Swizzles
|
||||||
syn match glslSwizzle display /\.[xyzw]\{1,4\}\>/
|
syn match glslSwizzle display /\.[xyzw]\{1,4\}\>/
|
||||||
|
|||||||
@@ -76,8 +76,8 @@ hi def link goTplVariable Special
|
|||||||
|
|
||||||
syn region gotplAction start="{{" end="}}" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable,goTplIdentifier display
|
syn region gotplAction start="{{" end="}}" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable,goTplIdentifier display
|
||||||
syn region gotplAction start="\[\[" end="\]\]" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable display
|
syn region gotplAction start="\[\[" end="\]\]" contains=@gotplLiteral,gotplControl,gotplFunctions,gotplVariable display
|
||||||
syn region goTplComment start="{{/\*" end="\*/}}" display
|
syn region goTplComment start="{{\(- \)\?/\*" end="\*/\( -\)\?}}" display
|
||||||
syn region goTplComment start="\[\[/\*" end="\*/\]\]" display
|
syn region goTplComment start="\[\[\(- \)\?/\*" end="\*/\( -\)\?\]\]" display
|
||||||
|
|
||||||
hi def link gotplAction PreProc
|
hi def link gotplAction PreProc
|
||||||
hi def link goTplComment Comment
|
hi def link goTplComment Comment
|
||||||
|
|||||||
64
syntax/graphql.vim
Normal file
64
syntax/graphql.vim
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'graphql') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: GraphQL
|
||||||
|
" Maintainer: Jon Parise <jon@indelible.org>
|
||||||
|
|
||||||
|
if exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn match graphqlComment "#.*$" contains=@Spell
|
||||||
|
|
||||||
|
syn match graphqlOperator "="
|
||||||
|
syn match graphqlOperator "!"
|
||||||
|
syn match graphqlOperator "|"
|
||||||
|
syn match graphqlOperator "\M..."
|
||||||
|
|
||||||
|
syn keyword graphqlBoolean true false
|
||||||
|
syn keyword graphqlNull null
|
||||||
|
syn match graphqlNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>"
|
||||||
|
syn region graphqlString start=+"+ skip=+\\\\\|\\"+ end=+"\|$+
|
||||||
|
|
||||||
|
syn keyword graphqlStructure enum scalar type union nextgroup=graphqlType skipwhite
|
||||||
|
syn keyword graphqlStructure input interface subscription nextgroup=graphqlType skipwhite
|
||||||
|
syn keyword graphqlStructure implements on nextgroup=graphqlType skipwhite
|
||||||
|
syn keyword graphqlStructure query mutation fragment nextgroup=graphqlIdentifier skipwhite
|
||||||
|
syn keyword graphqlStructure directive nextgroup=graphqlDirective skipwhite
|
||||||
|
syn keyword graphqlStructure extend nextgroup=graphqlStructure skipwhite
|
||||||
|
|
||||||
|
syn match graphqlDirective "\<@\h\w*\>" display
|
||||||
|
syn match graphqlVariable "\<\$\h\w*\>" display
|
||||||
|
|
||||||
|
syn match graphqlIdentifier "\<\h\w*\>" display contained
|
||||||
|
syn match graphqlType "\<_*\u\w*\>" display contained
|
||||||
|
syn match graphqlConstant "\<[A-Z_]\+\>" display contained
|
||||||
|
|
||||||
|
syn keyword graphqlMetaFields __schema __type __typename
|
||||||
|
|
||||||
|
syn region graphqlFold matchgroup=graphqlBraces start="{" end=/}\(\_s\+\ze\("\|{\)\)\@!/ transparent fold contains=ALLBUT,graphqlStructure
|
||||||
|
syn region graphqlList matchgroup=graphqlBraces start="\[" end=/]\(\_s\+\ze"\)\@!/ transparent contains=ALLBUT,graphqlDirective,graphqlStructure
|
||||||
|
|
||||||
|
hi def link graphqlComment Comment
|
||||||
|
hi def link graphqlOperator Operator
|
||||||
|
|
||||||
|
hi def link graphqlBraces Delimiter
|
||||||
|
|
||||||
|
hi def link graphqlBoolean Boolean
|
||||||
|
hi def link graphqlNull Keyword
|
||||||
|
hi def link graphqlNumber Number
|
||||||
|
hi def link graphqlString String
|
||||||
|
|
||||||
|
hi def link graphqlConstant Constant
|
||||||
|
hi def link graphqlDirective PreProc
|
||||||
|
hi def link graphqlIdentifier Identifier
|
||||||
|
hi def link graphqlMetaFields Special
|
||||||
|
hi def link graphqlStructure Structure
|
||||||
|
hi def link graphqlType Type
|
||||||
|
hi def link graphqlVariable Identifier
|
||||||
|
|
||||||
|
syn sync minlines=500
|
||||||
|
|
||||||
|
let b:current_syntax = "graphql"
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -13,11 +13,7 @@ elseif exists("b:current_syntax")
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists('g:haskell_disable_TH')
|
if get(g:, 'haskell_backpack', 0)
|
||||||
let g:haskell_disable_TH = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exists('g:haskell_backpack') && g:haskell_backpack == 1
|
|
||||||
syn keyword haskellBackpackStructure unit signature
|
syn keyword haskellBackpackStructure unit signature
|
||||||
syn keyword haskellBackpackDependency dependency
|
syn keyword haskellBackpackDependency dependency
|
||||||
endif
|
endif
|
||||||
@@ -63,7 +59,7 @@ syn match haskellImport "^\s*\<import\>\s\+\(\<safe\>\s\+\)\?\(\<qualified\>\s\+
|
|||||||
\ haskellBlockComment,
|
\ haskellBlockComment,
|
||||||
\ haskellPragma
|
\ haskellPragma
|
||||||
syn keyword haskellKeyword do case of
|
syn keyword haskellKeyword do case of
|
||||||
if exists('g:haskell_enable_static_pointers') && g:haskell_enable_static_pointers == 1
|
if get(g:, 'haskell_enable_static_pointers', 0)
|
||||||
syn keyword haskellStatic static
|
syn keyword haskellStatic static
|
||||||
endif
|
endif
|
||||||
syn keyword haskellConditional if then else
|
syn keyword haskellConditional if then else
|
||||||
@@ -107,29 +103,29 @@ syn match haskellPreProc "^#.*$"
|
|||||||
syn keyword haskellTodo TODO FIXME contained
|
syn keyword haskellTodo TODO FIXME contained
|
||||||
" Treat a shebang line at the start of the file as a comment
|
" Treat a shebang line at the start of the file as a comment
|
||||||
syn match haskellShebang "\%^#!.*$"
|
syn match haskellShebang "\%^#!.*$"
|
||||||
if exists('g:haskell_disable_TH') && g:haskell_disable_TH == 0
|
if !get(g:, 'haskell_disable_TH', 0)
|
||||||
syn match haskellQuasiQuoted "." containedin=haskellQuasiQuote contained
|
syn match haskellQuasiQuoted "." containedin=haskellQuasiQuote contained
|
||||||
syn region haskellQuasiQuote matchgroup=haskellTH start="\[[_a-zA-Z][a-zA-z0-9._']*|" end="|\]"
|
syn region haskellQuasiQuote matchgroup=haskellTH start="\[[_a-zA-Z][a-zA-z0-9._']*|" end="|\]"
|
||||||
syn region haskellTHBlock matchgroup=haskellTH start="\[\(d\|t\|p\)\?|" end="|]" contains=TOP
|
syn region haskellTHBlock matchgroup=haskellTH start="\[\(d\|t\|p\)\?|" end="|]" contains=TOP
|
||||||
syn region haskellTHDoubleBlock matchgroup=haskellTH start="\[||" end="||]" contains=TOP
|
syn region haskellTHDoubleBlock matchgroup=haskellTH start="\[||" end="||]" contains=TOP
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_typeroles') && g:haskell_enable_typeroles == 1
|
if get(g:, 'haskell_enable_typeroles', 0)
|
||||||
syn keyword haskellTypeRoles phantom representational nominal contained
|
syn keyword haskellTypeRoles phantom representational nominal contained
|
||||||
syn region haskellTypeRoleBlock matchgroup=haskellTypeRoles start="type\s\+role" end="$" keepend
|
syn region haskellTypeRoleBlock matchgroup=haskellTypeRoles start="type\s\+role" end="$" keepend
|
||||||
\ contains=
|
\ contains=
|
||||||
\ haskellType,
|
\ haskellType,
|
||||||
\ haskellTypeRoles
|
\ haskellTypeRoles
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_quantification') && g:haskell_enable_quantification == 1
|
if get(g:, 'haskell_enable_quantification', 0)
|
||||||
syn keyword haskellForall forall
|
syn keyword haskellForall forall
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_recursivedo') && g:haskell_enable_recursivedo == 1
|
if get(g:, 'haskell_enable_recursivedo', 0)
|
||||||
syn keyword haskellRecursiveDo mdo rec
|
syn keyword haskellRecursiveDo mdo rec
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_arrowsyntax') && g:haskell_enable_arrowsyntax == 1
|
if get(g:, 'haskell_enable_arrowsyntax', 0)
|
||||||
syn keyword haskellArrowSyntax proc
|
syn keyword haskellArrowSyntax proc
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_pattern_synonyms') && g:haskell_enable_pattern_synonyms == 1
|
if get(g:, 'haskell_enable_pattern_synonyms', 0)
|
||||||
syn keyword haskellPatternKeyword pattern
|
syn keyword haskellPatternKeyword pattern
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -161,7 +157,7 @@ highlight def link haskellAssocType Type
|
|||||||
highlight def link haskellQuotedType Type
|
highlight def link haskellQuotedType Type
|
||||||
highlight def link haskellType Type
|
highlight def link haskellType Type
|
||||||
highlight def link haskellImportKeywords Include
|
highlight def link haskellImportKeywords Include
|
||||||
if exists('g:haskell_classic_highlighting') && g:haskell_classic_highlighting == 1
|
if get(g:, 'haskell_classic_highlighting', 0)
|
||||||
highlight def link haskellDeclKeyword Keyword
|
highlight def link haskellDeclKeyword Keyword
|
||||||
highlight def link haskellDecl Keyword
|
highlight def link haskellDecl Keyword
|
||||||
highlight def link haskellWhere Keyword
|
highlight def link haskellWhere Keyword
|
||||||
@@ -173,35 +169,35 @@ else
|
|||||||
highlight def link haskellLet Structure
|
highlight def link haskellLet Structure
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists('g:haskell_enable_quantification') && g:haskell_enable_quantification == 1
|
if get(g:, 'haskell_enable_quantification', 0)
|
||||||
highlight def link haskellForall Operator
|
highlight def link haskellForall Operator
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_recursivedo') && g:haskell_enable_recursivedo == 1
|
if get(g:, 'haskell_enable_recursivedo', 0)
|
||||||
highlight def link haskellRecursiveDo Keyword
|
highlight def link haskellRecursiveDo Keyword
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_arrowsyntax') && g:haskell_enable_arrowsyntax == 1
|
if get(g:, 'haskell_enable_arrowsyntax', 0)
|
||||||
highlight def link haskellArrowSyntax Keyword
|
highlight def link haskellArrowSyntax Keyword
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_static_pointers') && g:haskell_enable_static_pointers == 1
|
if get(g:, 'haskell_enable_static_pointers', 0)
|
||||||
highlight def link haskellStatic Keyword
|
highlight def link haskellStatic Keyword
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_classic_highlighting') && g:haskell_classic_highlighting == 1
|
if get(g:, 'haskell_classic_highlighting', 0)
|
||||||
if exists('g:haskell_enable_pattern_synonyms') && g:haskell_enable_pattern_synonyms == 1
|
if get(g:, 'haskell_enable_pattern_synonyms', 0)
|
||||||
highlight def link haskellPatternKeyword Keyword
|
highlight def link haskellPatternKeyword Keyword
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_typeroles') && g:haskell_enable_typeroles == 1
|
if get(g:, 'haskell_enable_typeroles', 0)
|
||||||
highlight def link haskellTypeRoles Keyword
|
highlight def link haskellTypeRoles Keyword
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if exists('g:haskell_enable_pattern_synonyms') && g:haskell_enable_pattern_synonyms == 1
|
if get(g:, 'haskell_enable_pattern_synonyms', 0)
|
||||||
highlight def link haskellPatternKeyword Structure
|
highlight def link haskellPatternKeyword Structure
|
||||||
endif
|
endif
|
||||||
if exists('g:haskell_enable_typeroles') && g:haskell_enable_typeroles == 1
|
if get(g:, 'haskell_enable_typeroles', 0)
|
||||||
highlight def link haskellTypeRoles Structure
|
highlight def link haskellTypeRoles Structure
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists('g:haskell_backpack') && g:haskell_backpack == 1
|
if get(g:, 'haskell_backpack', 0)
|
||||||
highlight def link haskellBackpackStructure Structure
|
highlight def link haskellBackpackStructure Structure
|
||||||
highlight def link haskellBackpackDependency Include
|
highlight def link haskellBackpackDependency Include
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -121,9 +121,11 @@ syn keyword htmlArg contained download media
|
|||||||
syn keyword htmlArg contained nonce
|
syn keyword htmlArg contained nonce
|
||||||
" <area>, <a>, <img>, <iframe>, <link>
|
" <area>, <a>, <img>, <iframe>, <link>
|
||||||
syn keyword htmlArg contained referrerpolicy
|
syn keyword htmlArg contained referrerpolicy
|
||||||
" <script>
|
|
||||||
" https://w3c.github.io/webappsec-subresource-integrity/#the-integrity-attribute
|
" https://w3c.github.io/webappsec-subresource-integrity/#the-integrity-attribute
|
||||||
syn keyword htmlArg contained integrity crossorigin
|
syn keyword htmlArg contained integrity crossorigin
|
||||||
|
" <link>
|
||||||
|
syn keyword htmlArg contained prefetch
|
||||||
|
" syn keyword htmlArg contained preload
|
||||||
|
|
||||||
" Custom Data Attributes
|
" Custom Data Attributes
|
||||||
" http://w3c.github.io/html/single-page.html#embedding-custom-non-visible-data-with-the-data-attributes
|
" http://w3c.github.io/html/single-page.html#embedding-custom-non-visible-data-with-the-data-attributes
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ syntax sync fromstart
|
|||||||
syntax case match
|
syntax case match
|
||||||
|
|
||||||
syntax match jsNoise /[:,\;]\{1}/
|
syntax match jsNoise /[:,\;]\{1}/
|
||||||
syntax match jsNoise /[\.]\{1}/ skipwhite skipempty nextgroup=jsObjectProp,jsFuncCall
|
syntax match jsNoise /[\.]\{1}/ skipwhite skipempty nextgroup=jsObjectProp,jsFuncCall,jsPrototype
|
||||||
syntax match jsObjectProp contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/
|
syntax match jsObjectProp contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/
|
||||||
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
|
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
|
||||||
syntax match jsParensError /[)}\]]/
|
syntax match jsParensError /[)}\]]/
|
||||||
@@ -239,8 +239,8 @@ if exists("javascript_plugin_flow")
|
|||||||
runtime extras/flow.vim
|
runtime extras/flow.vim
|
||||||
endif
|
endif
|
||||||
|
|
||||||
syntax cluster jsExpression contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo
|
syntax cluster jsExpression contains=jsBracket,jsParen,jsObject,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper,jsDo,jsForAwait
|
||||||
syntax cluster jsAll contains=@jsExpression,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword,jsNoise,,jsBlockLabel
|
syntax cluster jsAll contains=@jsExpression,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword,jsNoise,jsBlockLabel
|
||||||
|
|
||||||
" Define the default highlighting.
|
" Define the default highlighting.
|
||||||
" For version 5.7 and earlier: only when not done already
|
" For version 5.7 and earlier: only when not done already
|
||||||
@@ -384,7 +384,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Define the htmlJavaScript for HTML syntax html.vim
|
" Define the htmlJavaScript for HTML syntax html.vim
|
||||||
syntax cluster htmlJavaScript contains=@jsAll
|
syntax cluster htmlJavaScript contains=@jsAll,jsImport,jsExport
|
||||||
syntax cluster javaScriptExpression contains=@jsAll
|
syntax cluster javaScriptExpression contains=@jsAll
|
||||||
|
|
||||||
" Vim's default html.vim highlights all javascript as 'Special'
|
" Vim's default html.vim highlights all javascript as 'Special'
|
||||||
|
|||||||
@@ -1,706 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Vim syntax file
|
|
||||||
" Language: nginx.conf
|
|
||||||
|
|
||||||
if exists("b:current_syntax")
|
|
||||||
finish
|
|
||||||
end
|
|
||||||
|
|
||||||
" Patch 7.4.1142
|
|
||||||
if has("patch-7.4-1142")
|
|
||||||
if has("win32")
|
|
||||||
syn iskeyword @,48-57,_,128-167,224-235,.,/,:
|
|
||||||
else
|
|
||||||
syn iskeyword @,48-57,_,192-255,.,/,:
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
syn match ngxVariable '\$\(\w\+\|{\w\+}\)'
|
|
||||||
syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
|
|
||||||
syn match ngxComment ' *#.*$'
|
|
||||||
syn match ngxLocationPath /\S\+/ contained
|
|
||||||
syn region ngxString start=+[^:a-zA-Z>!\\@]\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
|
|
||||||
|
|
||||||
syn keyword ngxBoolean on
|
|
||||||
syn keyword ngxBoolean off
|
|
||||||
|
|
||||||
|
|
||||||
syn keyword ngxDirectiveBlock http
|
|
||||||
syn keyword ngxDirectiveBlock mail
|
|
||||||
syn keyword ngxDirectiveBlock events
|
|
||||||
syn keyword ngxDirectiveBlock server
|
|
||||||
syn keyword ngxDirectiveBlock stream
|
|
||||||
syn keyword ngxDirectiveBlock types
|
|
||||||
syn match ngxLocationOperator /\(=\|\~\*\|\^\~\|\~\)/ contained nextgroup=ngxLocationPath,ngxString skipwhite skipempty
|
|
||||||
syn match ngxLocationNamedLoc /@\w\+/
|
|
||||||
syn keyword ngxDirectiveBlock location nextgroup=ngxLocationNamedLoc,ngxLocationOperator,ngxLocationPath,ngxString skipwhite skipempty
|
|
||||||
syn keyword ngxDirectiveBlock upstream
|
|
||||||
syn keyword ngxDirectiveBlock charset_map
|
|
||||||
syn keyword ngxDirectiveBlock limit_except
|
|
||||||
syn keyword ngxDirectiveBlock if
|
|
||||||
syn keyword ngxDirectiveBlock geo
|
|
||||||
syn keyword ngxDirectiveBlock map
|
|
||||||
syn keyword ngxDirectiveBlock split_clients
|
|
||||||
|
|
||||||
syn keyword ngxDirectiveImportant include
|
|
||||||
syn keyword ngxDirectiveImportant root
|
|
||||||
syn keyword ngxDirectiveImportant server
|
|
||||||
syn keyword ngxDirectiveImportant server_name
|
|
||||||
syn keyword ngxDirectiveImportant listen contained
|
|
||||||
syn region ngxDirectiveImportantListen matchgroup=ngxDirectiveImportant start=+listen+ skip=+\\\\\|\\\;+ end=+;+he=e-1 contains=ngxListenOptions,ngxString
|
|
||||||
syn keyword ngxDirectiveImportant internal
|
|
||||||
syn keyword ngxDirectiveImportant proxy_pass
|
|
||||||
syn keyword ngxDirectiveImportant memcached_pass
|
|
||||||
syn keyword ngxDirectiveImportant fastcgi_pass
|
|
||||||
syn keyword ngxDirectiveImportant scgi_pass
|
|
||||||
syn keyword ngxDirectiveImportant uwsgi_pass
|
|
||||||
syn keyword ngxDirectiveImportant try_files
|
|
||||||
|
|
||||||
syn keyword ngxListenOptions default_server contained
|
|
||||||
syn keyword ngxListenOptions ssl contained
|
|
||||||
syn keyword ngxListenOptions http2 contained
|
|
||||||
syn keyword ngxListenOptions spdy contained
|
|
||||||
syn keyword ngxListenOptions proxy_protocol contained
|
|
||||||
syn keyword ngxListenOptions setfib contained
|
|
||||||
syn keyword ngxListenOptions fastopen contained
|
|
||||||
syn keyword ngxListenOptions backlog contained
|
|
||||||
syn keyword ngxListenOptions rcvbuf contained
|
|
||||||
syn keyword ngxListenOptions sndbuf contained
|
|
||||||
syn keyword ngxListenOptions accept_filter contained
|
|
||||||
syn keyword ngxListenOptions deferred contained
|
|
||||||
syn keyword ngxListenOptions bind contained
|
|
||||||
syn keyword ngxListenOptions ipv6only contained
|
|
||||||
syn keyword ngxListenOptions reuseport contained
|
|
||||||
syn keyword ngxListenOptions so_keepalive contained
|
|
||||||
syn keyword ngxListenOptions keepidle contained
|
|
||||||
|
|
||||||
syn keyword ngxDirectiveControl break
|
|
||||||
syn keyword ngxDirectiveControl return nextgroup=ngxStatusCode skipwhite skipempty
|
|
||||||
syn keyword ngxDirectiveControl rewrite nextgroup=ngxRewriteURI skipwhite skipempty
|
|
||||||
syn keyword ngxDirectiveControl set
|
|
||||||
|
|
||||||
syn match ngxStatusCode /\d\d\d/ contained
|
|
||||||
syn match ngxStatusCodes /\d\d\d/ contained contains=ngxStatusCode nextgroup=ngxStatusCode skipwhite skipempty
|
|
||||||
|
|
||||||
syn match ngxRewriteURI /\S\+/ contained contains=ngxVariableString nextgroup=ngxRewritedURI skipwhite skipempty
|
|
||||||
syn region ngxRewriteURI start=+[^:a-zA-Z>!\\@]\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString nextgroup=ngxRewritedURI skipwhite skipempty
|
|
||||||
syn match ngxRewritedURI /\S\+/ contained contains=ngxVariableString nextgroup=ngxRewriteFlag skipwhite skipempty
|
|
||||||
syn region ngxRewritedURI start=+[^:a-zA-Z>!\\@]\z(["']\)+lc=1 end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString nextgroup=ngxRewriteFlag skipwhite skipempty
|
|
||||||
|
|
||||||
syn keyword ngxRewriteFlag last contained
|
|
||||||
syn keyword ngxRewriteFlag break contained
|
|
||||||
syn keyword ngxRewriteFlag redirect contained
|
|
||||||
syn keyword ngxRewriteFlag permanent contained
|
|
||||||
|
|
||||||
syn keyword ngxDirectiveError error_page nextgroup=ngxErrorStatusCode skipwhite skipempty
|
|
||||||
syn keyword ngxDirectiveError post_action
|
|
||||||
|
|
||||||
syn match ngxErrorStatusCode /\d\d\d/ contained contains=ngxStatusCode nextgroup=ngxErrorResponseCode skipwhite skipempty
|
|
||||||
syn match ngxErrorResponseCode /=\d\d\d/ contained contains=ngxStatusCode
|
|
||||||
|
|
||||||
syn keyword ngxDirectiveDeprecated connections
|
|
||||||
syn keyword ngxDirectiveDeprecated imap
|
|
||||||
syn keyword ngxDirectiveDeprecated limit_zone
|
|
||||||
syn keyword ngxDirectiveDeprecated mysql_test
|
|
||||||
syn keyword ngxDirectiveDeprecated open_file_cache_retest
|
|
||||||
syn keyword ngxDirectiveDeprecated optimize_server_names
|
|
||||||
syn keyword ngxDirectiveDeprecated satisfy_any
|
|
||||||
syn keyword ngxDirectiveDeprecated so_keepalive
|
|
||||||
|
|
||||||
syn keyword ngxDirective absolute_redirect
|
|
||||||
syn keyword ngxDirective accept_mutex
|
|
||||||
syn keyword ngxDirective accept_mutex_delay
|
|
||||||
syn keyword ngxDirective acceptex_read
|
|
||||||
syn keyword ngxDirective access_log
|
|
||||||
syn keyword ngxDirective add_after_body
|
|
||||||
syn keyword ngxDirective add_before_body
|
|
||||||
syn keyword ngxDirective add_header
|
|
||||||
syn keyword ngxDirective addition_types
|
|
||||||
syn keyword ngxDirective aio
|
|
||||||
syn keyword ngxDirective aio_write
|
|
||||||
syn keyword ngxDirective alias
|
|
||||||
syn keyword ngxDirective allow
|
|
||||||
syn keyword ngxDirective ancient_browser
|
|
||||||
syn keyword ngxDirective ancient_browser_value
|
|
||||||
syn keyword ngxDirective auth_basic
|
|
||||||
syn keyword ngxDirective auth_basic_user_file
|
|
||||||
syn keyword ngxDirective auth_http
|
|
||||||
syn keyword ngxDirective auth_http_header
|
|
||||||
syn keyword ngxDirective auth_http_pass_client_cert
|
|
||||||
syn keyword ngxDirective auth_http_timeout
|
|
||||||
syn keyword ngxDirective auth_jwt
|
|
||||||
syn keyword ngxDirective auth_jwt_key_file
|
|
||||||
syn keyword ngxDirective auth_request
|
|
||||||
syn keyword ngxDirective auth_request_set
|
|
||||||
syn keyword ngxDirective autoindex
|
|
||||||
syn keyword ngxDirective autoindex_exact_size
|
|
||||||
syn keyword ngxDirective autoindex_format
|
|
||||||
syn keyword ngxDirective autoindex_localtime
|
|
||||||
syn keyword ngxDirective charset
|
|
||||||
syn keyword ngxDirective charset_map
|
|
||||||
syn keyword ngxDirective charset_types
|
|
||||||
syn keyword ngxDirective chunked_transfer_encoding
|
|
||||||
syn keyword ngxDirective client_body_buffer_size
|
|
||||||
syn keyword ngxDirective client_body_in_file_only
|
|
||||||
syn keyword ngxDirective client_body_in_single_buffer
|
|
||||||
syn keyword ngxDirective client_body_temp_path
|
|
||||||
syn keyword ngxDirective client_body_timeout
|
|
||||||
syn keyword ngxDirective client_header_buffer_size
|
|
||||||
syn keyword ngxDirective client_header_timeout
|
|
||||||
syn keyword ngxDirective client_max_body_size
|
|
||||||
syn keyword ngxDirective connection_pool_size
|
|
||||||
syn keyword ngxDirective create_full_put_path
|
|
||||||
syn keyword ngxDirective daemon
|
|
||||||
syn keyword ngxDirective dav_access
|
|
||||||
syn keyword ngxDirective dav_methods
|
|
||||||
syn keyword ngxDirective debug_connection
|
|
||||||
syn keyword ngxDirective debug_points
|
|
||||||
syn keyword ngxDirective default_type
|
|
||||||
syn keyword ngxDirective degradation
|
|
||||||
syn keyword ngxDirective degrade
|
|
||||||
syn keyword ngxDirective deny
|
|
||||||
syn keyword ngxDirective devpoll_changes
|
|
||||||
syn keyword ngxDirective devpoll_events
|
|
||||||
syn keyword ngxDirective directio
|
|
||||||
syn keyword ngxDirective directio_alignment
|
|
||||||
syn keyword ngxDirective disable_symlinks
|
|
||||||
syn keyword ngxDirective empty_gif
|
|
||||||
syn keyword ngxDirective env
|
|
||||||
syn keyword ngxDirective epoll_events
|
|
||||||
syn keyword ngxDirective error_log
|
|
||||||
syn keyword ngxDirective etag
|
|
||||||
syn keyword ngxDirective eventport_events
|
|
||||||
syn keyword ngxDirective expires
|
|
||||||
syn keyword ngxDirective f4f
|
|
||||||
syn keyword ngxDirective f4f_buffer_size
|
|
||||||
syn keyword ngxDirective fastcgi_bind
|
|
||||||
syn keyword ngxDirective fastcgi_buffer_size
|
|
||||||
syn keyword ngxDirective fastcgi_buffering
|
|
||||||
syn keyword ngxDirective fastcgi_buffers
|
|
||||||
syn keyword ngxDirective fastcgi_busy_buffers_size
|
|
||||||
syn keyword ngxDirective fastcgi_cache
|
|
||||||
syn keyword ngxDirective fastcgi_cache_bypass
|
|
||||||
syn keyword ngxDirective fastcgi_cache_key
|
|
||||||
syn keyword ngxDirective fastcgi_cache_lock
|
|
||||||
syn keyword ngxDirective fastcgi_cache_lock_age
|
|
||||||
syn keyword ngxDirective fastcgi_cache_lock_timeout
|
|
||||||
syn keyword ngxDirective fastcgi_cache_max_range_offset
|
|
||||||
syn keyword ngxDirective fastcgi_cache_methods
|
|
||||||
syn keyword ngxDirective fastcgi_cache_min_uses
|
|
||||||
syn keyword ngxDirective fastcgi_cache_path
|
|
||||||
syn keyword ngxDirective fastcgi_cache_purge
|
|
||||||
syn keyword ngxDirective fastcgi_cache_revalidate
|
|
||||||
syn keyword ngxDirective fastcgi_cache_use_stale
|
|
||||||
syn keyword ngxDirective fastcgi_cache_valid
|
|
||||||
syn keyword ngxDirective fastcgi_catch_stderr
|
|
||||||
syn keyword ngxDirective fastcgi_connect_timeout
|
|
||||||
syn keyword ngxDirective fastcgi_force_ranges
|
|
||||||
syn keyword ngxDirective fastcgi_hide_header
|
|
||||||
syn keyword ngxDirective fastcgi_ignore_client_abort
|
|
||||||
syn keyword ngxDirective fastcgi_ignore_headers
|
|
||||||
syn keyword ngxDirective fastcgi_index
|
|
||||||
syn keyword ngxDirective fastcgi_intercept_errors
|
|
||||||
syn keyword ngxDirective fastcgi_keep_conn
|
|
||||||
syn keyword ngxDirective fastcgi_limit_rate
|
|
||||||
syn keyword ngxDirective fastcgi_max_temp_file_size
|
|
||||||
syn keyword ngxDirective fastcgi_next_upstream
|
|
||||||
syn keyword ngxDirective fastcgi_next_upstream_timeout
|
|
||||||
syn keyword ngxDirective fastcgi_next_upstream_tries
|
|
||||||
syn keyword ngxDirective fastcgi_no_cache
|
|
||||||
syn keyword ngxDirective fastcgi_param
|
|
||||||
syn keyword ngxDirective fastcgi_pass_header
|
|
||||||
syn keyword ngxDirective fastcgi_pass_request_body
|
|
||||||
syn keyword ngxDirective fastcgi_pass_request_headers
|
|
||||||
syn keyword ngxDirective fastcgi_read_timeout
|
|
||||||
syn keyword ngxDirective fastcgi_request_buffering
|
|
||||||
syn keyword ngxDirective fastcgi_send_lowat
|
|
||||||
syn keyword ngxDirective fastcgi_send_timeout
|
|
||||||
syn keyword ngxDirective fastcgi_split_path_info
|
|
||||||
syn keyword ngxDirective fastcgi_store
|
|
||||||
syn keyword ngxDirective fastcgi_store_access
|
|
||||||
syn keyword ngxDirective fastcgi_temp_file_write_size
|
|
||||||
syn keyword ngxDirective fastcgi_temp_path
|
|
||||||
syn keyword ngxDirective flv
|
|
||||||
syn keyword ngxDirective geoip_city
|
|
||||||
syn keyword ngxDirective geoip_country
|
|
||||||
syn keyword ngxDirective geoip_org
|
|
||||||
syn keyword ngxDirective geoip_proxy
|
|
||||||
syn keyword ngxDirective geoip_proxy_recursive
|
|
||||||
syn keyword ngxDirective google_perftools_profiles
|
|
||||||
syn keyword ngxDirective gunzip
|
|
||||||
syn keyword ngxDirective gunzip_buffers
|
|
||||||
syn keyword ngxDirective gzip
|
|
||||||
syn keyword ngxDirective gzip_buffers
|
|
||||||
syn keyword ngxDirective gzip_comp_level
|
|
||||||
syn keyword ngxDirective gzip_disable
|
|
||||||
syn keyword ngxDirective gzip_hash
|
|
||||||
syn keyword ngxDirective gzip_http_version
|
|
||||||
syn keyword ngxDirective gzip_min_length
|
|
||||||
syn keyword ngxDirective gzip_no_buffer
|
|
||||||
syn keyword ngxDirective gzip_proxied
|
|
||||||
syn keyword ngxDirective gzip_static
|
|
||||||
syn keyword ngxDirective gzip_types
|
|
||||||
syn keyword ngxDirective gzip_vary
|
|
||||||
syn keyword ngxDirective gzip_window
|
|
||||||
syn keyword ngxDirective hash
|
|
||||||
syn keyword ngxDirective health_check
|
|
||||||
syn keyword ngxDirective health_check_timeout
|
|
||||||
syn keyword ngxDirective hls
|
|
||||||
syn keyword ngxDirective hls_buffers
|
|
||||||
syn keyword ngxDirective hls_forward_args
|
|
||||||
syn keyword ngxDirective hls_fragment
|
|
||||||
syn keyword ngxDirective hls_mp4_buffer_size
|
|
||||||
syn keyword ngxDirective hls_mp4_max_buffer_size
|
|
||||||
syn keyword ngxDirective http2_chunk_size
|
|
||||||
syn keyword ngxDirective http2_body_preread_size
|
|
||||||
syn keyword ngxDirective http2_idle_timeout
|
|
||||||
syn keyword ngxDirective http2_max_concurrent_streams
|
|
||||||
syn keyword ngxDirective http2_max_field_size
|
|
||||||
syn keyword ngxDirective http2_max_header_size
|
|
||||||
syn keyword ngxDirective http2_max_requests
|
|
||||||
syn keyword ngxDirective http2_recv_buffer_size
|
|
||||||
syn keyword ngxDirective http2_recv_timeout
|
|
||||||
syn keyword ngxDirective if_modified_since
|
|
||||||
syn keyword ngxDirective ignore_invalid_headers
|
|
||||||
syn keyword ngxDirective image_filter
|
|
||||||
syn keyword ngxDirective image_filter_buffer
|
|
||||||
syn keyword ngxDirective image_filter_interlace
|
|
||||||
syn keyword ngxDirective image_filter_jpeg_quality
|
|
||||||
syn keyword ngxDirective image_filter_sharpen
|
|
||||||
syn keyword ngxDirective image_filter_transparency
|
|
||||||
syn keyword ngxDirective image_filter_webp_quality
|
|
||||||
syn keyword ngxDirective imap_auth
|
|
||||||
syn keyword ngxDirective imap_capabilities
|
|
||||||
syn keyword ngxDirective imap_client_buffer
|
|
||||||
syn keyword ngxDirective index
|
|
||||||
syn keyword ngxDirective iocp_threads
|
|
||||||
syn keyword ngxDirective ip_hash
|
|
||||||
syn keyword ngxDirective js_access
|
|
||||||
syn keyword ngxDirective js_content
|
|
||||||
syn keyword ngxDirective js_filter
|
|
||||||
syn keyword ngxDirective js_include
|
|
||||||
syn keyword ngxDirective js_preread
|
|
||||||
syn keyword ngxDirective js_set
|
|
||||||
syn keyword ngxDirective keepalive
|
|
||||||
syn keyword ngxDirective keepalive_disable
|
|
||||||
syn keyword ngxDirective keepalive_requests
|
|
||||||
syn keyword ngxDirective keepalive_timeout
|
|
||||||
syn keyword ngxDirective kqueue_changes
|
|
||||||
syn keyword ngxDirective kqueue_events
|
|
||||||
syn keyword ngxDirective large_client_header_buffers
|
|
||||||
syn keyword ngxDirective least_conn
|
|
||||||
syn keyword ngxDirective least_time
|
|
||||||
syn keyword ngxDirective limit_conn
|
|
||||||
syn keyword ngxDirective limit_conn_log_level
|
|
||||||
syn keyword ngxDirective limit_conn_status nextgroup=ngxStatusCode skipwhite skipempty
|
|
||||||
syn keyword ngxDirective limit_conn_zone
|
|
||||||
syn keyword ngxDirective limit_rate
|
|
||||||
syn keyword ngxDirective limit_rate_after
|
|
||||||
syn keyword ngxDirective limit_req
|
|
||||||
syn keyword ngxDirective limit_req_log_level
|
|
||||||
syn keyword ngxDirective limit_req_status nextgroup=ngxStatusCode skipwhite skipempty
|
|
||||||
syn keyword ngxDirective limit_req_zone
|
|
||||||
syn keyword ngxDirective lingering_close
|
|
||||||
syn keyword ngxDirective lingering_time
|
|
||||||
syn keyword ngxDirective lingering_timeout
|
|
||||||
syn keyword ngxDirective load_module
|
|
||||||
syn keyword ngxDirective lock_file
|
|
||||||
syn keyword ngxDirective log_format
|
|
||||||
syn keyword ngxDirective log_not_found
|
|
||||||
syn keyword ngxDirective log_subrequest
|
|
||||||
syn keyword ngxDirective map_hash_bucket_size
|
|
||||||
syn keyword ngxDirective map_hash_max_size
|
|
||||||
syn keyword ngxDirective match
|
|
||||||
syn keyword ngxDirective master_process
|
|
||||||
syn keyword ngxDirective max_ranges
|
|
||||||
syn keyword ngxDirective memcached_bind
|
|
||||||
syn keyword ngxDirective memcached_buffer_size
|
|
||||||
syn keyword ngxDirective memcached_connect_timeout
|
|
||||||
syn keyword ngxDirective memcached_force_ranges
|
|
||||||
syn keyword ngxDirective memcached_gzip_flag
|
|
||||||
syn keyword ngxDirective memcached_next_upstream
|
|
||||||
syn keyword ngxDirective memcached_next_upstream_timeout
|
|
||||||
syn keyword ngxDirective memcached_next_upstream_tries
|
|
||||||
syn keyword ngxDirective memcached_read_timeout
|
|
||||||
syn keyword ngxDirective memcached_send_timeout
|
|
||||||
syn keyword ngxDirective merge_slashes
|
|
||||||
syn keyword ngxDirective min_delete_depth
|
|
||||||
syn keyword ngxDirective modern_browser
|
|
||||||
syn keyword ngxDirective modern_browser_value
|
|
||||||
syn keyword ngxDirective mp4
|
|
||||||
syn keyword ngxDirective mp4_buffer_size
|
|
||||||
syn keyword ngxDirective mp4_max_buffer_size
|
|
||||||
syn keyword ngxDirective mp4_limit_rate
|
|
||||||
syn keyword ngxDirective mp4_limit_rate_after
|
|
||||||
syn keyword ngxDirective msie_padding
|
|
||||||
syn keyword ngxDirective msie_refresh
|
|
||||||
syn keyword ngxDirective multi_accept
|
|
||||||
syn keyword ngxDirective ntlm
|
|
||||||
syn keyword ngxDirective open_file_cache
|
|
||||||
syn keyword ngxDirective open_file_cache_errors
|
|
||||||
syn keyword ngxDirective open_file_cache_events
|
|
||||||
syn keyword ngxDirective open_file_cache_min_uses
|
|
||||||
syn keyword ngxDirective open_file_cache_valid
|
|
||||||
syn keyword ngxDirective open_log_file_cache
|
|
||||||
syn keyword ngxDirective output_buffers
|
|
||||||
syn keyword ngxDirective override_charset
|
|
||||||
syn keyword ngxDirective pcre_jit
|
|
||||||
syn keyword ngxDirective perl
|
|
||||||
syn keyword ngxDirective perl_modules
|
|
||||||
syn keyword ngxDirective perl_require
|
|
||||||
syn keyword ngxDirective perl_set
|
|
||||||
syn keyword ngxDirective pid
|
|
||||||
syn keyword ngxDirective pop3_auth
|
|
||||||
syn keyword ngxDirective pop3_capabilities
|
|
||||||
syn keyword ngxDirective port_in_redirect
|
|
||||||
syn keyword ngxDirective post_acceptex
|
|
||||||
syn keyword ngxDirective postpone_gzipping
|
|
||||||
syn keyword ngxDirective postpone_output
|
|
||||||
syn keyword ngxDirective preread_buffer_size
|
|
||||||
syn keyword ngxDirective preread_timeout
|
|
||||||
syn keyword ngxDirective protocol nextgroup=ngxMailProtocol skipwhite skipempty
|
|
||||||
syn keyword ngxMailProtocol imap pop3 smtp contained
|
|
||||||
syn keyword ngxDirective proxy
|
|
||||||
syn keyword ngxDirective proxy_bind
|
|
||||||
syn keyword ngxDirective proxy_buffer
|
|
||||||
syn keyword ngxDirective proxy_buffer_size
|
|
||||||
syn keyword ngxDirective proxy_buffering
|
|
||||||
syn keyword ngxDirective proxy_buffers
|
|
||||||
syn keyword ngxDirective proxy_busy_buffers_size
|
|
||||||
syn keyword ngxDirective proxy_cache
|
|
||||||
syn keyword ngxDirective proxy_cache_bypass
|
|
||||||
syn keyword ngxDirective proxy_cache_convert_head
|
|
||||||
syn keyword ngxDirective proxy_cache_key
|
|
||||||
syn keyword ngxDirective proxy_cache_lock
|
|
||||||
syn keyword ngxDirective proxy_cache_lock_age
|
|
||||||
syn keyword ngxDirective proxy_cache_lock_timeout
|
|
||||||
syn keyword ngxDirective proxy_cache_max_range_offset
|
|
||||||
syn keyword ngxDirective proxy_cache_methods
|
|
||||||
syn keyword ngxDirective proxy_cache_min_uses
|
|
||||||
syn keyword ngxDirective proxy_cache_path
|
|
||||||
syn keyword ngxDirective proxy_cache_purge
|
|
||||||
syn keyword ngxDirective proxy_cache_revalidate
|
|
||||||
syn keyword ngxDirective proxy_cache_use_stale
|
|
||||||
syn keyword ngxDirective proxy_cache_valid nextgroup=ngxStatusCodes skipwhite skipempty
|
|
||||||
syn keyword ngxDirective proxy_connect_timeout
|
|
||||||
syn keyword ngxDirective proxy_cookie_domain
|
|
||||||
syn keyword ngxDirective proxy_cookie_path
|
|
||||||
syn keyword ngxDirective proxy_download_rate
|
|
||||||
syn keyword ngxDirective proxy_force_ranges
|
|
||||||
syn keyword ngxDirective proxy_headers_hash_bucket_size
|
|
||||||
syn keyword ngxDirective proxy_headers_hash_max_size
|
|
||||||
syn keyword ngxDirective proxy_hide_header
|
|
||||||
syn keyword ngxDirective proxy_http_version
|
|
||||||
syn keyword ngxDirective proxy_ignore_client_abort
|
|
||||||
syn keyword ngxDirective proxy_ignore_headers
|
|
||||||
syn keyword ngxDirective proxy_intercept_errors
|
|
||||||
syn keyword ngxDirective proxy_limit_rate
|
|
||||||
syn keyword ngxDirective proxy_max_temp_file_size
|
|
||||||
syn keyword ngxDirective proxy_method
|
|
||||||
syn keyword ngxDirective proxy_next_upstream
|
|
||||||
syn keyword ngxDirective proxy_next_upstream_timeout
|
|
||||||
syn keyword ngxDirective proxy_next_upstream_tries
|
|
||||||
syn keyword ngxDirective proxy_no_cache
|
|
||||||
syn keyword ngxDirective proxy_pass_error_message
|
|
||||||
syn keyword ngxDirective proxy_pass_header
|
|
||||||
syn keyword ngxDirective proxy_pass_request_body
|
|
||||||
syn keyword ngxDirective proxy_pass_request_headers
|
|
||||||
syn keyword ngxDirective proxy_protocol
|
|
||||||
syn keyword ngxDirective proxy_protocol_timeout
|
|
||||||
syn keyword ngxDirective proxy_read_timeout
|
|
||||||
syn keyword ngxDirective proxy_redirect
|
|
||||||
syn keyword ngxDirective proxy_request_buffering
|
|
||||||
syn keyword ngxDirective proxy_responses
|
|
||||||
syn keyword ngxDirective proxy_send_lowat
|
|
||||||
syn keyword ngxDirective proxy_send_timeout
|
|
||||||
syn keyword ngxDirective proxy_set_body
|
|
||||||
syn keyword ngxDirective proxy_set_header
|
|
||||||
syn keyword ngxDirective proxy_ssl_certificate
|
|
||||||
syn keyword ngxDirective proxy_ssl_certificate_key
|
|
||||||
syn keyword ngxDirective proxy_ssl_ciphers
|
|
||||||
syn keyword ngxDirective proxy_ssl_crl
|
|
||||||
syn keyword ngxDirective proxy_ssl_name
|
|
||||||
syn keyword ngxDirective proxy_ssl_password_file
|
|
||||||
syn keyword ngxDirective proxy_ssl_protocols nextgroup=ngxSSLProtocol skipwhite skipempty
|
|
||||||
syn keyword ngxDirective proxy_ssl_server_name
|
|
||||||
syn keyword ngxDirective proxy_ssl_session_reuse
|
|
||||||
syn keyword ngxDirective proxy_ssl_trusted_certificate
|
|
||||||
syn keyword ngxDirective proxy_ssl_verify
|
|
||||||
syn keyword ngxDirective proxy_ssl_verify_depth
|
|
||||||
syn keyword ngxDirective proxy_store
|
|
||||||
syn keyword ngxDirective proxy_store_access
|
|
||||||
syn keyword ngxDirective proxy_temp_file_write_size
|
|
||||||
syn keyword ngxDirective proxy_temp_path
|
|
||||||
syn keyword ngxDirective proxy_timeout
|
|
||||||
syn keyword ngxDirective proxy_upload_rate
|
|
||||||
syn keyword ngxDirective queue
|
|
||||||
syn keyword ngxDirective random_index
|
|
||||||
syn keyword ngxDirective read_ahead
|
|
||||||
syn keyword ngxDirective real_ip_header
|
|
||||||
syn keyword ngxDirective real_ip_recursive
|
|
||||||
syn keyword ngxDirective recursive_error_pages
|
|
||||||
syn keyword ngxDirective referer_hash_bucket_size
|
|
||||||
syn keyword ngxDirective referer_hash_max_size
|
|
||||||
syn keyword ngxDirective request_pool_size
|
|
||||||
syn keyword ngxDirective reset_timedout_connection
|
|
||||||
syn keyword ngxDirective resolver
|
|
||||||
syn keyword ngxDirective resolver_timeout
|
|
||||||
syn keyword ngxDirective rewrite_log
|
|
||||||
syn keyword ngxDirective rtsig_overflow_events
|
|
||||||
syn keyword ngxDirective rtsig_overflow_test
|
|
||||||
syn keyword ngxDirective rtsig_overflow_threshold
|
|
||||||
syn keyword ngxDirective rtsig_signo
|
|
||||||
syn keyword ngxDirective satisfy
|
|
||||||
syn keyword ngxDirective scgi_bind
|
|
||||||
syn keyword ngxDirective scgi_buffer_size
|
|
||||||
syn keyword ngxDirective scgi_buffering
|
|
||||||
syn keyword ngxDirective scgi_buffers
|
|
||||||
syn keyword ngxDirective scgi_busy_buffers_size
|
|
||||||
syn keyword ngxDirective scgi_cache
|
|
||||||
syn keyword ngxDirective scgi_cache_bypass
|
|
||||||
syn keyword ngxDirective scgi_cache_key
|
|
||||||
syn keyword ngxDirective scgi_cache_lock
|
|
||||||
syn keyword ngxDirective scgi_cache_lock_age
|
|
||||||
syn keyword ngxDirective scgi_cache_lock_timeout
|
|
||||||
syn keyword ngxDirective scgi_cache_max_range_offset
|
|
||||||
syn keyword ngxDirective scgi_cache_methods
|
|
||||||
syn keyword ngxDirective scgi_cache_min_uses
|
|
||||||
syn keyword ngxDirective scgi_cache_path
|
|
||||||
syn keyword ngxDirective scgi_cache_purge
|
|
||||||
syn keyword ngxDirective scgi_cache_revalidate
|
|
||||||
syn keyword ngxDirective scgi_cache_use_stale
|
|
||||||
syn keyword ngxDirective scgi_cache_valid
|
|
||||||
syn keyword ngxDirective scgi_connect_timeout
|
|
||||||
syn keyword ngxDirective scgi_force_ranges
|
|
||||||
syn keyword ngxDirective scgi_hide_header
|
|
||||||
syn keyword ngxDirective scgi_ignore_client_abort
|
|
||||||
syn keyword ngxDirective scgi_ignore_headers
|
|
||||||
syn keyword ngxDirective scgi_intercept_errors
|
|
||||||
syn keyword ngxDirective scgi_limit_rate
|
|
||||||
syn keyword ngxDirective scgi_max_temp_file_size
|
|
||||||
syn keyword ngxDirective scgi_next_upstream
|
|
||||||
syn keyword ngxDirective scgi_next_upstream_timeout
|
|
||||||
syn keyword ngxDirective scgi_next_upstream_tries
|
|
||||||
syn keyword ngxDirective scgi_no_cache
|
|
||||||
syn keyword ngxDirective scgi_param
|
|
||||||
syn keyword ngxDirective scgi_pass_header
|
|
||||||
syn keyword ngxDirective scgi_pass_request_body
|
|
||||||
syn keyword ngxDirective scgi_pass_request_headers
|
|
||||||
syn keyword ngxDirective scgi_read_timeout
|
|
||||||
syn keyword ngxDirective scgi_request_buffering
|
|
||||||
syn keyword ngxDirective scgi_send_timeout
|
|
||||||
syn keyword ngxDirective scgi_store
|
|
||||||
syn keyword ngxDirective scgi_store_access
|
|
||||||
syn keyword ngxDirective scgi_temp_file_write_size
|
|
||||||
syn keyword ngxDirective scgi_temp_path
|
|
||||||
syn keyword ngxDirective secure_link
|
|
||||||
syn keyword ngxDirective secure_link_md5
|
|
||||||
syn keyword ngxDirective secure_link_secret
|
|
||||||
syn keyword ngxDirective send_lowat
|
|
||||||
syn keyword ngxDirective send_timeout
|
|
||||||
syn keyword ngxDirective sendfile
|
|
||||||
syn keyword ngxDirective sendfile_max_chunk
|
|
||||||
syn keyword ngxDirective server_name_in_redirect
|
|
||||||
syn keyword ngxDirective server_names_hash_bucket_size
|
|
||||||
syn keyword ngxDirective server_names_hash_max_size
|
|
||||||
syn keyword ngxDirective server_tokens
|
|
||||||
syn keyword ngxDirective session_log
|
|
||||||
syn keyword ngxDirective session_log_format
|
|
||||||
syn keyword ngxDirective session_log_zone
|
|
||||||
syn keyword ngxDirective set_real_ip_from
|
|
||||||
syn keyword ngxDirective slice
|
|
||||||
syn keyword ngxDirective smtp_auth
|
|
||||||
syn keyword ngxDirective smtp_capabilities
|
|
||||||
syn keyword ngxDirective smtp_client_buffer
|
|
||||||
syn keyword ngxDirective smtp_greeting_delay
|
|
||||||
syn keyword ngxDirective source_charset
|
|
||||||
syn keyword ngxDirective spdy_chunk_size
|
|
||||||
syn keyword ngxDirective spdy_headers_comp
|
|
||||||
syn keyword ngxDirective spdy_keepalive_timeout
|
|
||||||
syn keyword ngxDirective spdy_max_concurrent_streams
|
|
||||||
syn keyword ngxDirective spdy_pool_size
|
|
||||||
syn keyword ngxDirective spdy_recv_buffer_size
|
|
||||||
syn keyword ngxDirective spdy_recv_timeout
|
|
||||||
syn keyword ngxDirective spdy_streams_index_size
|
|
||||||
syn keyword ngxDirective ssi
|
|
||||||
syn keyword ngxDirective ssi_ignore_recycled_buffers
|
|
||||||
syn keyword ngxDirective ssi_last_modified
|
|
||||||
syn keyword ngxDirective ssi_min_file_chunk
|
|
||||||
syn keyword ngxDirective ssi_silent_errors
|
|
||||||
syn keyword ngxDirective ssi_types
|
|
||||||
syn keyword ngxDirective ssi_value_length
|
|
||||||
syn keyword ngxDirective ssl
|
|
||||||
syn keyword ngxDirective ssl_buffer_size
|
|
||||||
syn keyword ngxDirective ssl_certificate
|
|
||||||
syn keyword ngxDirective ssl_certificate_key
|
|
||||||
syn keyword ngxDirective ssl_ciphers
|
|
||||||
syn keyword ngxDirective ssl_client_certificate
|
|
||||||
syn keyword ngxDirective ssl_crl
|
|
||||||
syn keyword ngxDirective ssl_dhparam
|
|
||||||
syn keyword ngxDirective ssl_ecdh_curve
|
|
||||||
syn keyword ngxDirective ssl_engine
|
|
||||||
syn keyword ngxDirective ssl_handshake_timeout
|
|
||||||
syn keyword ngxDirective ssl_password_file
|
|
||||||
syn keyword ngxDirective ssl_prefer_server_ciphers
|
|
||||||
syn keyword ngxDirective ssl_preread
|
|
||||||
syn keyword ngxDirective ssl_protocols nextgroup=ngxSSLProtocol skipwhite skipempty
|
|
||||||
syn keyword ngxSSLProtocol SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 contained nextgroup=ngxSSLProtocol skipwhite skipempty
|
|
||||||
syn keyword ngxDirective ssl_session_cache
|
|
||||||
syn keyword ngxDirective ssl_session_ticket_key
|
|
||||||
syn keyword ngxDirective ssl_session_tickets
|
|
||||||
syn keyword ngxDirective ssl_session_timeout
|
|
||||||
syn keyword ngxDirective ssl_stapling
|
|
||||||
syn keyword ngxDirective ssl_stapling_file
|
|
||||||
syn keyword ngxDirective ssl_stapling_responder
|
|
||||||
syn keyword ngxDirective ssl_stapling_verify
|
|
||||||
syn keyword ngxDirective ssl_trusted_certificate
|
|
||||||
syn keyword ngxDirective ssl_verify_client
|
|
||||||
syn keyword ngxDirective ssl_verify_depth
|
|
||||||
syn keyword ngxDirective starttls
|
|
||||||
syn keyword ngxDirective state
|
|
||||||
syn keyword ngxDirective status
|
|
||||||
syn keyword ngxDirective status_format
|
|
||||||
syn keyword ngxDirective status_zone
|
|
||||||
syn keyword ngxDirective sticky
|
|
||||||
syn keyword ngxDirective sticky_cookie_insert
|
|
||||||
syn keyword ngxDirective stub_status
|
|
||||||
syn keyword ngxDirective sub_filter
|
|
||||||
syn keyword ngxDirective sub_filter_last_modified
|
|
||||||
syn keyword ngxDirective sub_filter_once
|
|
||||||
syn keyword ngxDirective sub_filter_types
|
|
||||||
syn keyword ngxDirective tcp_nodelay
|
|
||||||
syn keyword ngxDirective tcp_nopush
|
|
||||||
syn keyword ngxDirective thread_pool
|
|
||||||
syn keyword ngxDirective thread_stack_size
|
|
||||||
syn keyword ngxDirective timeout
|
|
||||||
syn keyword ngxDirective timer_resolution
|
|
||||||
syn keyword ngxDirective types_hash_bucket_size
|
|
||||||
syn keyword ngxDirective types_hash_max_size
|
|
||||||
syn keyword ngxDirective underscores_in_headers
|
|
||||||
syn keyword ngxDirective uninitialized_variable_warn
|
|
||||||
syn keyword ngxDirective upstream_conf
|
|
||||||
syn keyword ngxDirective use
|
|
||||||
syn keyword ngxDirective user
|
|
||||||
syn keyword ngxDirective userid
|
|
||||||
syn keyword ngxDirective userid_domain
|
|
||||||
syn keyword ngxDirective userid_expires
|
|
||||||
syn keyword ngxDirective userid_mark
|
|
||||||
syn keyword ngxDirective userid_name
|
|
||||||
syn keyword ngxDirective userid_p3p
|
|
||||||
syn keyword ngxDirective userid_path
|
|
||||||
syn keyword ngxDirective userid_service
|
|
||||||
syn keyword ngxDirective uwsgi_bind
|
|
||||||
syn keyword ngxDirective uwsgi_buffer_size
|
|
||||||
syn keyword ngxDirective uwsgi_buffering
|
|
||||||
syn keyword ngxDirective uwsgi_buffers
|
|
||||||
syn keyword ngxDirective uwsgi_busy_buffers_size
|
|
||||||
syn keyword ngxDirective uwsgi_cache
|
|
||||||
syn keyword ngxDirective uwsgi_cache_bypass
|
|
||||||
syn keyword ngxDirective uwsgi_cache_key
|
|
||||||
syn keyword ngxDirective uwsgi_cache_lock
|
|
||||||
syn keyword ngxDirective uwsgi_cache_lock_age
|
|
||||||
syn keyword ngxDirective uwsgi_cache_lock_timeout
|
|
||||||
syn keyword ngxDirective uwsgi_cache_methods
|
|
||||||
syn keyword ngxDirective uwsgi_cache_min_uses
|
|
||||||
syn keyword ngxDirective uwsgi_cache_path
|
|
||||||
syn keyword ngxDirective uwsgi_cache_purge
|
|
||||||
syn keyword ngxDirective uwsgi_cache_revalidate
|
|
||||||
syn keyword ngxDirective uwsgi_cache_use_stale
|
|
||||||
syn keyword ngxDirective uwsgi_cache_valid
|
|
||||||
syn keyword ngxDirective uwsgi_connect_timeout
|
|
||||||
syn keyword ngxDirective uwsgi_force_ranges
|
|
||||||
syn keyword ngxDirective uwsgi_hide_header
|
|
||||||
syn keyword ngxDirective uwsgi_ignore_client_abort
|
|
||||||
syn keyword ngxDirective uwsgi_ignore_headers
|
|
||||||
syn keyword ngxDirective uwsgi_intercept_errors
|
|
||||||
syn keyword ngxDirective uwsgi_limit_rate
|
|
||||||
syn keyword ngxDirective uwsgi_max_temp_file_size
|
|
||||||
syn keyword ngxDirective uwsgi_modifier1
|
|
||||||
syn keyword ngxDirective uwsgi_modifier2
|
|
||||||
syn keyword ngxDirective uwsgi_next_upstream
|
|
||||||
syn keyword ngxDirective uwsgi_next_upstream_timeout
|
|
||||||
syn keyword ngxDirective uwsgi_next_upstream_tries
|
|
||||||
syn keyword ngxDirective uwsgi_no_cache
|
|
||||||
syn keyword ngxDirective uwsgi_param
|
|
||||||
syn keyword ngxDirective uwsgi_pass
|
|
||||||
syn keyword ngxDirective uwsgi_pass_header
|
|
||||||
syn keyword ngxDirective uwsgi_pass_request_body
|
|
||||||
syn keyword ngxDirective uwsgi_pass_request_headers
|
|
||||||
syn keyword ngxDirective uwsgi_read_timeout
|
|
||||||
syn keyword ngxDirective uwsgi_request_buffering
|
|
||||||
syn keyword ngxDirective uwsgi_send_timeout
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_certificate
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_certificate_key
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_ciphers
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_crl
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_name
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_password_file
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_protocols nextgroup=ngxSSLProtocol skipwhite skipempty
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_server_name
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_session_reuse
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_trusted_certificate
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_verify
|
|
||||||
syn keyword ngxDirective uwsgi_ssl_verify_depth
|
|
||||||
syn keyword ngxDirective uwsgi_store
|
|
||||||
syn keyword ngxDirective uwsgi_store_access
|
|
||||||
syn keyword ngxDirective uwsgi_string
|
|
||||||
syn keyword ngxDirective uwsgi_temp_file_write_size
|
|
||||||
syn keyword ngxDirective uwsgi_temp_path
|
|
||||||
syn keyword ngxDirective valid_referers
|
|
||||||
syn keyword ngxDirective variables_hash_bucket_size
|
|
||||||
syn keyword ngxDirective variables_hash_max_size
|
|
||||||
syn keyword ngxDirective worker_aio_requests
|
|
||||||
syn keyword ngxDirective worker_connections
|
|
||||||
syn keyword ngxDirective worker_cpu_affinity
|
|
||||||
syn keyword ngxDirective worker_priority
|
|
||||||
syn keyword ngxDirective worker_processes
|
|
||||||
syn keyword ngxDirective worker_rlimit_core
|
|
||||||
syn keyword ngxDirective worker_rlimit_nofile
|
|
||||||
syn keyword ngxDirective worker_rlimit_sigpending
|
|
||||||
syn keyword ngxDirective worker_threads
|
|
||||||
syn keyword ngxDirective working_directory
|
|
||||||
syn keyword ngxDirective xclient
|
|
||||||
syn keyword ngxDirective xml_entities
|
|
||||||
syn keyword ngxDirective xslt_last_modified
|
|
||||||
syn keyword ngxDirective xslt_param
|
|
||||||
syn keyword ngxDirective xslt_string_param
|
|
||||||
syn keyword ngxDirective xslt_stylesheet
|
|
||||||
syn keyword ngxDirective xslt_types
|
|
||||||
syn keyword ngxDirective zone
|
|
||||||
|
|
||||||
" 3rd party module list:
|
|
||||||
" https://www.nginx.com/resources/wiki/modules/
|
|
||||||
|
|
||||||
" @3PARTY
|
|
||||||
|
|
||||||
" highlight
|
|
||||||
|
|
||||||
hi link ngxComment Comment
|
|
||||||
hi link ngxVariable Identifier
|
|
||||||
hi link ngxVariableString PreProc
|
|
||||||
hi link ngxString String
|
|
||||||
hi link ngxLocationPath String
|
|
||||||
hi link ngxLocationNamedLoc Identifier
|
|
||||||
|
|
||||||
hi link ngxBoolean Boolean
|
|
||||||
hi link ngxStatusCode Number
|
|
||||||
hi link ngxRewriteFlag Boolean
|
|
||||||
hi link ngxDirectiveBlock Statement
|
|
||||||
hi link ngxDirectiveImportant Type
|
|
||||||
hi link ngxDirectiveControl Keyword
|
|
||||||
hi link ngxDirectiveError Constant
|
|
||||||
hi link ngxDirectiveDeprecated Error
|
|
||||||
hi link ngxDirective Identifier
|
|
||||||
hi link ngxDirectiveThirdParty Special
|
|
||||||
|
|
||||||
hi link ngxListenOptions Keyword
|
|
||||||
hi link ngxMailProtocol Keyword
|
|
||||||
hi link ngxSSLProtocol Keyword
|
|
||||||
|
|
||||||
hi link ngxThirdPartyKeyword keyword
|
|
||||||
|
|
||||||
let b:current_syntax = "nginx"
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -145,8 +145,8 @@ endif
|
|||||||
|
|
||||||
if get(g:, 'vim_markdown_math', 0)
|
if get(g:, 'vim_markdown_math', 0)
|
||||||
syn include @tex syntax/tex.vim
|
syn include @tex syntax/tex.vim
|
||||||
syn region mkdMath start="\\\@<!\$" end="\$" contains=@tex keepend
|
syn region mkdMath start="\\\@<!\$" end="\$" skip="\\\$" contains=@tex keepend
|
||||||
syn region mkdMath start="\\\@<!\$\$" end="\$\$" contains=@tex keepend
|
syn region mkdMath start="\\\@<!\$\$" end="\$\$" skip="\\\$" contains=@tex keepend
|
||||||
endif
|
endif
|
||||||
|
|
||||||
syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath
|
syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Accept Language Module <https://www.nginx.com/resources/wiki/modules/accept_language/>
|
|
||||||
" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
|
|
||||||
syn keyword ngxDirectiveThirdParty set_from_accept_language
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Access Key Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpAccessKeyModule>
|
|
||||||
" Denies access unless the request URL contains an access key.
|
|
||||||
syn keyword ngxDirectiveDeprecated accesskey
|
|
||||||
syn keyword ngxDirectiveDeprecated accesskey_arg
|
|
||||||
syn keyword ngxDirectiveDeprecated accesskey_hashmethod
|
|
||||||
syn keyword ngxDirectiveDeprecated accesskey_signature
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Asynchronous FastCGI Module <https://github.com/rsms/afcgi>
|
|
||||||
" Primarily a modified version of the Nginx FastCGI module which implements multiplexing of connections, allowing a single FastCGI server to handle many concurrent requests.
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_bind
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_buffer_size
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_buffers
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_busy_buffers_size
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_cache
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_cache_key
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_cache_methods
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_cache_min_uses
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_cache_path
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_cache_use_stale
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_cache_valid
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_catch_stderr
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_connect_timeout
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_hide_header
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_ignore_client_abort
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_ignore_headers
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_index
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_intercept_errors
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_max_temp_file_size
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_next_upstream
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_param
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_pass
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_pass_header
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_body
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_pass_request_headers
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_read_timeout
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_send_lowat
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_send_timeout
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_split_path_info
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_store
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_store_access
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_temp_file_write_size
|
|
||||||
" syn keyword ngxDirectiveThirdParty fastcgi_temp_path
|
|
||||||
syn keyword ngxDirectiveDeprecated fastcgi_upstream_fail_timeout
|
|
||||||
syn keyword ngxDirectiveDeprecated fastcgi_upstream_max_fails
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Akamai G2O Module <https://github.com/kaltura/nginx_mod_akamai_g2o>
|
|
||||||
" Nginx Module for Authenticating Akamai G2O requests
|
|
||||||
syn keyword ngxDirectiveThirdParty g2o
|
|
||||||
syn keyword ngxDirectiveThirdParty g2o_nonce
|
|
||||||
syn keyword ngxDirectiveThirdParty g2o_key
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Lua Module <https://github.com/alacner/nginx_lua_module>
|
|
||||||
" You can be very simple to execute lua code for nginx
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_file
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Array Variable Module <https://github.com/openresty/array-var-nginx-module>
|
|
||||||
" Add support for array-typed variables to nginx config files
|
|
||||||
syn keyword ngxDirectiveThirdParty array_split
|
|
||||||
syn keyword ngxDirectiveThirdParty array_join
|
|
||||||
syn keyword ngxDirectiveThirdParty array_map
|
|
||||||
syn keyword ngxDirectiveThirdParty array_map_op
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Nginx Audio Track for HTTP Live Streaming <https://github.com/flavioribeiro/nginx-audio-track-for-hls-module>
|
|
||||||
" This nginx module generates audio track for hls streams on the fly.
|
|
||||||
syn keyword ngxDirectiveThirdParty ngx_hls_audio_track
|
|
||||||
syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_rootpath
|
|
||||||
syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_format
|
|
||||||
syn keyword ngxDirectiveThirdParty ngx_hls_audio_track_output_header
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" AWS Proxy Module <https://github.com/anomalizer/ngx_aws_auth>
|
|
||||||
" Nginx module to proxy to authenticated AWS services
|
|
||||||
syn keyword ngxDirectiveThirdParty aws_access_key
|
|
||||||
syn keyword ngxDirectiveThirdParty aws_key_scope
|
|
||||||
syn keyword ngxDirectiveThirdParty aws_signing_key
|
|
||||||
syn keyword ngxDirectiveThirdParty aws_endpoint
|
|
||||||
syn keyword ngxDirectiveThirdParty aws_s3_bucket
|
|
||||||
syn keyword ngxDirectiveThirdParty aws_sign
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Backtrace module <https://github.com/alibaba/nginx-backtrace>
|
|
||||||
" A Nginx module to dump backtrace when a worker process exits abnormally
|
|
||||||
syn keyword ngxDirectiveThirdParty backtrace_log
|
|
||||||
syn keyword ngxDirectiveThirdParty backtrace_max_stack_size
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Brotli Module <https://github.com/google/ngx_brotli>
|
|
||||||
" Nginx module for Brotli compression
|
|
||||||
syn keyword ngxDirectiveThirdParty brotli_static
|
|
||||||
syn keyword ngxDirectiveThirdParty brotli
|
|
||||||
syn keyword ngxDirectiveThirdParty brotli_types
|
|
||||||
syn keyword ngxDirectiveThirdParty brotli_buffers
|
|
||||||
syn keyword ngxDirectiveThirdParty brotli_comp_level
|
|
||||||
syn keyword ngxDirectiveThirdParty brotli_window
|
|
||||||
syn keyword ngxDirectiveThirdParty brotli_min_length
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Cache Purge Module <https://github.com/FRiCKLE/ngx_cache_purge>
|
|
||||||
" Adds ability to purge content from FastCGI, proxy, SCGI and uWSGI caches.
|
|
||||||
syn keyword ngxDirectiveThirdParty fastcgi_cache_purge
|
|
||||||
syn keyword ngxDirectiveThirdParty proxy_cache_purge
|
|
||||||
" syn keyword ngxDirectiveThirdParty scgi_cache_purge
|
|
||||||
" syn keyword ngxDirectiveThirdParty uwsgi_cache_purge
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Chunkin Module (DEPRECATED) <http://wiki.nginx.org/NginxHttpChunkinModule>
|
|
||||||
" HTTP 1.1 chunked-encoding request body support for Nginx.
|
|
||||||
syn keyword ngxDirectiveDeprecated chunkin
|
|
||||||
syn keyword ngxDirectiveDeprecated chunkin_keepalive
|
|
||||||
syn keyword ngxDirectiveDeprecated chunkin_max_chunks_per_buf
|
|
||||||
syn keyword ngxDirectiveDeprecated chunkin_resume
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Circle GIF Module <https://github.com/evanmiller/nginx_circle_gif>
|
|
||||||
" Generates simple circle images with the colors and size specified in the URL.
|
|
||||||
syn keyword ngxDirectiveThirdParty circle_gif
|
|
||||||
syn keyword ngxDirectiveThirdParty circle_gif_max_radius
|
|
||||||
syn keyword ngxDirectiveThirdParty circle_gif_min_radius
|
|
||||||
syn keyword ngxDirectiveThirdParty circle_gif_step_radius
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Nginx-Clojure Module <http://nginx-clojure.github.io/index.html>
|
|
||||||
" Parses the Accept-Language header and gives the most suitable locale from a list of supported locales.
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_path
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_var
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_classpath
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_classpath_check
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_workers
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_options
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_handler_type
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_init_handler_name
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_init_handler_code
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_exit_handler_name
|
|
||||||
syn keyword ngxDirectiveThirdParty jvm_exit_handler_code
|
|
||||||
syn keyword ngxDirectiveThirdParty handlers_lazy_init
|
|
||||||
syn keyword ngxDirectiveThirdParty auto_upgrade_ws
|
|
||||||
syn keyword ngxDirectiveThirdParty content_handler_type
|
|
||||||
syn keyword ngxDirectiveThirdParty content_handler_name
|
|
||||||
syn keyword ngxDirectiveThirdParty content_handler_code
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_handler_type
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_handler_name
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_handler_code
|
|
||||||
syn keyword ngxDirectiveThirdParty access_handler_type
|
|
||||||
syn keyword ngxDirectiveThirdParty access_handler_name
|
|
||||||
syn keyword ngxDirectiveThirdParty access_handler_code
|
|
||||||
syn keyword ngxDirectiveThirdParty header_filter_type
|
|
||||||
syn keyword ngxDirectiveThirdParty header_filter_name
|
|
||||||
syn keyword ngxDirectiveThirdParty header_filter_code
|
|
||||||
syn keyword ngxDirectiveThirdParty content_handler_property
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_handler_property
|
|
||||||
syn keyword ngxDirectiveThirdParty access_handler_property
|
|
||||||
syn keyword ngxDirectiveThirdParty header_filter_property
|
|
||||||
syn keyword ngxDirectiveThirdParty always_read_body
|
|
||||||
syn keyword ngxDirectiveThirdParty shared_map
|
|
||||||
syn keyword ngxDirectiveThirdParty write_page_size
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Upstream Consistent Hash <https://www.nginx.com/resources/wiki/modules/consistent_hash/>
|
|
||||||
" A load balancer that uses an internal consistent hash ring to select the right backend node.
|
|
||||||
syn keyword ngxDirectiveThirdParty consistent_hash
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Nginx Development Kit <https://github.com/simpl/ngx_devel_kit>
|
|
||||||
" The NDK is an Nginx module that is designed to extend the core functionality of the excellent Nginx webserver in a way that can be used as a basis of other Nginx modules.
|
|
||||||
" NDK_UPSTREAM_LIST
|
|
||||||
" This submodule provides a directive that creates a list of upstreams, with optional weighting. This list can then be used by other modules to hash over the upstreams however they choose.
|
|
||||||
syn keyword ngxDirectiveThirdParty upstream_list
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Drizzle Module <https://www.nginx.com/resources/wiki/modules/drizzle/>
|
|
||||||
" Upstream module for talking to MySQL and Drizzle directly
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_server
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_keepalive
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_query
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_pass
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_connect_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_send_query_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_recv_cols_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_recv_rows_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_buffer_size
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_module_header
|
|
||||||
syn keyword ngxDirectiveThirdParty drizzle_status
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Dynamic ETags Module <https://github.com/kali/nginx-dynamic-etags>
|
|
||||||
" Attempt at handling ETag / If-None-Match on proxied content.
|
|
||||||
syn keyword ngxDirectiveThirdParty dynamic_etags
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Echo Module <https://www.nginx.com/resources/wiki/modules/echo/>
|
|
||||||
" Bringing the power of "echo", "sleep", "time" and more to Nginx's config file
|
|
||||||
syn keyword ngxDirectiveThirdParty echo
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_duplicate
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_flush
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_sleep
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_blocking_sleep
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_reset_timer
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_read_request_body
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_location_async
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_location
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_subrequest_async
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_subrequest
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_foreach_split
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_end
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_request_body
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_exec
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_status
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_before_body
|
|
||||||
syn keyword ngxDirectiveThirdParty echo_after_body
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Encrypted Session Module <https://github.com/openresty/encrypted-session-nginx-module>
|
|
||||||
" Encrypt and decrypt nginx variable values
|
|
||||||
syn keyword ngxDirectiveThirdParty encrypted_session_key
|
|
||||||
syn keyword ngxDirectiveThirdParty encrypted_session_iv
|
|
||||||
syn keyword ngxDirectiveThirdParty encrypted_session_expires
|
|
||||||
syn keyword ngxDirectiveThirdParty set_encrypt_session
|
|
||||||
syn keyword ngxDirectiveThirdParty set_decrypt_session
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Enhanced Memcached Module <https://github.com/bpaquet/ngx_http_enhanced_memcached_module>
|
|
||||||
" This module is based on the standard Nginx Memcached module, with some additonal features
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_pass
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_hash_keys_with_md5
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_put
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_allow_delete
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_stats
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_flush
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_flush_namespace
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_bind
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_connect_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_send_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_buffer_size
|
|
||||||
syn keyword ngxDirectiveThirdParty enhanced_memcached_read_timeout
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Events Module (DEPRECATED) <http://docs.dutov.org/nginx_modules_events_en.html>
|
|
||||||
" Provides options for start/stop events.
|
|
||||||
syn keyword ngxDirectiveDeprecated on_start
|
|
||||||
syn keyword ngxDirectiveDeprecated on_stop
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" EY Balancer Module <https://github.com/ezmobius/nginx-ey-balancer>
|
|
||||||
" Adds a request queue to Nginx that allows the limiting of concurrent requests passed to the upstream.
|
|
||||||
syn keyword ngxDirectiveThirdParty max_connections
|
|
||||||
syn keyword ngxDirectiveThirdParty max_connections_max_queue_length
|
|
||||||
syn keyword ngxDirectiveThirdParty max_connections_queue_timeout
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Upstream Fair Balancer <https://www.nginx.com/resources/wiki/modules/fair_balancer/>
|
|
||||||
" Sends an incoming request to the least-busy backend server, rather than distributing requests round-robin.
|
|
||||||
syn keyword ngxDirectiveThirdParty fair
|
|
||||||
syn keyword ngxDirectiveThirdParty upstream_fair_shm_size
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Fancy Indexes Module <https://github.com/aperezdc/ngx-fancyindex>
|
|
||||||
" Like the built-in autoindex module, but fancier.
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_default_sort
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_directories_first
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_css_href
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_exact_size
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_name_length
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_footer
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_header
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_show_path
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_ignore
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_hide_symlinks
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_localtime
|
|
||||||
syn keyword ngxDirectiveThirdParty fancyindex_time_format
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Form Auth Module <https://github.com/veruu/ngx_form_auth>
|
|
||||||
" Provides authentication and authorization with credentials submitted via POST request
|
|
||||||
syn keyword ngxDirectiveThirdParty form_auth
|
|
||||||
syn keyword ngxDirectiveThirdParty form_auth_pam_service
|
|
||||||
syn keyword ngxDirectiveThirdParty form_auth_login
|
|
||||||
syn keyword ngxDirectiveThirdParty form_auth_password
|
|
||||||
syn keyword ngxDirectiveThirdParty form_auth_remote_user
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Form Input Module <https://github.com/calio/form-input-nginx-module>
|
|
||||||
" Reads HTTP POST and PUT request body encoded in "application/x-www-form-urlencoded" and parses the arguments into nginx variables.
|
|
||||||
syn keyword ngxDirectiveThirdParty set_form_input
|
|
||||||
syn keyword ngxDirectiveThirdParty set_form_input_multi
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" GeoIP Module (DEPRECATED) <http://wiki.nginx.org/NginxHttp3rdPartyGeoIPModule>
|
|
||||||
" Country code lookups via the MaxMind GeoIP API.
|
|
||||||
syn keyword ngxDirectiveDeprecated geoip_country_file
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" GeoIP 2 Module <https://github.com/leev/ngx_http_geoip2_module>
|
|
||||||
" Creates variables with values from the maxmind geoip2 databases based on the client IP
|
|
||||||
syn keyword ngxDirectiveThirdParty geoip2 nextgroup=ngxThirdPartyGeoIP2Database skipwhite skipempty
|
|
||||||
syn match ngxThirdPartyGeoIP2Database /\S\+/ contained nextgroup=ngxThirdPartyGeoIP2Block skipwhite skipempty
|
|
||||||
syn region ngxThirdPartyGeoIP2Block start=/{/ end=/}/ contained contains=ngxThirdPartyGeoIP2Keyword,ngxVariable
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword de en es fr ja pt-BR ru zh-CN contained
|
|
||||||
syn match ngxThirdPartyGeoIP2Keyword /pt-BR|zh-CN/ contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword default source contained
|
|
||||||
" Common Keys
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword code confidence geoname_id names iso_code contained
|
|
||||||
" /Common Keys
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword city contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword continent contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword country contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword location contained
|
|
||||||
" Location Keys
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword accuracy_radius contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword average_income contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword latitude contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword longitude contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword metro_code contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword population_density contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword time_zone contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword postal contained
|
|
||||||
" /Location Keys
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword registered_country contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword represented_country contained
|
|
||||||
" Represented Country Keys
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword type contained
|
|
||||||
" /Represented Country Keys
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword subdivisions contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword traits contained
|
|
||||||
" Traits Keys
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword autonomous_system_number contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword autonomous_system_organization contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword domain contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword ip_address contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword is_anonymous_proxy contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword is_satellite_provider contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword isp contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword organization contained
|
|
||||||
syn keyword ngxThirdPartyGeoIP2Keyword user_type contained
|
|
||||||
" /Traits Keys
|
|
||||||
hi link ngxThirdPartyGeoIP2Keyword ngxThirdPartyKeyword
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" GridFS Module <https://github.com/mdirolf/nginx-gridfs>
|
|
||||||
" Nginx module for serving files from MongoDB's GridFS
|
|
||||||
syn keyword ngxDirectiveThirdParty gridfs
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Headers More Module <https://github.com/openresty/headers-more-nginx-module>
|
|
||||||
" Set and clear input and output headers...more than "add"!
|
|
||||||
syn keyword ngxDirectiveThirdParty more_clear_headers
|
|
||||||
syn keyword ngxDirectiveThirdParty more_clear_input_headers
|
|
||||||
syn keyword ngxDirectiveThirdParty more_set_headers
|
|
||||||
syn keyword ngxDirectiveThirdParty more_set_input_headers
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Health Checks Upstreams Module <https://www.nginx.com/resources/wiki/modules/healthcheck/>
|
|
||||||
" Polls backends and if they respond with HTTP 200 + an optional request body, they are marked good. Otherwise, they are marked bad.
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_enabled
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_delay
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_failcount
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_send
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_expected
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_buffer
|
|
||||||
syn keyword ngxDirectiveThirdParty healthcheck_status
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Accounting Module <https://github.com/Lax/ngx_http_accounting_module>
|
|
||||||
" Add traffic stat function to nginx. Useful for http accounting based on nginx configuration logic
|
|
||||||
syn keyword ngxDirectiveThirdParty http_accounting
|
|
||||||
syn keyword ngxDirectiveThirdParty http_accounting_log
|
|
||||||
syn keyword ngxDirectiveThirdParty http_accounting_id
|
|
||||||
syn keyword ngxDirectiveThirdParty http_accounting_interval
|
|
||||||
syn keyword ngxDirectiveThirdParty http_accounting_perturb
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Nginx Digest Authentication module <https://github.com/atomx/nginx-http-auth-digest>
|
|
||||||
" Digest Authentication for Nginx
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_digest
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_digest_user_file
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_digest_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_digest_expires
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_digest_replays
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_digest_shm_size
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Auth PAM Module <https://github.com/sto/ngx_http_auth_pam_module>
|
|
||||||
" HTTP Basic Authentication using PAM.
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_pam
|
|
||||||
syn keyword ngxDirectiveThirdParty auth_pam_service_name
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Auth Request Module <http://nginx.org/en/docs/http/ngx_http_auth_request_module.html>
|
|
||||||
" Implements client authorization based on the result of a subrequest
|
|
||||||
" syn keyword ngxDirectiveThirdParty auth_request
|
|
||||||
" syn keyword ngxDirectiveThirdParty auth_request_set
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Concatenation module for Nginx <https://github.com/alibaba/nginx-http-concat>
|
|
||||||
" A Nginx module for concatenating files in a given context: CSS and JS files usually
|
|
||||||
syn keyword ngxDirectiveThirdParty concat
|
|
||||||
syn keyword ngxDirectiveThirdParty concat_types
|
|
||||||
syn keyword ngxDirectiveThirdParty concat_unique
|
|
||||||
syn keyword ngxDirectiveThirdParty concat_max_files
|
|
||||||
syn keyword ngxDirectiveThirdParty concat_delimiter
|
|
||||||
syn keyword ngxDirectiveThirdParty concat_ignore_file_error
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Dynamic Upstream Module <https://github.com/yzprofile/ngx_http_dyups_module>
|
|
||||||
" Update upstreams' config by restful interface
|
|
||||||
syn keyword ngxDirectiveThirdParty dyups_interface
|
|
||||||
syn keyword ngxDirectiveThirdParty dyups_read_msg_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty dyups_shm_zone_size
|
|
||||||
syn keyword ngxDirectiveThirdParty dyups_upstream_conf
|
|
||||||
syn keyword ngxDirectiveThirdParty dyups_trylock
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Footer If Filter Module <https://github.com/flygoast/ngx_http_footer_if_filter>
|
|
||||||
" The ngx_http_footer_if_filter_module is used to add given content to the end of the response according to the condition specified.
|
|
||||||
syn keyword ngxDirectiveThirdParty footer_if
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Footer Filter Module <https://github.com/alibaba/nginx-http-footer-filter>
|
|
||||||
" This module implements a body filter that adds a given string to the page footer.
|
|
||||||
syn keyword ngxDirectiveThirdParty footer
|
|
||||||
syn keyword ngxDirectiveThirdParty footer_types
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Internal Redirect Module <https://github.com/flygoast/ngx_http_internal_redirect>
|
|
||||||
" Make an internal redirect to the uri specified according to the condition specified.
|
|
||||||
syn keyword ngxDirectiveThirdParty internal_redirect_if
|
|
||||||
syn keyword ngxDirectiveThirdParty internal_redirect_if_no_postponed
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP JavaScript Module <https://github.com/peter-leonov/ngx_http_js_module>
|
|
||||||
" Embedding SpiderMonkey. Nearly full port on Perl module.
|
|
||||||
syn keyword ngxDirectiveThirdParty js
|
|
||||||
syn keyword ngxDirectiveThirdParty js_filter
|
|
||||||
syn keyword ngxDirectiveThirdParty js_filter_types
|
|
||||||
syn keyword ngxDirectiveThirdParty js_load
|
|
||||||
syn keyword ngxDirectiveThirdParty js_maxmem
|
|
||||||
syn keyword ngxDirectiveThirdParty js_require
|
|
||||||
syn keyword ngxDirectiveThirdParty js_set
|
|
||||||
syn keyword ngxDirectiveThirdParty js_utf8
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Push Module (DEPRECATED) <http://pushmodule.slact.net/>
|
|
||||||
" Turn Nginx into an adept long-polling HTTP Push (Comet) server.
|
|
||||||
syn keyword ngxDirectiveDeprecated push_buffer_size
|
|
||||||
syn keyword ngxDirectiveDeprecated push_listener
|
|
||||||
syn keyword ngxDirectiveDeprecated push_message_timeout
|
|
||||||
syn keyword ngxDirectiveDeprecated push_queue_messages
|
|
||||||
syn keyword ngxDirectiveDeprecated push_sender
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" HTTP Redis Module <https://www.nginx.com/resources/wiki/modules/redis/>
|
|
||||||
" Redis <http://code.google.com/p/redis/> support.
|
|
||||||
syn keyword ngxDirectiveThirdParty redis_bind
|
|
||||||
syn keyword ngxDirectiveThirdParty redis_buffer_size
|
|
||||||
syn keyword ngxDirectiveThirdParty redis_connect_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty redis_next_upstream
|
|
||||||
syn keyword ngxDirectiveThirdParty redis_pass
|
|
||||||
syn keyword ngxDirectiveThirdParty redis_read_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty redis_send_timeout
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Iconv Module <https://github.com/calio/iconv-nginx-module>
|
|
||||||
" A character conversion nginx module using libiconv
|
|
||||||
syn keyword ngxDirectiveThirdParty set_iconv
|
|
||||||
syn keyword ngxDirectiveThirdParty iconv_buffer_size
|
|
||||||
syn keyword ngxDirectiveThirdParty iconv_filter
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" IP Blocker Module <https://github.com/tmthrgd/nginx-ip-blocker>
|
|
||||||
" An efficient shared memory IP blocking system for nginx.
|
|
||||||
syn keyword ngxDirectiveThirdParty ip_blocker
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" IP2Location Module <https://github.com/chrislim2888/ip2location-nginx>
|
|
||||||
" Allows user to lookup for geolocation information using IP2Location database
|
|
||||||
syn keyword ngxDirectiveThirdParty ip2location_database
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" JS Module <https://github.com/peter-leonov/ngx_http_js_module>
|
|
||||||
" Reflect the nginx functionality in JS
|
|
||||||
syn keyword ngxDirectiveThirdParty js
|
|
||||||
syn keyword ngxDirectiveThirdParty js_access
|
|
||||||
syn keyword ngxDirectiveThirdParty js_load
|
|
||||||
syn keyword ngxDirectiveThirdParty js_set
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Limit Upload Rate Module <https://github.com/cfsego/limit_upload_rate>
|
|
||||||
" Limit client-upload rate when they are sending request bodies to you
|
|
||||||
syn keyword ngxDirectiveThirdParty limit_upload_rate
|
|
||||||
syn keyword ngxDirectiveThirdParty limit_upload_rate_after
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Limit Upstream Module <https://github.com/cfsego/nginx-limit-upstream>
|
|
||||||
" Limit the number of connections to upstream for NGINX
|
|
||||||
syn keyword ngxDirectiveThirdParty limit_upstream_zone
|
|
||||||
syn keyword ngxDirectiveThirdParty limit_upstream_conn
|
|
||||||
syn keyword ngxDirectiveThirdParty limit_upstream_log_level
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Log If Module <https://github.com/cfsego/ngx_log_if>
|
|
||||||
" Conditional accesslog for nginx
|
|
||||||
syn keyword ngxDirectiveThirdParty access_log_bypass_if
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Log Request Speed (DEPRECATED) <http://wiki.nginx.org/NginxHttpLogRequestSpeed>
|
|
||||||
" Log the time it took to process each request.
|
|
||||||
syn keyword ngxDirectiveDeprecated log_request_speed_filter
|
|
||||||
syn keyword ngxDirectiveDeprecated log_request_speed_filter_timeout
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Log ZeroMQ Module <https://github.com/alticelabs/nginx-log-zmq>
|
|
||||||
" ZeroMQ logger module for nginx
|
|
||||||
syn keyword ngxDirectiveThirdParty log_zmq_server
|
|
||||||
syn keyword ngxDirectiveThirdParty log_zmq_endpoint
|
|
||||||
syn keyword ngxDirectiveThirdParty log_zmq_format
|
|
||||||
syn keyword ngxDirectiveThirdParty log_zmq_off
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Lower/UpperCase Module <https://github.com/replay/ngx_http_lower_upper_case>
|
|
||||||
" This module simply uppercases or lowercases a string and saves it into a new variable.
|
|
||||||
syn keyword ngxDirectiveThirdParty lower
|
|
||||||
syn keyword ngxDirectiveThirdParty upper
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Lua Upstream Module <https://github.com/openresty/lua-upstream-nginx-module>
|
|
||||||
" Nginx C module to expose Lua API to ngx_lua for Nginx upstreams
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Lua Module <https://github.com/openresty/lua-nginx-module>
|
|
||||||
" Embed the Power of Lua into NGINX HTTP servers
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_use_default_type
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_malloc_trim
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_code_cache
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_regex_cache_max_entries
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_regex_match_limit
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_package_path
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_package_cpath
|
|
||||||
syn keyword ngxDirectiveThirdParty init_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty init_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty init_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty init_worker_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty init_worker_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty init_worker_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty set_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty set_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty set_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty content_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty content_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty content_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty access_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty access_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty access_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty header_filter_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty header_filter_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty header_filter_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty body_filter_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty body_filter_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty body_filter_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty log_by_lua
|
|
||||||
syn keyword ngxDirectiveThirdParty log_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty log_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty balancer_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty balancer_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_need_request_body
|
|
||||||
syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty ssl_session_fetch_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty ssl_session_fetch_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty ssl_session_store_by_lua_block
|
|
||||||
syn keyword ngxDirectiveThirdParty ssl_session_store_by_lua_file
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_shared_dict
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_connect_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_send_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_send_lowat
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_read_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_buffer_size
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_pool_size
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_keepalive_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_socket_log_errors
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_ssl_ciphers
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_ssl_crl
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_ssl_protocols
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_ssl_trusted_certificate
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_ssl_verify_depth
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_http10_buffering
|
|
||||||
syn keyword ngxDirectiveThirdParty rewrite_by_lua_no_postpone
|
|
||||||
syn keyword ngxDirectiveThirdParty access_by_lua_no_postpone
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_transform_underscores_in_response_headers
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_check_client_abort
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_max_pending_timers
|
|
||||||
syn keyword ngxDirectiveThirdParty lua_max_running_timers
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" MD5 Filter Module <https://github.com/kainswor/nginx_md5_filter>
|
|
||||||
" A content filter for nginx, which returns the md5 hash of the content otherwise returned.
|
|
||||||
syn keyword ngxDirectiveThirdParty md5_filter
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Memc Module <https://github.com/openresty/memc-nginx-module>
|
|
||||||
" An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_buffer_size
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_cmds_allowed
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_connect_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_flags_to_last_modified
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_next_upstream
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_pass
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_read_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_send_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_upstream_fail_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty memc_upstream_max_fails
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Mod Security Module <https://github.com/SpiderLabs/ModSecurity>
|
|
||||||
" ModSecurity is an open source, cross platform web application firewall (WAF) engine
|
|
||||||
syn keyword ngxDirectiveThirdParty ModSecurityConfig
|
|
||||||
syn keyword ngxDirectiveThirdParty ModSecurityEnabled
|
|
||||||
syn keyword ngxDirectiveThirdParty pool_context
|
|
||||||
syn keyword ngxDirectiveThirdParty pool_context_hash_size
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Mogilefs Module <http://www.grid.net.ru/nginx/mogilefs.en.html>
|
|
||||||
" MogileFS client for nginx web server.
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_pass
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_methods
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_domain
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_class
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_tracker
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_noverify
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_connect_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_send_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty mogilefs_read_timeout
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" Mongo Module <https://github.com/simpl/ngx_mongo>
|
|
||||||
" Upstream module that allows nginx to communicate directly with MongoDB database.
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_auth
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_pass
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_query
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_json
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_bind
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_connect_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_send_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_read_timeout
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_buffering
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_buffer_size
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_buffers
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_busy_buffers_size
|
|
||||||
syn keyword ngxDirectiveThirdParty mongo_next_upstream
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" MP4 Streaming Lite Module <https://www.nginx.com/resources/wiki/modules/mp4_streaming/>
|
|
||||||
" Will seek to a certain time within H.264/MP4 files when provided with a 'start' parameter in the URL.
|
|
||||||
" syn keyword ngxDirectiveThirdParty mp4
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nginx') == -1
|
|
||||||
|
|
||||||
" NAXSI Module <https://github.com/nbs-system/naxsi>
|
|
||||||
" NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX
|
|
||||||
syn keyword ngxDirectiveThirdParty DeniedUrl denied_url
|
|
||||||
syn keyword ngxDirectiveThirdParty LearningMode learning_mode
|
|
||||||
syn keyword ngxDirectiveThirdParty SecRulesEnabled rules_enabled
|
|
||||||
syn keyword ngxDirectiveThirdParty SecRulesDisabled rules_disabled
|
|
||||||
syn keyword ngxDirectiveThirdParty CheckRule check_rule
|
|
||||||
syn keyword ngxDirectiveThirdParty BasicRule basic_rule
|
|
||||||
syn keyword ngxDirectiveThirdParty MainRule main_rule
|
|
||||||
syn keyword ngxDirectiveThirdParty LibInjectionSql libinjection_sql
|
|
||||||
syn keyword ngxDirectiveThirdParty LibInjectionXss libinjection_xss
|
|
||||||
|
|
||||||
|
|
||||||
endif
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user