簡體   English   中英

指定擴展名時,SublimeLinter ignore_match不起作用

[英]SublimeLinter ignore_match not working when extension is specified

我試圖讓SublimeLinterHTMLTidy忽略某些php警告。 特別是missing <!DOCTYPE> declarationinserting implicit <body> ,然后inserting missing 'title' element 它在文檔中告訴您如何執行此操作:

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

來源: Linter設置

將其添加到我的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_matchignore_match工作?

這是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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM