summaryrefslogtreecommitdiffstats
path: root/indent/svelte.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2019-09-04 15:44:43 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2019-09-04 15:44:43 +0200
commit664aa988f6d9cdb7b75218666fbe348c85ef8b29 (patch)
tree306173199576430e6133a1ed137bd80bbc2fb01b /indent/svelte.vim
parent3ddca5da461ebfaa82104f82e3cbf19d1c326ade (diff)
downloadvim-polyglot-664aa988f6d9cdb7b75218666fbe348c85ef8b29.tar.gz
vim-polyglot-664aa988f6d9cdb7b75218666fbe348c85ef8b29.zip
Update
Diffstat (limited to 'indent/svelte.vim')
-rw-r--r--indent/svelte.vim76
1 files changed, 48 insertions, 28 deletions
diff --git a/indent/svelte.vim b/indent/svelte.vim
index 0b3c732f..ef0569ed 100644
--- a/indent/svelte.vim
+++ b/indent/svelte.vim
@@ -18,6 +18,14 @@ unlet! b:did_indent
let s:html_indent = &l:indentexpr
let b:did_indent = 1
+if !exists('g:svelte_indent_script')
+ let g:svelte_indent_script = 1
+endif
+
+if !exists('g:svelte_indent_style')
+ let g:svelte_indent_style = 1
+endif
+
setlocal indentexpr=GetSvelteIndent()
setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],!^F,;,=:else,=:then,=:catch,=/if,=/each,=/await
@@ -44,9 +52,21 @@ function! GetSvelteIndent()
let previous_line = getline(previous_line_number)
let previous_line_indent = indent(previous_line_number)
- " The inside of scripts an styles should be indented.
- if previous_line =~ '^<\(script\|style\)'
- return shiftwidth()
+ " The inside of scripts an styles should be indented unless disabled.
+ if previous_line =~ '^\s*<script'
+ if g:svelte_indent_script
+ return previous_line_indent + shiftwidth()
+ else
+ return previous_line_indent
+ endif
+ endif
+
+ if previous_line =~ '^\s*<style'
+ if g:svelte_indent_style
+ return previous_line_indent + shiftwidth()
+ else
+ return previous_line_indent
+ endif
endif
execute "let indent = " . s:html_indent
@@ -57,31 +77,6 @@ function! GetSvelteIndent()
return previous_line_indent
endif
- " "#if" or "#each"
- if previous_line =~ '^\s*{\s*#\(if\|each\|await\)'
- return previous_line_indent + shiftwidth()
- endif
-
- " ":else" or ":then"
- if previous_line =~ '^\s*{\s*:\(else\|catch\|then\)'
- return previous_line_indent + shiftwidth()
- endif
-
- " Custom element juggling for abnormal self-closing tags (<Widget />),
- " capitalized component tags (<Widget></Widget>), and custom svelte tags
- " (<svelte:head></svelte:head>).
- if synID(previous_line_number, match(previous_line, '\S') + 1, 0) == hlID('htmlTag')
- \ && synID(current_line_number, match(current_line, '\S') + 1, 0) != hlID('htmlEndTag')
- let indents_match = indent == previous_line_indent
- let previous_closes = previous_line =~ '/>$'
-
- if indents_match && !previous_closes && previous_line =~ '<\(\u\|\l\+:\l\+\)'
- return previous_line_indent + shiftwidth()
- elseif !indents_match && previous_closes
- return previous_line_indent
- endif
- endif
-
" "/await" or ":catch" or ":then"
if current_line =~ '^\s*{\s*\/await' || current_line =~ '^\s*{\s*:\(catch\|then\)'
let await_start = searchpair('{\s*#await\>', '', '{\s*\/await\>', 'bW')
@@ -124,5 +119,30 @@ function! GetSvelteIndent()
endif
endif
+ " "#if" or "#each"
+ if previous_line =~ '^\s*{\s*#\(if\|each\|await\)'
+ return previous_line_indent + shiftwidth()
+ endif
+
+ " ":else" or ":then"
+ if previous_line =~ '^\s*{\s*:\(else\|catch\|then\)'
+ return previous_line_indent + shiftwidth()
+ endif
+
+ " Custom element juggling for abnormal self-closing tags (<Widget />),
+ " capitalized component tags (<Widget></Widget>), and custom svelte tags
+ " (<svelte:head></svelte:head>).
+ if synID(previous_line_number, match(previous_line, '\S') + 1, 0) == hlID('htmlTag')
+ \ && synID(current_line_number, match(current_line, '\S') + 1, 0) != hlID('htmlEndTag')
+ let indents_match = indent == previous_line_indent
+ let previous_closes = previous_line =~ '/>$'
+
+ if indents_match && !previous_closes && previous_line =~ '<\(\u\|\l\+:\l\+\)'
+ return previous_line_indent + shiftwidth()
+ elseif !indents_match && previous_closes
+ return previous_line_indent
+ endif
+ endif
+
return indent
endfunction