mirror of
https://github.com/leafOfTree/vim-vue-plugin.git
synced 2026-11-01 18:12:19 +08:00
Merge pull request #48 from leafOfTree/missing-syntax-indent
Handle syntax without syntax or indent files
This commit is contained in:
5 files changed
+43
-2
No files matched your search
@@ -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'
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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))
|
||||
|
||||
Reference in new issue
Block a user