mirror of
https://github.com/leafOfTree/vim-vue-plugin.git
synced 2026-11-02 18:37:34 +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'
|
" Load all syntax files in 'runtimepath'
|
||||||
" Useful if there is no default syntax file provided by vim
|
" Useful if there is no default syntax file provided by vim
|
||||||
function! vue#LoadFullSyntax(group, syntax)
|
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 vue#Log(a:syntax.': load full')
|
||||||
call s:SetCurrentSyntax(a:syntax)
|
call s:SetCurrentSyntax(a:syntax)
|
||||||
execute 'syntax include '.a:group.' syntax/'.a:syntax.'.vim'
|
execute 'syntax include '.a:group.' syntax/'.a:syntax.'.vim'
|
||||||
|
|||||||
@@ -75,6 +75,11 @@ function! s:GetBlockIndent(syntax)
|
|||||||
let indentexpr = get(s:indent, syntax)
|
let indentexpr = get(s:indent, syntax)
|
||||||
if !empty(indentexpr)
|
if !empty(indentexpr)
|
||||||
let ind = eval(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
|
else
|
||||||
call vue#LogWithLnum('indentexpr not found for '.syntax.', use cindent')
|
call vue#LogWithLnum('indentexpr not found for '.syntax.', use cindent')
|
||||||
let ind = cindent(v:lnum)
|
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
|
endfunction
|
||||||
|
|
||||||
" Call GetVueIndent() for each non-blank line from line 2 as when typing it,
|
" 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()
|
function! ExpectIndentEachLine()
|
||||||
for lnum in range(2, line('$'))
|
for lnum in range(2, line('$'))
|
||||||
if getline(lnum) =~ '^\s*$'
|
if getline(lnum) =~ '^\s*$'
|
||||||
@@ -101,7 +102,8 @@ function! ExpectIndentEachLine()
|
|||||||
call cursor(lnum, 1)
|
call cursor(lnum, 1)
|
||||||
let v:lnum = lnum
|
let v:lnum = lnum
|
||||||
try
|
try
|
||||||
call ExpectEqual(GetVueIndent(), indent(lnum),
|
let ind = GetVueIndent()
|
||||||
|
call ExpectEqual(ind == -1 ? indent(lnum) : ind, indent(lnum),
|
||||||
\ printf('GetVueIndent() at line %d', lnum))
|
\ printf('GetVueIndent() at line %d', lnum))
|
||||||
catch
|
catch
|
||||||
call Fail(printf('GetVueIndent() at line %d: %s', lnum, v:exception))
|
call Fail(printf('GetVueIndent() at line %d: %s', lnum, v:exception))
|
||||||
|
|||||||
Reference in new issue
Block a user