来自插件的语法文件被 Vim 覆盖
Syntax file sourced from the plugin is overwritten by Vim
我正在创建一个非常简单的插件,以便在 Vim 中更好地突出显示 baan 语法(基本上是 syntax/baan.vim 的改进版本)。
这是我的插件目录。
ftdetect 文件夹中有一个文件; baan.vim。看起来像这样。
au BufRead,BufNewFile *.bc set filetype=baan
语法文件夹中的文件; baan.vim。它几乎与 Vim 中语法文件夹中的 baan.vim 相同。在语法突出显示中更改一行。
我的问题是当我打开任何带有 .bc 扩展名的文件时,又调用了两个语法文件;一个在我自己的插件语法文件之前,一个在我自己的插件语法文件之后。
bc.vim 语法文件已经从 filetyp.vim 调用了,我猜。因为我要设置语法的文件类型的扩展名为 .bc。这是第一个问题。第二个是我将文件类型设置为 'baan' 但 Vim 正在查找和采购所有 baan.vim 文件。但是一旦 baan.vim 来自 myplugin,它仍然从 Vim 本身获取那个。如何在不使用 /after 目录的情况下优雅地解决这些问题?
这是正常的。考虑以下因素。
$VIMRUNTIME/filetype.vim
来源 ftdetect/*.vim
脚本接近尾声。此时 setf bc
已经执行,第一个 FileType
事件被触发并处理。顺便提一句。这就是为什么 late set ft=baan
有效但 setf baan
无效的原因。不过这应该不是问题,因为 :syn clear
会在 $VIMRUNTIME/syntax/synload.vim
中自动执行。不,除非你 patch/replace filetype.vim
.
,否则你不能用它做任何事情
synload.vim
故意获取所有匹配文件 (:runtime!
)。这就是他们尊重 b:current_syntax
变量的原因。第一个设置它的人获胜,其他人通过在顶部执行 :finish
退出。尽管如此,它们都是来源并进入 :scriptnames
。请注意,这也意味着使用 after/syntax
扩展现有语法(同时不遵守 b:current_syntax
)通常更可取。
我正在创建一个非常简单的插件,以便在 Vim 中更好地突出显示 baan 语法(基本上是 syntax/baan.vim 的改进版本)。
这是我的插件目录。
ftdetect 文件夹中有一个文件; baan.vim。看起来像这样。
au BufRead,BufNewFile *.bc set filetype=baan
语法文件夹中的文件; baan.vim。它几乎与 Vim 中语法文件夹中的 baan.vim 相同。在语法突出显示中更改一行。
我的问题是当我打开任何带有 .bc 扩展名的文件时,又调用了两个语法文件;一个在我自己的插件语法文件之前,一个在我自己的插件语法文件之后。
bc.vim 语法文件已经从 filetyp.vim 调用了,我猜。因为我要设置语法的文件类型的扩展名为 .bc。这是第一个问题。第二个是我将文件类型设置为 'baan' 但 Vim 正在查找和采购所有 baan.vim 文件。但是一旦 baan.vim 来自 myplugin,它仍然从 Vim 本身获取那个。如何在不使用 /after 目录的情况下优雅地解决这些问题?
这是正常的。考虑以下因素。
,否则你不能用它做任何事情$VIMRUNTIME/filetype.vim
来源ftdetect/*.vim
脚本接近尾声。此时setf bc
已经执行,第一个FileType
事件被触发并处理。顺便提一句。这就是为什么 lateset ft=baan
有效但setf baan
无效的原因。不过这应该不是问题,因为:syn clear
会在$VIMRUNTIME/syntax/synload.vim
中自动执行。不,除非你 patch/replacefiletype.vim
.synload.vim
故意获取所有匹配文件 (:runtime!
)。这就是他们尊重b:current_syntax
变量的原因。第一个设置它的人获胜,其他人通过在顶部执行:finish
退出。尽管如此,它们都是来源并进入:scriptnames
。请注意,这也意味着使用after/syntax
扩展现有语法(同时不遵守b:current_syntax
)通常更可取。