summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rw-r--r--autoload/go/config.vim3
-rw-r--r--autoload/jsx_pretty/comment.vim4
-rw-r--r--autoload/jsx_pretty/indent.vim14
-rwxr-xr-xbuild1
-rw-r--r--ftdetect/polyglot.vim7
-rw-r--r--ftplugin/rst.vim2
-rw-r--r--indent/svelte.vim128
-rw-r--r--syntax/svelte.vim61
-rw-r--r--syntax/zig.vim2
10 files changed, 213 insertions, 12 deletions
diff --git a/README.md b/README.md
index 925fc877..3540b830 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,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.
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
-- It **installs and updates 120+ times faster** than the <!--Package Count-->143<!--/Package Count--> packages it consists of.
+- It **installs and updates 120+ times faster** than the <!--Package Count-->144<!--/Package Count--> packages it consists of.
- Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support).
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
@@ -162,6 +162,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [solidity](https://github.com/tomlion/vim-solidity) (syntax, indent, ftplugin)
- [styled-components](https://github.com/styled-components/vim-styled-components#main) (syntax, indent, ftplugin)
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin)
+- [svelte](https://github.com/evanleck/vim-svelte) (syntax, indent)
- [svg-indent](https://github.com/jasonshell/vim-svg-indent) (indent)
- [svg](https://github.com/vim-scripts/svg.vim) (syntax)
- [swift](https://github.com/keith/swift.vim) (syntax, indent, ftplugin)
diff --git a/autoload/go/config.vim b/autoload/go/config.vim
index e3f7ba41..4eff6f6f 100644
--- a/autoload/go/config.vim
+++ b/autoload/go/config.vim
@@ -182,6 +182,9 @@ function! go#config#DocUrl() abort
return godoc_url
endfunction
+function! go#config#DocPopupWindow() abort
+ return get(g:, 'go_doc_popup_window', 0)
+endfunction
function! go#config#DefReuseBuffer() abort
return get(g:, 'go_def_reuse_buffer', 0)
endfunction
diff --git a/autoload/jsx_pretty/comment.vim b/autoload/jsx_pretty/comment.vim
index d5d58f5d..639e55b9 100644
--- a/autoload/jsx_pretty/comment.vim
+++ b/autoload/jsx_pretty/comment.vim
@@ -7,7 +7,7 @@ function! jsx_pretty#comment#update_commentstring(original)
let syn_start = s:syn_name(line('.'), 1)
let save_cursor = getcurpos()
- if syn_start =~ '^jsx'
+ if syn_start =~? '^jsx'
let line = getline(".")
let start = len(matchstr(line, '^\s*'))
let syn_name = s:syn_name(line('.'), start + 1)
@@ -16,7 +16,7 @@ function! jsx_pretty#comment#update_commentstring(original)
let &l:commentstring = '// %s'
elseif s:syn_contains(line('.'), col('.'), 'jsxTaggedRegion')
let &l:commentstring = '<!-- %s -->'
- elseif syn_name =~ '^jsxAttrib'
+ elseif syn_name =~? '^jsxAttrib'
let &l:commentstring = '// %s'
else
let &l:commentstring = '{/* %s */}'
diff --git a/autoload/jsx_pretty/indent.vim b/autoload/jsx_pretty/indent.vim
index a4e7a839..9dd0e5b1 100644
--- a/autoload/jsx_pretty/indent.vim
+++ b/autoload/jsx_pretty/indent.vim
@@ -37,7 +37,7 @@ function! s:prev_line(lnum)
endfunction
function! s:syn_attr_jsx(synattr)
- return a:synattr =~ "^jsx"
+ return a:synattr =~? "^jsx"
endfunction
function! s:syn_xmlish(syns)
@@ -45,21 +45,21 @@ function! s:syn_xmlish(syns)
endfunction
function! s:syn_jsx_element(syns)
- return get(a:syns, -1) =~ 'jsxElement'
+ return get(a:syns, -1) =~? 'jsxElement'
endfunction
function! s:syn_js_comment(syns)
- return get(a:syns, -1) =~ 'Comment$'
+ return get(a:syns, -1) =~? 'Comment$'
endfunction
function! s:syn_jsx_escapejs(syns)
- return get(a:syns, -1) =~ '\(\(js\(Template\)\?\|javaScript\(Embed\)\?\|typescript\)Braces\|javascriptTemplateSB\|typescriptInterpolationDelimiter\)' &&
- \ (get(a:syns, -2) =~ 'jsxEscapeJs' ||
- \ get(a:syns, -3) =~ 'jsxEscapeJs')
+ return get(a:syns, -1) =~? '\(\(js\(Template\)\?\|javaScript\(Embed\)\?\|typescript\)Braces\|javascriptTemplateSB\|typescriptInterpolationDelimiter\)' &&
+ \ (get(a:syns, -2) =~? 'jsxEscapeJs' ||
+ \ get(a:syns, -3) =~? 'jsxEscapeJs')
endfunction
function! s:syn_jsx_attrib(syns)
- return len(filter(copy(a:syns), 'v:val =~ "jsxAttrib"'))
+ return len(filter(copy(a:syns), 'v:val =~? "jsxAttrib"'))
endfunction
let s:start_tag = '<\s*\([-:_\.\$0-9A-Za-z]\+\|>\)'
diff --git a/build b/build
index a2a720e7..761dc121 100755
--- a/build
+++ b/build
@@ -272,6 +272,7 @@ PACKS="
solidity:tomlion/vim-solidity
styled-components:styled-components/vim-styled-components#main
stylus:wavded/vim-stylus
+ svelte:evanleck/vim-svelte
svg-indent:jasonshell/vim-svg-indent
svg:vim-scripts/svg.vim
swift:keith/swift.vim
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index 7300fc1f..6854f34f 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -1313,6 +1313,13 @@ autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
augroup end
endif
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'svelte') == -1
+ augroup filetypedetect
+ " svelte, from svelte.vim in evanleck/vim-svelte
+au BufRead,BufNewFile *.svelte setfiletype svelte
+ augroup end
+endif
+
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'sxhkd') == -1
augroup filetypedetect
" sxhkd, from sxhkdrc.vim in baskerville/vim-sxhkdrc
diff --git a/ftplugin/rst.vim b/ftplugin/rst.vim
index 3c1e9032..064bd88e 100644
--- a/ftplugin/rst.vim
+++ b/ftplugin/rst.vim
@@ -38,7 +38,7 @@ if exists("g:rst_style") && g:rst_style != 0
setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8
endif
-if has('patch-7.3.867') " Introduced the TextChanged event.
+if g:rst_fold_enabled != 0 && has('patch-7.3.867') " Introduced the TextChanged event.
setlocal foldmethod=expr
setlocal foldexpr=RstFold#GetRstFold()
setlocal foldtext=RstFold#GetRstFoldText()
diff --git a/indent/svelte.vim b/indent/svelte.vim
new file mode 100644
index 00000000..0b3c732f
--- /dev/null
+++ b/indent/svelte.vim
@@ -0,0 +1,128 @@
+if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'svelte') != -1
+ finish
+endif
+
+" Vim indent file
+" Language: Svelte 3 (HTML/JavaScript)
+" Author: Evan Lecklider <evan@lecklider.com>
+" Maintainer: Evan Lecklide <evan@lecklider.com>
+" URL: https://github.com/evanleck/vim-svelte
+
+if exists("b:did_indent")
+ finish
+endif
+
+runtime! indent/html.vim
+unlet! b:did_indent
+
+let s:html_indent = &l:indentexpr
+let b:did_indent = 1
+
+setlocal indentexpr=GetSvelteIndent()
+setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],!^F,;,=:else,=:then,=:catch,=/if,=/each,=/await
+
+" Only define the function once.
+if exists('*GetSvelteIndent')
+ finish
+endif
+
+function! GetSvelteIndent()
+ let current_line_number = v:lnum
+
+ if current_line_number == 0
+ return 0
+ endif
+
+ let current_line = getline(current_line_number)
+
+ " Opening script and style tags should be all the way outdented.
+ if current_line =~ '^\s*</\?\(script\|style\)'
+ return 0
+ endif
+
+ let previous_line_number = prevnonblank(current_line_number - 1)
+ 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()
+ endif
+
+ execute "let indent = " . s:html_indent
+
+ " For some reason, the HTML CSS indentation keeps indenting the next line over
+ " and over after each style declaration.
+ if searchpair('<style>', '', '</style>', 'bW') && previous_line =~ ';$' && current_line !~ '}'
+ 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')
+
+ if await_start
+ return indent(await_start)
+ endif
+ endif
+
+ " "/each"
+ if current_line =~ '^\s*{\s*\/each'
+ let each_start = searchpair('{\s*#each\>', '', '{\s*\/each\>', 'bW')
+
+ if each_start
+ return indent(each_start)
+ endif
+ endif
+
+ " "/if"
+ if current_line =~ '^\s*{\s*\/if'
+ let if_start = searchpair('{\s*#if\>', '', '{\s*\/if\>', 'bW')
+
+ if if_start
+ return indent(if_start)
+ endif
+ endif
+
+ " ":else" is tricky because it can match an opening "#each" _or_ an opening
+ " "#if", so we try to be smart and look for the closest of the two.
+ if current_line =~ '^\s*{\s*:else'
+ let if_start = searchpair('{\s*#if\>', '', '{\s*\/if\>', 'bW')
+
+ " If it's an "else if" then we know to look for an "#if"
+ if current_line =~ '^\s*{\s*:else if' && if_start
+ return indent(if_start)
+ else
+ " The greater line number will be closer to the cursor position because
+ " we're searching backward.
+ return indent(max([if_start, searchpair('{\s*#each\>', '', '{\s*\/each\>', 'bW')]))
+ endif
+ endif
+
+ return indent
+endfunction
diff --git a/syntax/svelte.vim b/syntax/svelte.vim
new file mode 100644
index 00000000..e119d605
--- /dev/null
+++ b/syntax/svelte.vim
@@ -0,0 +1,61 @@
+if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'svelte') != -1
+ finish
+endif
+
+" Vim syntax file
+" Language: Svelte 3 (HTML/JavaScript)
+" Author: Evan Lecklider <evan@lecklider.com>
+" Maintainer: Evan Lecklide <evan@lecklider.com>
+" Depends: pangloss/vim-javascript
+" URL: https://github.com/evanleck/vim-svelte
+"
+" Like vim-jsx, this depends on the pangloss/vim-javascript syntax package (and
+" is tested against it exclusively). If you're using vim-polyglot (like I am),
+" then you're all set.
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read HTML to begin with.
+runtime! syntax/html.vim
+unlet! b:current_syntax
+
+" Expand HTML tag names to include mixed case, periods, and colons.
+syntax match htmlTagName contained "\<[a-zA-Z:\.]*\>"
+
+" Special attributes that include some kind of binding e.g. "on:click",
+" "bind:something", etc.
+syntax match svelteKeyword "\<[a-z]\+:[a-zA-Z|]\+=" contained containedin=htmlTag
+
+" The "slot" attribute has special meaning.
+syntax keyword svelteKeyword slot contained containedin=htmlTag
+
+" According to vim-jsx, you can let jsBlock take care of ending the region.
+" https://github.com/mxw/vim-jsx/blob/master/after/syntax/jsx.vim
+"
+" ALLBUT,htmlSpecialTagName keeps Vim from marking CSS regions as jsBlock.
+syntax region svelteExpression start="{" end="" contains=jsBlock,javascriptBlock containedin=htmlString,htmlTag,htmlArg,htmlValue,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,htmlHead,htmlTitle,htmlBoldItalicUnderline,htmlUnderlineBold,htmlUnderlineItalicBold,htmlUnderlineBoldItalic,htmlItalicUnderline,htmlItalicBold,htmlItalicBoldUnderline,htmlItalicUnderlineBold,htmlLink,htmlLeadingSpace,htmlBold,htmlBoldUnderline,htmlBoldItalic,htmlBoldUnderlineItalic,htmlUnderline,htmlUnderlineItalic,htmlItalic,htmlStrike,javaScript
+
+" Block conditionals.
+syntax match svelteConditional "#if" contained containedin=jsBlock,javascriptBlock
+syntax match svelteConditional "/if" contained containedin=jsBlock,javascriptBlock
+syntax match svelteConditional ":else if" contained containedin=jsBlock,javascriptBlock
+syntax match svelteConditional ":else" contained containedin=jsBlock,javascriptBlock
+
+" Block keywords.
+syntax match svelteKeyword "#await" contained containedin=jsBlock,javascriptBlock
+syntax match svelteKeyword "/await" contained containedin=jsBlock,javascriptBlock
+syntax match svelteKeyword ":catch" contained containedin=jsBlock,javascriptBlock
+syntax match svelteKeyword ":then" contained containedin=jsBlock,javascriptBlock
+syntax match svelteKeyword "@html" contained containedin=jsBlock,javascriptBlock
+
+" Repeat functions.
+syntax match svelteRepeat "#each" contained containedin=jsBlock,javascriptBlock
+syntax match svelteRepeat "/each" contained containedin=jsBlock,javascriptBlock
+
+highlight def link svelteConditional Conditional
+highlight def link svelteKeyword Keyword
+highlight def link svelteRepeat Repeat
+
+let b:current_syntax = "svelte"
diff --git a/syntax/zig.vim b/syntax/zig.vim
index 05e29d5f..a4a28af8 100644
--- a/syntax/zig.vim
+++ b/syntax/zig.vim
@@ -44,7 +44,7 @@ syn match zigBuiltinFn "\v\@(noInlineCall|bitOffsetOf|byteOffsetOf|OpaqueType|pa
syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold)>"
syn match zigBuiltinFn "\v\@(setRuntimeSafety|setEvalBranchQuota|setFloatMode)>"
syn match zigBuiltinFn "\v\@(setGlobalLinkage|setGlobalSection|shlExact|This|hasDecl)>"
-syn match zigBuiltinFn "\v\@(shlWithOverflow|shrExact|sizeOf|sqrt|bswap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)>"
+syn match zigBuiltinFn "\v\@(shlWithOverflow|shrExact|sizeOf|sqrt|byteSwap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)>"
syn match zigBuiltinFn "\v\@(truncate|typeId|typeInfo|typeName|typeOf|atomicRmw|bytesToSlice|sliceToBytes)>"
syn match zigBuiltinFn "\v\@(intToError|errorToInt|intToEnum|enumToInt|setAlignStack|handle|bitreverse|Vector)>"