【问题标题】:SublimeLinter ignore_match not working when extension is specified指定扩展名时,SublimeLinter ignore_match 不起作用
【发布时间】:2016-03-07 14:05:09
【问题描述】:

我试图让 SublimeLinterHTMLTidy 忽略某些 php 警告。特别是missing <!DOCTYPE> declarationinserting implicit <body>inserting missing 'title' element。它在文档中告诉您如何执行此操作:

{
"ignore_match": [
    "missing <!DOCTYPE> declaration",
    "inserting (?:implicit <body>|missing 'title' element)"
    ]
}

来源:Linter Settings

将它添加到我的 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 规则应该适用的扩展?

【问题讨论】:

    标签: json sublimetext3 sublimetext htmltidy sublimelinter


    【解决方案1】:

    这是 SublimeLinter 错误。设置标记器允许在设置中替换 ${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
    

    【讨论】:

    • 感谢您的回答。我正在尝试对其进行测试,但不确定应该将您提供的代码放在 get_merged_settings 函数的哪个位置。我想先把它放在window = self.view.window() 之前吗?
    • self.replace_settings_tokens(settings) 是原始代码,kursy 用上面保护ignore_match条目的代码替换它
    • 再次感谢!由于时间不多了,我在测试它之前给你赏金。非常感谢。
    • 这似乎使ignore_match 发挥应有的作用。非常感谢您的时间和精力!
    • @alkuzad 您应该考虑对您的更改提出拉取请求。 :)
    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2014-09-10
    相关资源
    最近更新 更多