Handle syntax without syntax or indent files

A syntax in the config without a syntax file, like postcss, showed
E484 on opening a file. Skip loading it, with a warning in debug.

A syntax without an indent file used cindent, which broke indent of
languages like pug, stylus without their plugins, or toml. Keep the
indent instead. Lines outside blocks still use cindent.
This commit is contained in:
leafOfTree committed 2026-10-21 13:51:38 +00:00
1 parent 824aff651d
commit de9fbec1ad
5 files changed
+43 -2

No files matched your search

+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))