summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2022-04-30 15:07:33 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2022-04-30 15:07:33 +0200
commit38282d58387cff48ac203f6912c05e4c8686141b (patch)
treefac41fbf9f014c63fb5c7d06b8a6ccd75aeade08
parent36a2bf60adbf113cb6a096c9edd22c711782d912 (diff)
downloadvim-polyglot-38282d58387cff48ac203f6912c05e4c8686141b.tar.gz
vim-polyglot-38282d58387cff48ac203f6912c05e4c8686141b.zip
Update
-rw-r--r--ftplugin/bicep.vim2
-rw-r--r--ftplugin/markdown.vim8
-rw-r--r--indent/svelte-css.vim91
-rw-r--r--indent/svelte-xml.vim111
-rw-r--r--indent/svelte.vim6
-rw-r--r--syntax/nix.vim10
-rw-r--r--syntax/ruby.vim10
-rw-r--r--syntax/zig.vim1
8 files changed, 223 insertions, 16 deletions
diff --git a/ftplugin/bicep.vim b/ftplugin/bicep.vim
index 112c429e..08af66d8 100644
--- a/ftplugin/bicep.vim
+++ b/ftplugin/bicep.vim
@@ -15,7 +15,7 @@ set cpoptions&vim
" Set the commentstring
setlocal commentstring=//%s
-let b:undo_ftplugin = ' commentstring<'
+let b:undo_ftplugin = 'setlocal commentstring<'
let &cpoptions = s:cpo_save
unlet s:cpo_save
diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim
index 7ed65fe8..d3129a87 100644
--- a/ftplugin/markdown.vim
+++ b/ftplugin/markdown.vim
@@ -792,7 +792,7 @@ function! s:MarkdownHighlightSources(force)
" Look for code blocks in the current file
let filetypes = {}
for line in getline(1, '$')
- let ft = matchstr(line, '```\s*\zs[0-9A-Za-z_+-]*\ze.*')
+ let ft = matchstr(line, '\(`\{3,}\|\~\{3,}\)\s*\zs[0-9A-Za-z_+-]*\ze.*')
if !empty(ft) && ft !~# '^\d*$' | let filetypes[ft] = 1 | endif
endfor
if !exists('b:mkd_known_filetypes')
@@ -823,8 +823,10 @@ function! s:MarkdownHighlightSources(force)
else
let include = '@' . toupper(filetype)
endif
- let command = 'syntax region %s matchgroup=%s start="^\s*```\s*%s.*$" matchgroup=%s end="\s*```$" keepend contains=%s%s'
- execute printf(command, group, startgroup, ft, endgroup, include, has('conceal') && get(g:, 'vim_markdown_conceal', 1) && get(g:, 'vim_markdown_conceal_code_blocks', 1) ? ' concealends' : '')
+ let command_backtick = 'syntax region %s matchgroup=%s start="^\s*`\{3,}\s*%s.*$" matchgroup=%s end="\s*`\{3,}$" keepend contains=%s%s'
+ let command_tilde = 'syntax region %s matchgroup=%s start="^\s*\~\{3,}\s*%s.*$" matchgroup=%s end="\s*\~\{3,}$" keepend contains=%s%s'
+ execute printf(command_backtick, group, startgroup, ft, endgroup, include, has('conceal') && get(g:, 'vim_markdown_conceal', 1) && get(g:, 'vim_markdown_conceal_code_blocks', 1) ? ' concealends' : '')
+ execute printf(command_tilde, group, startgroup, ft, endgroup, include, has('conceal') && get(g:, 'vim_markdown_conceal', 1) && get(g:, 'vim_markdown_conceal_code_blocks', 1) ? ' concealends' : '')
execute printf('syntax cluster mkdNonListItem add=%s', group)
let b:mkd_known_filetypes[ft] = 1
diff --git a/indent/svelte-css.vim b/indent/svelte-css.vim
new file mode 100644
index 00000000..6e07835b
--- /dev/null
+++ b/indent/svelte-css.vim
@@ -0,0 +1,91 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'svelte', 'indent/svelte-css.vim')
+ finish
+endif
+
+" Vim indent file
+" Language: CSS
+" Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2012-05-30
+" Use of shiftwidth() added by Oleg Zubchenko.
+
+" Changes: 1) Reacquire the line while checking comment lines.
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetCSSIndent()
+setlocal indentkeys=0{,0},!^F,o,O
+setlocal nosmartindent
+
+let b:undo_indent = "setl smartindent< indentkeys< indentexpr<"
+
+if exists("*GetCSSIndent")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+function s:prevnonblanknoncomment(lnum)
+ let lnum = a:lnum
+ while lnum > 1
+ let lnum = prevnonblank(lnum)
+ let line = getline(lnum)
+ if line =~ '\*/'
+ while lnum > 1 && line !~ '/\*'
+ let lnum -= 1
+ let line = getline(lnum)
+ endwhile
+ if line =~ '^\s*/\*'
+ let lnum -= 1
+ else
+ break
+ endif
+ else
+ break
+ endif
+ endwhile
+ return lnum
+endfunction
+
+function s:count_braces(lnum, count_open)
+ let n_open = 0
+ let n_close = 0
+ let line = getline(a:lnum)
+ let pattern = '[{}]'
+ let i = match(line, pattern)
+ while i != -1
+ if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'css\%(Comment\|StringQ\{1,2}\)'
+ if line[i] == '{'
+ let n_open += 1
+ elseif line[i] == '}'
+ if n_open > 0
+ let n_open -= 1
+ else
+ let n_close += 1
+ endif
+ endif
+ endif
+ let i = match(line, pattern, i + 1)
+ endwhile
+ return a:count_open ? n_open : n_close
+endfunction
+
+function GetCSSIndent()
+ let line = getline(v:lnum)
+ if line =~ '^\s*\*'
+ return cindent(v:lnum)
+ endif
+
+ let pnum = s:prevnonblanknoncomment(v:lnum - 1)
+ if pnum == 0
+ return 0
+ endif
+
+ return indent(pnum) + s:count_braces(pnum, 1) * shiftwidth()
+ \ - s:count_braces(v:lnum, 0) * shiftwidth()
+endfunction
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
diff --git a/indent/svelte-xml.vim b/indent/svelte-xml.vim
new file mode 100644
index 00000000..18148abb
--- /dev/null
+++ b/indent/svelte-xml.vim
@@ -0,0 +1,111 @@
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'svelte', 'indent/svelte-xml.vim')
+ finish
+endif
+
+" Language: xml
+" Maintainer: Johannes Zellner <johannes@zellner.org>
+" Last Change: 2017 Jun 13
+" Notes: 1) does not indent pure non-xml code (e.g. embedded scripts)
+" 2) will be confused by unbalanced tags in comments
+" or CDATA sections.
+" 2009-05-26 patch by Nikolai Weibull
+" TODO: implement pre-like tags, see xml_indent_open / xml_indent_close
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+" [-- local settings (must come before aborting the script) --]
+setlocal indentexpr=XmlIndentGet(v:lnum,1)
+setlocal indentkeys=o,O,*<Return>,<>>,<<>,/,{,}
+
+if !exists('b:xml_indent_open')
+ let b:xml_indent_open = '.\{-}<\a'
+ " pre tag, e.g. <address>
+ " let b:xml_indent_open = '.\{-}<[/]\@!\(address\)\@!'
+endif
+
+if !exists('b:xml_indent_close')
+ let b:xml_indent_close = '.\{-}</'
+ " end pre tag, e.g. </address>
+ " let b:xml_indent_close = '.\{-}</\(address\)\@!'
+endif
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" [-- finish, if the function already exists --]
+if exists('*XmlIndentGet')
+ finish
+endif
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+fun! <SID>XmlIndentWithPattern(line, pat)
+ let s = substitute('x'.a:line, a:pat, "\1", 'g')
+ return strlen(substitute(s, "[^\1].*$", '', ''))
+endfun
+
+" [-- check if it's xml --]
+fun! <SID>XmlIndentSynCheck(lnum)
+ if '' != &syntax
+ let syn1 = synIDattr(synID(a:lnum, 1, 1), 'name')
+ let syn2 = synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
+ if '' != syn1 && syn1 !~ 'xml' && '' != syn2 && syn2 !~ 'xml'
+ " don't indent pure non-xml code
+ return 0
+ elseif syn1 =~ '^xmlComment' && syn2 =~ '^xmlComment'
+ " indent comments specially
+ return -1
+ endif
+ endif
+ return 1
+endfun
+
+" [-- return the sum of indents of a:lnum --]
+fun! <SID>XmlIndentSum(lnum, style, add)
+ let line = getline(a:lnum)
+ if a:style == match(line, '^\s*</')
+ return (shiftwidth() *
+ \ (<SID>XmlIndentWithPattern(line, b:xml_indent_open)
+ \ - <SID>XmlIndentWithPattern(line, b:xml_indent_close)
+ \ - <SID>XmlIndentWithPattern(line, '.\{-}/>'))) + a:add
+ else
+ return a:add
+ endif
+endfun
+
+fun! XmlIndentGet(lnum, use_syntax_check)
+ " Find a non-empty line above the current line.
+ let lnum = prevnonblank(a:lnum - 1)
+
+ " Hit the start of the file, use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ if a:use_syntax_check
+ let check_lnum = <SID>XmlIndentSynCheck(lnum)
+ let check_alnum = <SID>XmlIndentSynCheck(a:lnum)
+ if 0 == check_lnum || 0 == check_alnum
+ return indent(a:lnum)
+ elseif -1 == check_lnum || -1 == check_alnum
+ return -1
+ endif
+ endif
+
+ let ind = <SID>XmlIndentSum(lnum, -1, indent(lnum))
+ let ind = <SID>XmlIndentSum(a:lnum, 0, ind)
+
+ return ind
+endfun
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:ts=8
diff --git a/indent/svelte.vim b/indent/svelte.vim
index bae715df..7c09f361 100644
--- a/indent/svelte.vim
+++ b/indent/svelte.vim
@@ -55,12 +55,12 @@ let s:debug = svelte#GetConfig('debug', 0)
" Save shiftwidth
let s:sw = &sw
-" Use lib/indent/ files for compatibility
+" Use specific indent files for compatibility
unlet! b:did_indent
-runtime lib/indent/xml.vim
+runtime indent/svelte-xml.vim
unlet! b:did_indent
-runtime lib/indent/css.vim
+runtime indent/svelte-css.vim
" Use normal indent files
unlet! b:did_indent
diff --git a/syntax/nix.vim b/syntax/nix.vim
index c3185bad..b45299bf 100644
--- a/syntax/nix.vim
+++ b/syntax/nix.vim
@@ -43,6 +43,8 @@ syn match nixStringSpecial /''['$]/ contained
syn match nixStringSpecial /\$\$/ contained
syn match nixStringSpecial /''\\[nrt]/ contained
+syn match nixSimpleStringSpecial /\$\$/ contained
+
syn match nixInvalidSimpleStringEscape /\\[^nrt"\\$]/ contained
syn match nixInvalidStringEscape /''\\[^nrt]/ contained
@@ -63,7 +65,7 @@ syn match nixAttribute "[a-zA-Z_][a-zA-Z0-9_'-]*\ze\%([^a-zA-Z0-9_'.-]\|$\)" con
syn region nixAttributeAssignment start="=" end="\ze;" contained contains=@nixExpr
syn region nixAttributeDefinition start=/\ze[a-zA-Z_"$]/ end=";" contained contains=nixComment,nixAttribute,nixInterpolation,nixSimpleString,nixAttributeDot,nixAttributeAssignment
-syn region nixInheritAttributeScope start="(" end=")" contained contains=nixComment,nixAttributeDot
+syn region nixInheritAttributeScope start="(" end="\ze)" contained contains=@nixExpr
syn region nixAttributeDefinition matchgroup=nixInherit start="\<inherit\>" end=";" contained contains=nixComment,nixInheritAttributeScope,nixAttribute
syn region nixAttributeSet start="{" end="}" contains=nixComment,nixAttributeDefinition
@@ -133,7 +135,7 @@ syn match nixInterpolationParam "[a-zA-Z_][a-zA-Z0-9_'-]*\%(\.[a-zA-Z_][a-zA-Z0-
" Non-namespaced Nix builtins as of version 2.0:
syn keyword nixSimpleBuiltin
\ abort baseNameOf derivation derivationStrict dirOf fetchGit
- \ fetchMercurial fetchTarball import isNull map placeholder removeAttrs
+ \ fetchMercurial fetchTarball import isNull map mapAttrs placeholder removeAttrs
\ scopedImport throw toString
@@ -146,13 +148,13 @@ syn keyword nixNamespacedBuiltin contained
\ findFile foldl' fromJSON functionArgs genList \ genericClosure getAttr
\ getEnv hasAttr hasContext hashString head import intersectAttrs isAttrs
\ isBool isFloat isFunction isInt isList isNull isString langVersion
- \ length lessThan listToAttrs map match mul nixPath nixVersion
+ \ length lessThan listToAttrs map mapAttrs match mul nixPath nixVersion
\ parseDrvName partition path pathExists placeholder readDir readFile
\ removeAttrs replaceStrings scopedImport seq sort split splitVersion
\ storeDir storePath stringLength sub substring tail throw toFile toJSON
\ toPath toString toXML trace tryEval typeOf unsafeDiscardOutputDependency
\ unsafeDiscardStringContext unsafeGetAttrPos valueSize fromTOML bitAnd
- \ bitOr bitXor
+ \ bitOr bitXor floor ceil
syn match nixBuiltin "builtins\.[a-zA-Z']\+"he=s+9 contains=nixComment,nixNamespacedBuiltin
diff --git a/syntax/ruby.vim b/syntax/ruby.vim
index d5c9e728..a2fae63a 100644
--- a/syntax/ruby.vim
+++ b/syntax/ruby.vim
@@ -148,9 +148,9 @@ syn cluster rubyStringSpecial contains=rubyInterpolation,rubyStringEscape
syn cluster rubyStringNotTop contains=@rubyStringSpecial,@rubyNestedBrackets,@rubySingleCharEscape
" Regular Expression Metacharacters {{{1
-syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\\\\|\\)" end=")" contained
-syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\\\\|\\)" end=")" contained transparent contains=@rubyRegexpSpecial
-syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\\\|\\\]" end="\]" contained transparent contains=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline
+syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\\\\|\\)" end=")" contained
+syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\%(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\\\\|\\)" end=")" contained transparent contains=@rubyRegexpSpecial
+syn region rubyRegexpBrackets matchgroup=rubyRegexpCharClass start="\[\^\=" skip="\\\\\|\\\]" end="\]" contained transparent contains=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline
syn match rubyRegexpCharClass "\\[DdHhRSsWw]" contained display
syn match rubyRegexpCharClass "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|xdigit\):\]" contained
syn match rubyRegexpCharClass "\\[pP]{^\=.\{-}}" contained display
@@ -349,7 +349,7 @@ syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,
syn match rubyControl "\%#=1\<\%(break\|in\|next\|redo\|retry\|return\)\>"
syn match rubyKeyword "\%#=1\<\%(super\|yield\)\>"
syn match rubyBoolean "\%#=1\<\%(true\|false\)\>[?!]\@!"
-syn match rubyPseudoVariable "\%#=1\<\(self\|nil\)\>[?!]\@!"
+syn match rubyPseudoVariable "\%#=1\<\%(self\|nil\)\>[?!]\@!"
syn match rubyPseudoVariable "\%#=1\<__\%(ENCODING\|dir\|FILE\|LINE\|callee\|method\)__\>"
syn match rubyBeginEnd "\%#=1\<\%(BEGIN\|END\)\>"
@@ -421,7 +421,7 @@ if !exists("ruby_no_special_methods")
syn match rubyAccess "\%#=1\<\%(public\|private\)_class_method\>"
syn match rubyAccess "\%#=1\<\%(public\|private\)_constant\>"
syn match rubyAccess "\%#=1\<module_function\>"
- syn match rubyAttribute "\%#=1\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" " attr is a common variable name
+ syn match rubyAttribute "\%#=1\%(\%(^\|;\)\s*\)\@<=attr\>\%(\s*[.=]\)\@!" " attr is a common variable name
syn match rubyAttribute "\%#=1\<attr_\%(accessor\|reader\|writer\)\>"
syn match rubyControl "\%#=1\<\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>"
syn match rubyEval "\%#=1\<eval\>"
diff --git a/syntax/zig.vim b/syntax/zig.vim
index 8946000c..ddc5bf76 100644
--- a/syntax/zig.vim
+++ b/syntax/zig.vim
@@ -195,6 +195,7 @@ let s:zig_syntax_keywords = {
\ , "@Vector"
\ , "@sin"
\ , "@cos"
+ \ , "@tan"
\ , "@exp"
\ , "@exp2"
\ , "@log"