如何使Syntastic根据根目录中文件的存在加载不同的检查器?

6

在工作中,我们使用的语法检查器与我在开源项目上工作时使用的不同。是否有一种方法可以让Syntastic指定一个默认的检查器,并且如果在项目根目录下发现了rc文件,则更改检查器?

例如:如果发现.eslintrc,则使用eslint。如果没有发现.eslintrc,则使用standard

谢谢!

编辑:还在scrooloose/syntastic上开了一个问题。

2个回答

17

是的,你可以像这样做:

autocmd FileType javascript let b:syntastic_checkers = findfile('.eslintrc', '.;') != '' ? ['eslint'] : ['standard']

编辑:根据要求,以下是其工作原理的解释:

  • autocmd FileType javascript - 每次将缓冲区的filetype设置为javascript时(通常一次每个缓冲区),运行以下内容。
  • b:syntastic_checkers - 列出当前缓冲区启用的检查器,覆盖g:syntastic_javascript_checkers
  • findfile('.eslintrc', ...) - 查找名为.eslintrc的文件...
  • .; - 在当前目录和上层目录中
  • != '' ? - 如果找到了...
  • ['eslint'] - ...将b:syntastic_checkers设置为['eslint']
  • : ['standard'] - ...否则将其设置为['standard']

我告诉你,这真是魔法。


请您能否添加一份说明,解释一下这个命令是如何工作的? - EvergreenTree
@lcd047能否详细说明如何使用本地二进制文件而不是standard - deceleratedcaviar
@dcousens:我从未说过您可以使用任意本地二进制文件而不是“standard”。 - lcd047
@lcd047 当然。那么我猜你不知道有什么办法让它这样做? - deceleratedcaviar
@dcousens 如果你有问题,请在一个单独的帖子中提出。如果你觉得你的问题不适合在SO上,syntastic问题跟踪器在这里 - lcd047

1
另一个简单的选项,适用范围比这个问题更广泛,是将以下内容添加到您的 .vimrc 文件中:
if findfile('.lvimrc','.') != ''
    source .lvimrc
endif

然后,在你希望实现不同行为的目录中,只需添加一个名为'.lvimrc'的文件,并在其中设置你想要的Syntastic选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接