【问题标题】:How can I make Syntastic load a different checker based on existance of files in root?如何根据根目录中文件的存在情况使 Syntastic 加载不同的检查器?
【发布时间】:2015-04-18 20:38:48
【问题描述】:

在工作中,我们使用的语法检查器与我在从事开源工作时使用的语法检查器不同。有没有办法让Syntastic 指定默认检查器,如果在项目根目录中找到rc 文件,则更改检查器?

示例:如果找到.eslintrc,则使用eslint。如果找不到.eslintrc,请使用standard

谢谢!

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

【问题讨论】:

    标签: vim jshint vim-plugin syntastic eslint


    【解决方案1】:

    另一个简单的选项,它的应用范围比这个问题更广泛,是将以下内容添加到您的 .vimrc 文件中:

    if findfile('.lvimrc','.') != ''
        source .lvimrc
    endif
    

    然后在您想要一些不同行为的目录中,只需添加一个“.lvimrc”文件,其中包含您想要用于该目录的合成选项。

    【讨论】:

      【解决方案2】:

      是的,你可以这样做:

      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']

      魔法,我告诉你。

      【讨论】:

      • 能否请您解释一下此命令的工作原理?
      • @lcd047 您能否详细说明如何使其使用本地二进制文件而不是standard
      • @dcousens:我从来没有说过你可以让它使用任意的本地二进制文件而不是standard
      • @lcd047 确定。所以我想这意味着你不知道有什么方法可以做到这一点?
      • @dcousens 如果您有任何问题,请在单独的帖子中提问。如果您觉得您的问题不属于 SO,综合问题跟踪器是 this way
      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2016-05-28
      相关资源
      最近更新 更多