diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2022-04-30 15:07:33 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2022-04-30 15:07:33 +0200 |
commit | 38282d58387cff48ac203f6912c05e4c8686141b (patch) | |
tree | fac41fbf9f014c63fb5c7d06b8a6ccd75aeade08 | |
parent | 36a2bf60adbf113cb6a096c9edd22c711782d912 (diff) | |
download | vim-polyglot-38282d58387cff48ac203f6912c05e4c8686141b.tar.gz vim-polyglot-38282d58387cff48ac203f6912c05e4c8686141b.zip |
Update
-rw-r--r-- | ftplugin/bicep.vim | 2 | ||||
-rw-r--r-- | ftplugin/markdown.vim | 8 | ||||
-rw-r--r-- | indent/svelte-css.vim | 91 | ||||
-rw-r--r-- | indent/svelte-xml.vim | 111 | ||||
-rw-r--r-- | indent/svelte.vim | 6 | ||||
-rw-r--r-- | syntax/nix.vim | 10 | ||||
-rw-r--r-- | syntax/ruby.vim | 10 | ||||
-rw-r--r-- | syntax/zig.vim | 1 |
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" |