在 Sublime 3 中配置 R linters 的行为

Configure the behaviour of R linters in Sublime 3

我正在使用 lintr in Sublime 3 via SublimeLinter 3 and the SublimeLinter-contrib-lintr plugin. On the lintr README.md file there is a short mention 如何配置应该使用的 linters:

{
  "user": {
    "linters": {
      "r": {
        "linters": "with_defaults(line_length_linter(120))"
      }
    }
  }
}

但是,我将它与 SublimeLinter-contrib-lintr 一起使用,但无法正常工作。我的 SublimeLinter.sublime-settings 文件如下所示:

{
    "user": {
        "debug": true,
        "delay": 0.25,
        "error_color": "D02000",
        "gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme",
        "gutter_theme_excludes": [],
        "lint_mode": "background",
        "linters": {
            "lintr": {
                "@disable": false,
                "args": [],
                "cache": "TRUE",
                "excludes": [],
                "linters": "default_linters"
            }
        },
        "mark_style": "outline",
        "no_column_highlights_line": false,
        "passive_warnings": false,
        "paths": {
            "linux": [],
            "osx": [],
            "windows": [
                "C:/Program Files/R/R-3.3.3/bin/x64"
            ]
        },
        "python_paths": {
            "linux": [],
            "osx": [],
            "windows": []
        },
        "rc_search_limit": 3,
        "shell_timeout": 10,
        "show_errors_on_save": false,
        "show_marks_in_minimap": true,
        "syntax_map": {
            "r extended": "r"
        },
        "warning_color": "DDB700",
        "wrap_find": true
    }
}

lintr 包有一堆 linter(参见 this link)。我想要实现的目标是丢弃其中的一些(即不使用,例如 assignment_linter)。你知道如何实现这一目标吗?应该可以吧?


编辑 1:

我注意到通过将 "linters": "default_linters" 更改为 "linters": "assignment_linter",只会挑选属于 assignment_linter 的错误。我尝试使用数组扩展它,但它不起作用:

...
"lintr": {
    "@disable": false,
    "args": [],
    "cache": "TRUE",
    "excludes": [],
    "linters": [
        "assignment_linter",
        "object_name_linter"
    ]
}
...

Sublime 3 控制台内,此尝试的消息错误消息是:Error: unexpected '[' in "lint(cache = TRUE, commandArgs(TRUE), [".


编辑 2: 可能的解决方案

查看 lintr 包内的 with_defaults 我发现了两种只选择我感兴趣的 linters 的方法。假设我只想要 assignment_linterno_tab_linter ,配置为:

它有效,但还有其他不太容易出错的方法吗?使用这种方法,如果我只想丢弃一个 linter,我必须列出所有其他的。

关于 "Edit 2" 的问题,您可以按如下方式丢弃单个 linter:

{
  "user": {
    "linters": {
      "r": {
        "linters": "with_defaults(some_default_linter = NULL)"
      }
    }
  }
}

... 其中 some_default_linter 是列表 lintr::default_linters.

中的 linter 名称