指定扩展名时 SublimeLinter ignore_match 不工作
SublimeLinter ignore_match not working when extension is specified
我正在尝试让 SublimeLinter 和 HTMLTidy 忽略某些 php 警告。特别是 missing <!DOCTYPE> declaration
、inserting implicit <body>
和 inserting missing 'title' element
。它在文档中告诉您如何执行此操作:
{
"ignore_match": [
"missing <!DOCTYPE> declaration",
"inserting (?:implicit <body>|missing 'title' element)"
]
}
将其添加到我的 SublimeLinter 用户设置文件中效果很好。问题是我希望它只应用于 PHP 文件,因为仅使用上面的内容也会在 HTML 文件上忽略它。
文档中有一个仅将 ignore_match
应用于特定扩展的示例:
{
"ignore_match": {
"inc": [
"missing <!DOCTYPE> declaration",
"inserting (?:implicit <body>|missing 'title' element)"
]
}
所以我复制了它并将 inc
更改为 php
我仍然在 php 文件上收到这些警告。
我的 SublimeLinter 设置文件的 htmltidy
部分如下所示:
"htmltidy": {
"@disable": false,
"args": [],
"excludes": [],
"ignore_match": {
"php": [
"missing <!DOCTYPE> declaration",
"inserting (?:implicit <body>|missing 'title' element)"
]
}
}
在我指定 ignore_match
规则应该适用的扩展之前,知道为什么 ignore_match
会按预期工作吗?
这是 SublimeLinter 的错误。 settings tokenizer 允许替换设置中的 ${project}
或 ${home}
等标记。它尝试递归地执行它但是当你在 ignore_match
字典中使用嵌套列表时会搞砸。
我已经测试过它,它会更改所有字符串,将其包装到列表中并将列表名称指定为字典的键,因此:
{"ignore_match": { "php": ["Error1", "Error2"]}}
转换为:
{"ignore_match": None, "php": ["Error1","Error2"]}}
调试正在发生的事情非常困难,所以我必须建议在标记化之前保存 ignore_match 设置并在标记化之后重置。 lint/linter.py get_merged_settings
:
中的类似内容
ims = None
if 'ignore_match' in settings.keys():
ims = settings['ignore_match']
del settings['ignore_match']
self.replace_settings_tokens(settings)
if ims:
settings['ignore_match'] = ims
我正在尝试让 SublimeLinter 和 HTMLTidy 忽略某些 php 警告。特别是 missing <!DOCTYPE> declaration
、inserting implicit <body>
和 inserting missing 'title' element
。它在文档中告诉您如何执行此操作:
{
"ignore_match": [
"missing <!DOCTYPE> declaration",
"inserting (?:implicit <body>|missing 'title' element)"
]
}
将其添加到我的 SublimeLinter 用户设置文件中效果很好。问题是我希望它只应用于 PHP 文件,因为仅使用上面的内容也会在 HTML 文件上忽略它。
文档中有一个仅将 ignore_match
应用于特定扩展的示例:
{
"ignore_match": {
"inc": [
"missing <!DOCTYPE> declaration",
"inserting (?:implicit <body>|missing 'title' element)"
]
}
所以我复制了它并将 inc
更改为 php
我仍然在 php 文件上收到这些警告。
我的 SublimeLinter 设置文件的 htmltidy
部分如下所示:
"htmltidy": {
"@disable": false,
"args": [],
"excludes": [],
"ignore_match": {
"php": [
"missing <!DOCTYPE> declaration",
"inserting (?:implicit <body>|missing 'title' element)"
]
}
}
在我指定 ignore_match
规则应该适用的扩展之前,知道为什么 ignore_match
会按预期工作吗?
这是 SublimeLinter 的错误。 settings tokenizer 允许替换设置中的 ${project}
或 ${home}
等标记。它尝试递归地执行它但是当你在 ignore_match
字典中使用嵌套列表时会搞砸。
我已经测试过它,它会更改所有字符串,将其包装到列表中并将列表名称指定为字典的键,因此:
{"ignore_match": { "php": ["Error1", "Error2"]}}
转换为:
{"ignore_match": None, "php": ["Error1","Error2"]}}
调试正在发生的事情非常困难,所以我必须建议在标记化之前保存 ignore_match 设置并在标记化之后重置。 lint/linter.py get_merged_settings
:
ims = None
if 'ignore_match' in settings.keys():
ims = settings['ignore_match']
del settings['ignore_match']
self.replace_settings_tokens(settings)
if ims:
settings['ignore_match'] = ims