mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 20:13:51 -05:00
Set indentation only locally, fixes #564
This commit is contained in:
@@ -276,12 +276,14 @@ function! elixir#indent#handle_inside_block(context)
|
|||||||
" hack - handle do: better
|
" hack - handle do: better
|
||||||
let block_info = searchpairpos(start_pattern, '', end_pattern, 'bnW', "line('.') == " . line('.') . " || elixir#indent#searchpair_back_skip() || getline(line('.')) =~ 'do:'", max([0, a:context.lnum - g:elixir_indent_max_lookbehind]))
|
let block_info = searchpairpos(start_pattern, '', end_pattern, 'bnW', "line('.') == " . line('.') . " || elixir#indent#searchpair_back_skip() || getline(line('.')) =~ 'do:'", max([0, a:context.lnum - g:elixir_indent_max_lookbehind]))
|
||||||
let block_start_lnum = block_info[0]
|
let block_start_lnum = block_info[0]
|
||||||
|
call s:debug("block_start_lnum=" . block_start_lnum)
|
||||||
let block_start_col = block_info[1]
|
let block_start_col = block_info[1]
|
||||||
if block_start_lnum != 0 || block_start_col != 0
|
if block_start_lnum != 0 || block_start_col != 0
|
||||||
let block_text = getline(block_start_lnum)
|
let block_text = getline(block_start_lnum)
|
||||||
let block_start_char = block_text[block_start_col - 1]
|
let block_start_char = block_text[block_start_col - 1]
|
||||||
|
call s:debug("block_start_char=" . block_start_char)
|
||||||
|
|
||||||
let never_match = '\(a\)\@=b'
|
let never_match = ''
|
||||||
let config = {
|
let config = {
|
||||||
\'f': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
|
\'f': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
|
||||||
\'c': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
|
\'c': {'aligned_clauses': s:keyword('end'), 'pattern_match_clauses': never_match},
|
||||||
@@ -293,17 +295,25 @@ function! elixir#indent#handle_inside_block(context)
|
|||||||
\'(': {'aligned_clauses': ')', 'pattern_match_clauses': never_match}
|
\'(': {'aligned_clauses': ')', 'pattern_match_clauses': never_match}
|
||||||
\}
|
\}
|
||||||
|
|
||||||
|
" if `with` clause...
|
||||||
if block_start_char == 'w'
|
if block_start_char == 'w'
|
||||||
call s:debug("testing s:handle_with")
|
call s:debug("testing s:handle_with")
|
||||||
return s:handle_with(block_start_lnum, block_start_col, a:context)
|
return s:handle_with(block_start_lnum, block_start_col, a:context)
|
||||||
else
|
else
|
||||||
let block_config = config[block_start_char]
|
let block_config = config[block_start_char]
|
||||||
|
" if aligned clause (closing tag/`else` clause/etc...) then indent this
|
||||||
|
" at the same level as the block open tag (e.g. `if`/`case`/etc...)
|
||||||
if s:starts_with(a:context, block_config.aligned_clauses)
|
if s:starts_with(a:context, block_config.aligned_clauses)
|
||||||
call s:debug("clause")
|
call s:debug("clause")
|
||||||
return indent(block_start_lnum)
|
return indent(block_start_lnum)
|
||||||
|
else
|
||||||
|
if block_config.pattern_match_clauses == never_match
|
||||||
|
let relative_lnum = block_start_lnum
|
||||||
else
|
else
|
||||||
let clause_lnum = searchpair(block_config.pattern_match_clauses, '', '*', 'bnW', "line('.') == " . line('.') . " || elixir#indent#searchpair_back_skip()", block_start_lnum)
|
let clause_lnum = searchpair(block_config.pattern_match_clauses, '', '*', 'bnW', "line('.') == " . line('.') . " || elixir#indent#searchpair_back_skip()", block_start_lnum)
|
||||||
|
call s:debug("clause_lum=" . clause_lnum)
|
||||||
let relative_lnum = max([clause_lnum, block_start_lnum])
|
let relative_lnum = max([clause_lnum, block_start_lnum])
|
||||||
|
end
|
||||||
call s:debug("pattern matching relative to lnum " . relative_lnum)
|
call s:debug("pattern matching relative to lnum " . relative_lnum)
|
||||||
return s:do_handle_pattern_match_block(relative_lnum, a:context)
|
return s:do_handle_pattern_match_block(relative_lnum, a:context)
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -596,7 +596,7 @@ if !has_key(s:disabled_packages, 'autoindent')
|
|||||||
|
|
||||||
if line[0] == "\t"
|
if line[0] == "\t"
|
||||||
setlocal noexpandtab
|
setlocal noexpandtab
|
||||||
let &shiftwidth=&tabstop
|
let &l:shiftwidth=&tabstop
|
||||||
let b:sleuth_culprit .= ':' . i
|
let b:sleuth_culprit .= ':' . i
|
||||||
return 1
|
return 1
|
||||||
elseif line[0] == " "
|
elseif line[0] == " "
|
||||||
@@ -609,7 +609,7 @@ if !has_key(s:disabled_packages, 'autoindent')
|
|||||||
|
|
||||||
if minindent < 10
|
if minindent < 10
|
||||||
setlocal expandtab
|
setlocal expandtab
|
||||||
let &shiftwidth=minindent
|
let &l:shiftwidth=minindent
|
||||||
let b:sleuth_culprit .= ':' . i
|
let b:sleuth_culprit .= ':' . i
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -2132,7 +2132,7 @@ if !has_key(s:disabled_packages, 'autoindent')
|
|||||||
|
|
||||||
if line[0] == "\t"
|
if line[0] == "\t"
|
||||||
setlocal noexpandtab
|
setlocal noexpandtab
|
||||||
let &shiftwidth=&tabstop
|
let &l:shiftwidth=&tabstop
|
||||||
let b:sleuth_culprit .= ':' . i
|
let b:sleuth_culprit .= ':' . i
|
||||||
return 1
|
return 1
|
||||||
elseif line[0] == " "
|
elseif line[0] == " "
|
||||||
@@ -2145,7 +2145,7 @@ if !has_key(s:disabled_packages, 'autoindent')
|
|||||||
|
|
||||||
if minindent < 10
|
if minindent < 10
|
||||||
setlocal expandtab
|
setlocal expandtab
|
||||||
let &shiftwidth=minindent
|
let &l:shiftwidth=minindent
|
||||||
let b:sleuth_culprit .= ':' . i
|
let b:sleuth_culprit .= ':' . i
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ if !has_key(s:disabled_packages, 'autoindent')
|
|||||||
|
|
||||||
if line[0] == "\t"
|
if line[0] == "\t"
|
||||||
setlocal noexpandtab
|
setlocal noexpandtab
|
||||||
let &shiftwidth=&tabstop
|
let &l:shiftwidth=&tabstop
|
||||||
let b:sleuth_culprit .= ':' . i
|
let b:sleuth_culprit .= ':' . i
|
||||||
return 1
|
return 1
|
||||||
elseif line[0] == " "
|
elseif line[0] == " "
|
||||||
@@ -281,7 +281,7 @@ if !has_key(s:disabled_packages, 'autoindent')
|
|||||||
|
|
||||||
if minindent < 10
|
if minindent < 10
|
||||||
setlocal expandtab
|
setlocal expandtab
|
||||||
let &shiftwidth=minindent
|
let &l:shiftwidth=minindent
|
||||||
let b:sleuth_culprit .= ':' . i
|
let b:sleuth_culprit .= ':' . i
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ syntax cluster typescriptPrimaryType contains=
|
|||||||
\ typescriptTupleType,
|
\ typescriptTupleType,
|
||||||
\ typescriptTypeQuery,
|
\ typescriptTypeQuery,
|
||||||
\ typescriptStringLiteralType,
|
\ typescriptStringLiteralType,
|
||||||
|
\ typescriptTemplateLiteralType,
|
||||||
\ typescriptReadonlyArrayKeyword,
|
\ typescriptReadonlyArrayKeyword,
|
||||||
\ typescriptAssertType
|
\ typescriptAssertType
|
||||||
|
|
||||||
@@ -64,6 +65,17 @@ syntax region typescriptStringLiteralType contained
|
|||||||
\ nextgroup=typescriptUnion
|
\ nextgroup=typescriptUnion
|
||||||
\ skipwhite skipempty
|
\ skipwhite skipempty
|
||||||
|
|
||||||
|
syntax region typescriptTemplateLiteralType contained
|
||||||
|
\ start=/`/ skip=/\\\\\|\\`\|\n/ end=/`\|$/
|
||||||
|
\ contains=typescriptTemplateSubstitutionType
|
||||||
|
\ nextgroup=typescriptTypeOperator
|
||||||
|
\ skipwhite skipempty
|
||||||
|
|
||||||
|
syntax region typescriptTemplateSubstitutionType matchgroup=typescriptTemplateSB
|
||||||
|
\ start=/\${/ end=/}/
|
||||||
|
\ contains=@typescriptType
|
||||||
|
\ contained
|
||||||
|
|
||||||
syntax region typescriptParenthesizedType matchgroup=typescriptParens
|
syntax region typescriptParenthesizedType matchgroup=typescriptParens
|
||||||
\ start=/(/ end=/)/
|
\ start=/(/ end=/)/
|
||||||
\ contains=@typescriptType
|
\ contains=@typescriptType
|
||||||
@@ -103,10 +115,12 @@ syntax region typescriptTupleType matchgroup=typescriptBraces
|
|||||||
\ contained skipwhite
|
\ contained skipwhite
|
||||||
|
|
||||||
syntax cluster typescriptTypeOperator
|
syntax cluster typescriptTypeOperator
|
||||||
\ contains=typescriptUnion,typescriptTypeBracket
|
\ contains=typescriptUnion,typescriptTypeBracket,typescriptConstraint,typescriptConditionalType
|
||||||
|
|
||||||
syntax match typescriptUnion /|\|&/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
|
syntax match typescriptUnion /|\|&/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
|
||||||
|
|
||||||
|
syntax match typescriptConditionalType /?\|:/ contained nextgroup=@typescriptPrimaryType skipwhite skipempty
|
||||||
|
|
||||||
syntax cluster typescriptFunctionType contains=typescriptGenericFunc,typescriptFuncType
|
syntax cluster typescriptFunctionType contains=typescriptGenericFunc,typescriptFuncType
|
||||||
syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
|
syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
|
||||||
\ start=/</ end=/>/
|
\ start=/</ end=/>/
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ if exists("did_typescript_hilink")
|
|||||||
HiLink typescriptString String
|
HiLink typescriptString String
|
||||||
HiLink typescriptSpecial Special
|
HiLink typescriptSpecial Special
|
||||||
HiLink typescriptStringLiteralType String
|
HiLink typescriptStringLiteralType String
|
||||||
|
HiLink typescriptTemplateLiteralType String
|
||||||
HiLink typescriptStringMember String
|
HiLink typescriptStringMember String
|
||||||
HiLink typescriptTemplate String
|
HiLink typescriptTemplate String
|
||||||
HiLink typescriptEventString String
|
HiLink typescriptEventString String
|
||||||
|
|||||||
@@ -20,10 +20,6 @@ syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
|
|||||||
|
|
||||||
syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable
|
syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>' contains=elixirUnusedVariable
|
||||||
|
|
||||||
syn match elixirFunctionCall '\<[a-z_]\w*[!?]\?\(\s*\.\?\s*(\|\s\+[a-zA-Z0-9@:\'\"\[]\)\@='
|
|
||||||
syn match elixirFunctionCall '\(:\w\+\s*\.\s*\|[A-Z]\w*\s*\.\s*\)\@<=[a-z_]\w*[!?]\?'
|
|
||||||
syn match elixirFunctionCall '\(>\s+\)\<[a-z_]\w*[!?]\?'
|
|
||||||
|
|
||||||
syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|after\|raise\|rescue\|catch\|else\|quote\|unquote\|super\|unquote_splicing\)\>:\@!'
|
syn match elixirKeyword '\(\.\)\@<!\<\(for\|case\|when\|with\|cond\|if\|unless\|try\|receive\|after\|raise\|rescue\|catch\|else\|quote\|unquote\|super\|unquote_splicing\)\>:\@!'
|
||||||
|
|
||||||
syn keyword elixirInclude import require alias use
|
syn keyword elixirInclude import require alias use
|
||||||
@@ -48,7 +44,7 @@ syn match elixirOperator '\~>\|\~>>\|<\~\|<<\~\|<\~>'
|
|||||||
|
|
||||||
syn match elixirAlias '\([a-z]\)\@<![A-Z]\w*\%(\.[A-Z]\w*\)*'
|
syn match elixirAlias '\([a-z]\)\@<![A-Z]\w*\%(\.[A-Z]\w*\)*'
|
||||||
|
|
||||||
syn match elixirAtom '\(:\)\@<!:\%([a-zA-Z_]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)'
|
syn match elixirAtom '\(:\)\@<!:\%([a-zA-Z_*]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)'
|
||||||
syn match elixirAtom '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)'
|
syn match elixirAtom '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)'
|
||||||
syn match elixirAtom "\%([a-zA-Z_]\w*[?!]\?\):\(:\)\@!"
|
syn match elixirAtom "\%([a-zA-Z_]\w*[?!]\?\):\(:\)\@!"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user