Allow lang without quotes and lang="typescript"

<script lang=ts> and <style lang=sass> without quotes weren't
recognized, so they used the first syntax in the config. For sass, it
also flattened the nesting when indenting. lang="typescript" wasn't
recognized either.

Languages not in the config still use the first syntax as before.
This commit is contained in:
leafOfTree committed 2026-10-21 12:13:24 +00:00
1 parent ee1a608c40
commit 063231ca9e
4 files changed
+42 -3

No files matched your search

+2 -1
View File
@@ -132,7 +132,8 @@ let g:vim_vue_plugin_config.foldexpr = 0
Note
- `typescript` matches `lang="ts"`
- `typescript` matches `lang="ts"` and `lang="typescript"`
- `lang` can be in double or single quotes, or without quotes
- `list` options can be `string` if only one
- The first item of syntax list will be used if no "lang=..."
- For `.wpy`, `initial_indent` defaults to `['script', 'style']`
+3 -2
View File
@@ -92,7 +92,7 @@ endfunction
function! s:GetSyntaxLangName(syntax)
let syntax = a:syntax
if syntax == 'typescript'
let syntax = 'ts'
let syntax = '\(ts\|typescript\)'
endif
return syntax
endfunction
@@ -105,7 +105,8 @@ function! s:SetSyntax(block, syntax, has_lang)
let name = s:GetSynatxName(block, syntax)
if has_lang
let lang_name = s:GetSyntaxLangName(syntax)
let lang = 'lang=["'']'.lang_name.'["'']'
" In double or single quotes, or without quotes
let lang = 'lang=["'']\?'.lang_name.'\>["'']\?'
else
let lang = ''
endif
+17
View File
@@ -0,0 +1,17 @@
" lang in double or single quotes or without quotes, and
" lang="typescript"
let g:vim_vue_plugin_config = {
\'syntax': {
\ 'template': ['html'],
\ 'script': ['javascript', 'typescript'],
\ 'style': ['css', 'scss', 'sass'],
\},
\}
function! Check()
call ExpectEqual(GetVueSyntax(), 'html', 'syntax at line 1')
call ExpectBlock('let a', 'script', 'typescript', 'typescriptScriptBlock')
call ExpectBlock('let b', 'script', 'typescript', 'typescriptScriptBlock')
call ExpectBlock('$c', 'style', 'scss', 'cssScssStyleBlock')
call ExpectBlock('color: red', 'style', 'sass', 'sassStyleBlock')
endfunction
+20
View File
@@ -0,0 +1,20 @@
<template lang=html>
<div>x</div>
</template>
<script lang=ts>
let a: number = 1
</script>
<script lang="typescript">
let b: number = 2
</script>
<style lang='scss'>
$c: 1px;
</style>
<style lang=sass>
p
color: red
</style>