KaoriYaのWindows版Vimにautocomplpop.vimを入れると以下のスクリーンショットのようなエラーが出るようになります。
コレ、HTMLのclass属性値を入力しようとすると出るエラーなのですが、どうやら編集中のHTMLファイルに関連付けられているCSSを見に行って、そこに定義されていないクラスを入力しようとすると出るようです。便利なようですが、スクリプトのために書くclass属性値もなんかもあるわけで、そういうのでいちいちエラー窓が開いていては入力しにくくて仕方ありません。
そこで、このエラーが出ないようにする、というか、class属性値をいちいちチェックしないようにする方法を。
まずVimのホームディレクトリから runtime/autoload/ とたどっていくと htmlcomplete.vim というファイルがあります。つまり、コレですね $VIMRUNTIME/autoload/htmlcomplete.vim
コレの中身を以下のように編集します。
245〜256行目
"let headclasslines = filter(copy(styleheadlines), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
else
let stylesheet = split(headjoined, '[{}]')
" Get all lines which fit id syntax
"let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
" Filter out possible color definitions
"call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
" Filter out complex border definitions
"call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
"let templines = join(classlines, ' ')
"let headclasslines = split(templines)
"call filter(headclasslines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
294〜313行目
"let classlines = filter(copy(stylesheet), "v:val =~ '\\([a-zA-Z0-9:]\\+\\)\\?\\.[a-zA-Z0-9_-]\\+'")
else
let stylesheet = split(stylefile, '[{}]')
" Get all lines which fit id syntax
"let classlines = filter(copy(stylesheet), "v:val =~ '#[a-zA-Z0-9_-]\\+'")
" Filter out possible color definitions
"call filter(classlines, "v:val !~ ':\\s*#[a-zA-Z0-9_-]\\+'")
" Filter out complex border definitions
"call filter(classlines, "v:val !~ '\\(none\\|hidden\\|dotted\\|dashed\\|solid\\|double\\|groove\\|ridge\\|inset\\|outset\\)\\s*#[a-zA-Z0-9_-]\\+'")
"let templines = join(classlines, ' ')
"let stylelines = split(templines)
"let classlines = filter(stylelines, "v:val =~ '#[a-zA-Z0-9_-]\\+'")
endif
endif
" We gathered classes definitions from all external files
"let classes += classlines
endfor
if internal == 1
"let classes += headclasslines
つまり、classlines
というコードが登場する行を全てコメントアウトします。こうしたら、エラーが出なくなりました。
スマートな方法ではありませんが、とりあえず普通に動くのでOKってことで。
are you the author of this plugin?
my vim has this kind of problem too, and my OS is ubuntu…
so… i wanna say, it is not a problem which is windows only…
Pingback: htmlcomplete#CompleteTags 的 bug | minbaby
You can fix this issue by inserting the following above line 288 of autoload/htmlcomplete.vim:
let classlines = []
I have alerted the developer on his BitBucket project repository: https://bitbucket.org/ns9tks/vim-autocomplpop/issue/37/undefined-variable-classlines-e15-invalid
To: Ryan
Hello. Thank you for your kindness. Your solution is cool!!
Pingback: Vim相关资料大全 | 天天三国杀