Merge pull request #48 from leafOfTree/missing-syntax-indent

Handle syntax without syntax or indent files
This commit is contained in:
leaf authored and GitHub committed 2026-10-21 21:58:46 +08:00
commit f812facf6d
5 files changed
+43 -2

No files matched your search

+4
View File
@@ -263,6 +263,10 @@ endfunction
" Load all syntax files in 'runtimepath'
" Useful if there is no default syntax file provided by vim
function! vue#LoadFullSyntax(group, syntax)
if empty(globpath(&runtimepath, 'syntax/'.a:syntax.'.vim'))
call vue#Warn(a:syntax.': syntax not found in runtimepath')
return
endif
call vue#Log(a:syntax.': load full')
call s:SetCurrentSyntax(a:syntax)
execute 'syntax include '.a:group.' syntax/'.a:syntax.'.vim'
+5
View File
@@ -75,6 +75,11 @@ function! s:GetBlockIndent(syntax)
let indentexpr = get(s:indent, syntax)
if !empty(indentexpr)
let ind = eval(indentexpr)
elseif has_key(s:indent, syntax)
" No indent file for syntax in config, keep indent as cindent may break
" languages like pug or toml
call vue#LogWithLnum('indentexpr not found for '.syntax.', keep indent')
let ind = -1
else
call vue#LogWithLnum('indentexpr not found for '.syntax.', use cindent')
let ind = cindent(v:lnum)
+15
View File
@@ -0,0 +1,15 @@
" postcss has no syntax or indent file, toml has no indent file. They have
" their blocks and keep indent
let g:vim_vue_plugin_config = {
\'syntax': {
\ 'template': ['html'],
\ 'style': ['css', 'postcss'],
\ 'i18n': ['toml'],
\},
\}
function! Check()
call ExpectBlock('color: blue', 'style', 'postcss', 'postcssStyleBlock')
call ExpectBlock('hello', 'i18n', 'toml', 'tomlI18nBlock')
call ExpectIndentEachLine()
endfunction
+15
View File
@@ -0,0 +1,15 @@
<template>
<div>x</div>
</template>
<style lang="postcss">
p
color: red
a
color: blue
</style>
<i18n lang="toml">
[en]
hello = "hi"
</i18n>
+4 -2
View File
@@ -92,7 +92,8 @@ function! ExpectTag(lnum, tag)
endfunction
" Call GetVueIndent() for each non-blank line from line 2 as when typing it,
" which shows errors hidden by 'indentexpr', and check the indent
" which shows errors hidden by 'indentexpr', and check the indent. -1 keeps
" the indent
function! ExpectIndentEachLine()
for lnum in range(2, line('$'))
if getline(lnum) =~ '^\s*$'
@@ -101,7 +102,8 @@ function! ExpectIndentEachLine()
call cursor(lnum, 1)
let v:lnum = lnum
try
call ExpectEqual(GetVueIndent(), indent(lnum),
let ind = GetVueIndent()
call ExpectEqual(ind == -1 ? indent(lnum) : ind, indent(lnum),
\ printf('GetVueIndent() at line %d', lnum))
catch
call Fail(printf('GetVueIndent() at line %d: %s', lnum, v:exception))