在 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_linter
和 no_tab_linter
,配置为:
"linters": "default_linters[c('assignment_linter', 'no_tab_linter')]"
或
"linters": "with_defaults(assignment_linter, no_tab_linter, default = NULL)"
它有效,但还有其他不太容易出错的方法吗?使用这种方法,如果我只想丢弃一个 linter,我必须列出所有其他的。
关于 "Edit 2" 的问题,您可以按如下方式丢弃单个 linter:
{
"user": {
"linters": {
"r": {
"linters": "with_defaults(some_default_linter = NULL)"
}
}
}
}
... 其中 some_default_linter
是列表 lintr::default_linters
.
中的 linter 名称
我正在使用 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_linter
和 no_tab_linter
,配置为:
"linters": "default_linters[c('assignment_linter', 'no_tab_linter')]"
或"linters": "with_defaults(assignment_linter, no_tab_linter, default = NULL)"
它有效,但还有其他不太容易出错的方法吗?使用这种方法,如果我只想丢弃一个 linter,我必须列出所有其他的。
关于 "Edit 2" 的问题,您可以按如下方式丢弃单个 linter:
{
"user": {
"linters": {
"r": {
"linters": "with_defaults(some_default_linter = NULL)"
}
}
}
}
... 其中 some_default_linter
是列表 lintr::default_linters
.