Skip to content
This repository was archived by the owner on Apr 12, 2026. It is now read-only.

Misdetection of the scope of \selectlanguage #921

Description

@wazdra

Describe the bug

When working with multiple languages, LTeX current language does not adhere to the current Babel language

Steps to reproduce

Open the sample document in VSCode and notice that the last line of english is mistakenly considered french by LTeX.

Expected behavior

LTeX should respect the scoping of \selectlanguage, and revert to the previous language setting of Babel when exiting a group in which \selectlanguage has been called.

Sample document
Here is a MWE

Details
\documentclass{article}


%%% Packages

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french,english]{babel}

\begin{document}
This is in English: \og \fg

\mbox{\selectlanguage{french}
Ceci est en Français: \og \fg}

Back to English but LTeX flags as if in French. Note that Babel correctly reverted back to English: \og \fg
\end{document}

LTeX configuration
Please paste all configuration settings starting with ltex. from your settings.json. You can help us by temporarily removing some irrelevant settings from your settings.json and see if the bug still occurs.

Details
{
  "enabled": [
    "bibtex",
    "context",
    "context.tex",
    "html",
    "latex",
    "markdown",
    "org",
    "restructuredtext",
    "rsweave"
  ],
  "language": "en-US",
  "dictionary": {},
  "disabledRules": {},
  "enabledRules": {},
  "hiddenFalsePositives": {},
  "bibtex": {
    "fields": {}
  },
  "latex": {
    "commands": {},
    "environments": {}
  },
  "markdown": {
    "nodes": {}
  },
  "configurationTarget": {
    "dictionary": "workspaceFolderExternalFile",
    "disabledRules": "workspaceFolderExternalFile",
    "hiddenFalsePositives": "workspaceFolderExternalFile"
  },
  "additionalRules": {
    "enablePickyRules": false,
    "motherTongue": "en-GB",
    "languageModel": "",
    "neuralNetworkModel": "",
    "word2VecModel": ""
  },
  "languageToolHttpServerUri": "",
  "languageToolOrg": {
    "username": "",
    "apiKey": ""
  },
  "ltex-ls": {
    "path": "",
    "logLevel": "fine",
    "languageToolHttpServerUri": "",
    "languageToolOrgUsername": "",
    "languageToolOrgApiKey": ""
  },
  "java": {
    "path": "",
    "initialHeapSize": 64,
    "maximumHeapSize": 512
  },
  "sentenceCacheSize": 2000,
  "completionEnabled": false,
  "diagnosticSeverity": "information",
  "checkFrequency": "edit",
  "clearDiagnosticsWhenClosingFile": true,
  "statusBarItem": false,
  "trace": {
    "server": "verbose"
  }
}

"LTeX Language Server" log file
First, reproduce the bug. Then, go to ViewOutput and select LTeX Language Server in the drop-down list. Paste this log here:

Details
[... truncated]
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:04 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ceci est en fran\u00E7ais: \n\nBack to English but LTeX flags as if in French. Note that Babel correctly r"... (truncated to 100 characters)
oct. 12, 2025 7:13:04 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:13:08 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\n"
oct. 12, 2025 7:13:08 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:08 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\nThis is in English\n\n"
oct. 12, 2025 7:13:08 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:08 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ceci est en Fran\u00E7ais: \n\nBack to English but LTeX flags as if in French. Note that Babel correctly r"... (truncated to 100 characters)
oct. 12, 2025 7:13:08 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\n"
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\nThis is in English:\n\n"
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ceci est en Fran\u00E7ais: \n\nBack to English but LTeX flags as if in French. Note that Babel correctly r"... (truncated to 100 characters)
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\n"
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\nThis is in English: "
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ceci est en Fran\u00E7ais: \n\nBack to English but LTeX flags as if in French. Note that Babel correctly r"... (truncated to 100 characters)
oct. 12, 2025 7:13:32 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\n"
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\nThis is in English: \n\n"
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ceci est en Fran\u00E7ais: \n\nBack to English but LTeX flags as if in French. Note that Babel correctly r"... (truncated to 100 characters)
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\n"
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\nThis is in English: \n\n"
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ceci est en Fran\u00E7ais: \n\nBack to English but LTeX flags as if in French. Note that Babel correctly r"... (truncated to 100 characters)
oct. 12, 2025 7:13:33 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:20:19 PM org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint notify
INFOS: Unsupported notification method: $/setTrace
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\n"
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\nThis is in English: \n\n"
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ceci est en Fran\u00E7ais: \n\nBack to English but LTeX flags as if in French. Note that Babel correctly r"... (truncated to 100 characters)
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "\n\n"
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "Anatole: #1"
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: "#1"
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 0 rule matches
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'en-US' via LanguageTool: " \n\n\n\n\n\n\n\n\n\nlandcases Dummy0 \n\nlorcases Dummy1 \n\n\n\n\n\nPolynomial-delay enumeration\n\nWe want to show th"... (truncated to 100 characters)
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 10 rule matches
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker logTextToBeChecked
PRÉCIS: Checking the following text in language 'fr' via LanguageTool: " Ici, je pense que cette d\u00E9finition de DelayP est plus agr\u00E9able. Il faudrait montrer qu'elle est \u00E9qu"... (truncated to 100 characters)
oct. 12, 2025 7:20:19 PM org.bsplines.ltexls.server.DocumentChecker checkAnnotatedTextFragment
PRÉCIS: Obtained 4 rule matches

"LTeX Language Client" log file
First, set the ltex.trace.server setting in your settings.json to "verbose". Then, reload the VS Code window and reproduce the bug. Go to ViewOutput and select LTeX Language Client in the drop-down list. Paste this log here (note: it will contain your checked document):

Details
[... truncated]
            "fa": [],
            "fr": [],
            "ga-IE": [],
            "gl-ES": [],
            "it": [],
            "ja-JP": [],
            "km-KH": [],
            "nl": [],
            "nl-BE": [],
            "pl-PL": [],
            "pt": [],
            "pt-AO": [],
            "pt-BR": [],
            "pt-MZ": [],
            "pt-PT": [],
            "ro-RO": [],
            "ru-RU": [],
            "sk-SK": [],
            "sl-SI": [],
            "sv": [],
            "ta-IN": [],
            "tl-PH": [],
            "uk-UA": [],
            "zh-CN": []
        },
        "enabledRules": {
            "auto": [],
            "ar": [],
            "ast-ES": [],
            "be-BY": [],
            "br-FR": [],
            "ca-ES": [],
            "ca-ES-valencia": [],
            "da-DK": [],
            "de": [],
            "de-AT": [],
            "de-CH": [],
            "de-DE": [],
            "de-DE-x-simple-language": [],
            "el-GR": [],
            "en": [],
            "en-AU": [],
            "en-CA": [],
            "en-GB": [],
            "en-NZ": [],
            "en-US": [],
            "en-ZA": [],
            "eo": [],
            "es": [],
            "es-AR": [],
            "fa": [],
            "fr": [],
            "ga-IE": [],
            "gl-ES": [],
            "it": [],
            "ja-JP": [],
            "km-KH": [],
            "nl": [],
            "nl-BE": [],
            "pl-PL": [],
            "pt": [],
            "pt-AO": [],
            "pt-BR": [],
            "pt-MZ": [],
            "pt-PT": [],
            "ro-RO": [],
            "ru-RU": [],
            "sk-SK": [],
            "sl-SI": [],
            "sv": [],
            "ta-IN": [],
            "tl-PH": [],
            "uk-UA": [],
            "zh-CN": []
        },
        "hiddenFalsePositives": {
            "auto": [],
            "ar": [],
            "ast-ES": [],
            "be-BY": [],
            "br-FR": [],
            "ca-ES": [],
            "ca-ES-valencia": [],
            "da-DK": [],
            "de": [],
            "de-AT": [],
            "de-CH": [],
            "de-DE": [],
            "de-DE-x-simple-language": [],
            "el-GR": [],
            "en": [],
            "en-AU": [],
            "en-CA": [],
            "en-GB": [],
            "en-NZ": [],
            "en-US": [],
            "en-ZA": [],
            "eo": [],
            "es": [],
            "es-AR": [],
            "fa": [],
            "fr": [],
            "ga-IE": [],
            "gl-ES": [],
            "it": [],
            "ja-JP": [],
            "km-KH": [],
            "nl": [],
            "nl-BE": [],
            "pl-PL": [],
            "pt": [],
            "pt-AO": [],
            "pt-BR": [],
            "pt-MZ": [],
            "pt-PT": [],
            "ro-RO": [],
            "ru-RU": [],
            "sk-SK": [],
            "sl-SI": [],
            "sv": [],
            "ta-IN": [],
            "tl-PH": [],
            "uk-UA": [],
            "zh-CN": []
        }
    }
]


[Trace - 19:20:19] Received notification '$/progress'.
Params: {
    "token": "{\"uri\":\"file:///Users/anatoledahan/Documents/Brouillon/MWELTeX/main.tex\",\"operation\":\"checkDocument\",\"uuid\":\"3a046441-4431-ac92-43b2-c1ed65749589\"}",
    "value": {
        "kind": "end"
    }
}


[Trace - 19:20:19] Received notification 'textDocument/publishDiagnostics'.
Params: {
    "uri": "file:///Users/anatoledahan/Documents/Brouillon/MWELTeX/main.tex",
    "diagnostics": [
        {
            "range": {
                "start": {
                    "line": 13,
                    "character": 12
                },
                "end": {
                    "line": 13,
                    "character": 20
                }
            },
            "severity": 3,
            "code": "LANGUES",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/LANGUES?lang=fr"
            },
            "source": "LTeX",
            "message": "Les noms de langues n’ont pas de majuscule en français. Voulez-vous écrire 'français' ?"
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 0
                },
                "end": {
                    "line": 15,
                    "character": 4
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'Back': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 8
                },
                "end": {
                    "line": 15,
                    "character": 15
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'English': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 20
                },
                "end": {
                    "line": 15,
                    "character": 24
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'LTeX': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 25
                },
                "end": {
                    "line": 15,
                    "character": 30
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'flags': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 53
                },
                "end": {
                    "line": 15,
                    "character": 57
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'that': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 64
                },
                "end": {
                    "line": 15,
                    "character": 73
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'correctly': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 74
                },
                "end": {
                    "line": 15,
                    "character": 82
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'reverted': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 83
                },
                "end": {
                    "line": 15,
                    "character": 87
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'back': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 15,
                    "character": 91
                },
                "end": {
                    "line": 15,
                    "character": 98
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'English': Faute de frappe possible trouvée."
        }
    ]
}


[Trace - 19:20:19] Received request 'window/workDoneProgress/create - (10779)'.
Params: {
    "token": "{\"uri\":\"file:///Users/anatoledahan/Documents/EnumNoLogic/main.tex\",\"operation\":\"checkDocument\",\"uuid\":\"ad1e8813-71fd-6bad-1d7a-3cad60c91d75\"}"
}


[Trace - 19:20:19] Sending response 'window/workDoneProgress/create - (10779)'. Processing request took 0ms
No result returned.


[Trace - 19:20:19] Received notification '$/progress'.
Params: {
    "token": "{\"uri\":\"file:///Users/anatoledahan/Documents/EnumNoLogic/main.tex\",\"operation\":\"checkDocument\",\"uuid\":\"ad1e8813-71fd-6bad-1d7a-3cad60c91d75\"}",
    "value": {
        "kind": "begin",
        "title": "Checking document",
        "cancellable": false,
        "message": "file:///Users/anatoledahan/Documents/EnumNoLogic/main.tex"
    }
}


[Trace - 19:20:19] Received request 'workspace/configuration - (10780)'.
Params: {
    "items": [
        {
            "scopeUri": "file:///Users/anatoledahan/Documents/EnumNoLogic/main.tex",
            "section": "ltex"
        }
    ]
}


[Trace - 19:20:19] Sending response 'workspace/configuration - (10780)'. Processing request took 0ms
Result: [
    {
        "enabled": [
            "bibtex",
            "context",
            "context.tex",
            "html",
            "latex",
            "markdown",
            "org",
            "restructuredtext",
            "rsweave"
        ],
        "language": "en-US",
        "dictionary": {},
        "disabledRules": {},
        "enabledRules": {},
        "hiddenFalsePositives": {},
        "bibtex": {
            "fields": {}
        },
        "latex": {
            "commands": {},
            "environments": {}
        },
        "markdown": {
            "nodes": {}
        },
        "configurationTarget": {
            "dictionary": "workspaceFolderExternalFile",
            "disabledRules": "workspaceFolderExternalFile",
            "hiddenFalsePositives": "workspaceFolderExternalFile"
        },
        "additionalRules": {
            "enablePickyRules": false,
            "motherTongue": "en-GB",
            "languageModel": "",
            "neuralNetworkModel": "",
            "word2VecModel": ""
        },
        "languageToolHttpServerUri": "",
        "languageToolOrg": {
            "username": "",
            "apiKey": ""
        },
        "ltex-ls": {
            "path": "",
            "logLevel": "fine",
            "languageToolHttpServerUri": "",
            "languageToolOrgUsername": "",
            "languageToolOrgApiKey": ""
        },
        "java": {
            "path": "",
            "initialHeapSize": 64,
            "maximumHeapSize": 512
        },
        "sentenceCacheSize": 2000,
        "completionEnabled": false,
        "diagnosticSeverity": "information",
        "checkFrequency": "edit",
        "clearDiagnosticsWhenClosingFile": true,
        "statusBarItem": false,
        "trace": {
            "server": "verbose"
        }
    }
]


[Trace - 19:20:19] Received request 'ltex/workspaceSpecificConfiguration - (10781)'.
Params: {
    "items": [
        {
            "scopeUri": "file:///Users/anatoledahan/Documents/EnumNoLogic/main.tex",
            "section": "ltex"
        }
    ]
}


[Trace - 19:20:19] Sending response 'ltex/workspaceSpecificConfiguration - (10781)'. Processing request took 6ms
Result: [
    {
        "dictionary": {
            "auto": [],
            "ar": [],
            "ast-ES": [],
            "be-BY": [],
            "br-FR": [],
            "ca-ES": [],
            "ca-ES-valencia": [],
            "da-DK": [],
            "de": [],
            "de-AT": [],
            "de-CH": [],
            "de-DE": [],
            "de-DE-x-simple-language": [],
            "el-GR": [],
            "en": [],
            "en-AU": [],
            "en-CA": [],
            "en-GB": [],
            "en-NZ": [],
            "en-US": [],
            "en-ZA": [],
            "eo": [],
            "es": [],
            "es-AR": [],
            "fa": [],
            "fr": [],
            "ga-IE": [],
            "gl-ES": [],
            "it": [],
            "ja-JP": [],
            "km-KH": [],
            "nl": [],
            "nl-BE": [],
            "pl-PL": [],
            "pt": [],
            "pt-AO": [],
            "pt-BR": [],
            "pt-MZ": [],
            "pt-PT": [],
            "ro-RO": [],
            "ru-RU": [],
            "sk-SK": [],
            "sl-SI": [],
            "sv": [],
            "ta-IN": [],
            "tl-PH": [],
            "uk-UA": [],
            "zh-CN": []
        },
        "disabledRules": {
            "auto": [],
            "ar": [],
            "ast-ES": [],
            "be-BY": [],
            "br-FR": [],
            "ca-ES": [],
            "ca-ES-valencia": [],
            "da-DK": [],
            "de": [],
            "de-AT": [],
            "de-CH": [],
            "de-DE": [],
            "de-DE-x-simple-language": [],
            "el-GR": [],
            "en": [],
            "en-AU": [],
            "en-CA": [],
            "en-GB": [],
            "en-NZ": [],
            "en-US": [],
            "en-ZA": [],
            "eo": [],
            "es": [],
            "es-AR": [],
            "fa": [],
            "fr": [],
            "ga-IE": [],
            "gl-ES": [],
            "it": [],
            "ja-JP": [],
            "km-KH": [],
            "nl": [],
            "nl-BE": [],
            "pl-PL": [],
            "pt": [],
            "pt-AO": [],
            "pt-BR": [],
            "pt-MZ": [],
            "pt-PT": [],
            "ro-RO": [],
            "ru-RU": [],
            "sk-SK": [],
            "sl-SI": [],
            "sv": [],
            "ta-IN": [],
            "tl-PH": [],
            "uk-UA": [],
            "zh-CN": []
        },
        "enabledRules": {
            "auto": [],
            "ar": [],
            "ast-ES": [],
            "be-BY": [],
            "br-FR": [],
            "ca-ES": [],
            "ca-ES-valencia": [],
            "da-DK": [],
            "de": [],
            "de-AT": [],
            "de-CH": [],
            "de-DE": [],
            "de-DE-x-simple-language": [],
            "el-GR": [],
            "en": [],
            "en-AU": [],
            "en-CA": [],
            "en-GB": [],
            "en-NZ": [],
            "en-US": [],
            "en-ZA": [],
            "eo": [],
            "es": [],
            "es-AR": [],
            "fa": [],
            "fr": [],
            "ga-IE": [],
            "gl-ES": [],
            "it": [],
            "ja-JP": [],
            "km-KH": [],
            "nl": [],
            "nl-BE": [],
            "pl-PL": [],
            "pt": [],
            "pt-AO": [],
            "pt-BR": [],
            "pt-MZ": [],
            "pt-PT": [],
            "ro-RO": [],
            "ru-RU": [],
            "sk-SK": [],
            "sl-SI": [],
            "sv": [],
            "ta-IN": [],
            "tl-PH": [],
            "uk-UA": [],
            "zh-CN": []
        },
        "hiddenFalsePositives": {
            "auto": [],
            "ar": [],
            "ast-ES": [],
            "be-BY": [],
            "br-FR": [],
            "ca-ES": [],
            "ca-ES-valencia": [],
            "da-DK": [],
            "de": [],
            "de-AT": [],
            "de-CH": [],
            "de-DE": [],
            "de-DE-x-simple-language": [],
            "el-GR": [],
            "en": [],
            "en-AU": [],
            "en-CA": [],
            "en-GB": [],
            "en-NZ": [],
            "en-US": [],
            "en-ZA": [],
            "eo": [],
            "es": [],
            "es-AR": [],
            "fa": [],
            "fr": [],
            "ga-IE": [],
            "gl-ES": [],
            "it": [],
            "ja-JP": [],
            "km-KH": [],
            "nl": [],
            "nl-BE": [],
            "pl-PL": [],
            "pt": [],
            "pt-AO": [],
            "pt-BR": [],
            "pt-MZ": [],
            "pt-PT": [],
            "ro-RO": [],
            "ru-RU": [],
            "sk-SK": [],
            "sl-SI": [],
            "sv": [],
            "ta-IN": [],
            "tl-PH": [],
            "uk-UA": [],
            "zh-CN": []
        }
    }
]


[Trace - 19:20:19] Received notification '$/progress'.
Params: {
    "token": "{\"uri\":\"file:///Users/anatoledahan/Documents/EnumNoLogic/main.tex\",\"operation\":\"checkDocument\",\"uuid\":\"ad1e8813-71fd-6bad-1d7a-3cad60c91d75\"}",
    "value": {
        "kind": "end"
    }
}


[Trace - 19:20:19] Received notification 'textDocument/publishDiagnostics'.
Params: {
    "uri": "file:///Users/anatoledahan/Documents/EnumNoLogic/main.tex",
    "diagnostics": [
        {
            "range": {
                "start": {
                    "line": 47,
                    "character": 12
                },
                "end": {
                    "line": 47,
                    "character": 21
                }
            },
            "severity": 3,
            "code": "UPPERCASE_SENTENCE_START",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/UPPERCASE_SENTENCE_START?lang=en-US"
            },
            "source": "LTeX",
            "message": "This sentence does not start with an uppercase letter."
        },
        {
            "range": {
                "start": {
                    "line": 60,
                    "character": 12
                },
                "end": {
                    "line": 60,
                    "character": 20
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'lorcases': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 96,
                    "character": 183
                },
                "end": {
                    "line": 96,
                    "character": 191
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'Gurevich': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 98,
                    "character": 82
                },
                "end": {
                    "line": 98,
                    "character": 96
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'undecidability': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 104,
                    "character": 110
                },
                "end": {
                    "line": 104,
                    "character": 113
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'TMs': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 115,
                    "character": 127
                },
                "end": {
                    "line": 115,
                    "character": 135
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'Gurevich': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 119,
                    "character": 48
                },
                "end": {
                    "line": 119,
                    "character": 51
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'TMs': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 126,
                    "character": 28
                },
                "end": {
                    "line": 126,
                    "character": 34
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'DelayP': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 126,
                    "character": 67
                },
                "end": {
                    "line": 126,
                    "character": 70
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'TMs': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 133,
                    "character": 15
                },
                "end": {
                    "line": 133,
                    "character": 21
                }
            },
            "severity": 3,
            "code": "MORFOLOGIK_RULE_EN_US",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/MORFOLOGIK_RULE_EN_US?lang=en-US"
            },
            "source": "LTeX",
            "message": "'DelayP': Possible spelling mistake found."
        },
        {
            "range": {
                "start": {
                    "line": 137,
                    "character": 47
                },
                "end": {
                    "line": 137,
                    "character": 53
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'DelayP': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 139,
                    "character": 0
                },
                "end": {
                    "line": 139,
                    "character": 4
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'This': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 139,
                    "character": 5
                },
                "end": {
                    "line": 139,
                    "character": 9
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'does': Faute de frappe possible trouvée."
        },
        {
            "range": {
                "start": {
                    "line": 139,
                    "character": 10
                },
                "end": {
                    "line": 139,
                    "character": 13
                }
            },
            "severity": 3,
            "code": "FR_SPELLING_RULE",
            "codeDescription": {
                "href": "https://community.languagetool.org/rule/show/FR_SPELLING_RULE?lang=fr"
            },
            "source": "LTeX",
            "message": "'not': Faute de frappe possible trouvée."
        }
    ]
}


[Trace - 19:20:21] Sending request 'textDocument/codeAction - (3330)'.
Params: {
    "textDocument": {
        "uri": "file:///Users/anatoledahan/Documents/Brouillon/MWELTeX/main.tex"
    },
    "range": {
        "start": {
            "line": 0,
            "character": 0
        },
        "end": {
            "line": 0,
            "character": 0
        }
    },
    "context": {
        "diagnostics": []
    }
}


[Trace - 19:20:21] Received response 'textDocument/codeAction - (3330)' in 9ms.
Result: []


[Trace - 19:20:22] Sending request 'textDocument/codeAction - (3331)'.
Params: {
    "textDocument": {
        "uri": "file:///Users/anatoledahan/Documents/Brouillon/MWELTeX/main.tex"
    },
    "range": {
        "start": {
            "line": 16,
            "character": 14
        },
        "end": {
            "line": 16,
            "character": 14
        }
    },
    "context": {
        "diagnostics": []
    }
}


[Trace - 19:20:22] Received response 'textDocument/codeAction - (3331)' in 1ms.
Result: []


2025-10-12T17:20:36.603Z Info: Creating bug report...
[Trace - 19:20:36] Sending request 'workspace/executeCommand - (3332)'.
Params: {
    "command": "_ltex.getServerStatus",
    "arguments": []
}



Version information
List here the version information of the relevant software.

  • Operating system: Darwin (darwin), arm64, 25.0.0
  • VS Code: 1.104.3
  • vscode-ltex: 13.1.0
  • ltex-ls: 15.2.0
  • Java: 11.0.12

Additional context/information
You can add any other context or information about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    1-bug 🐛Issue type: Bug report (something isn't working as expected)2-unconfirmedIssue status: Bug that needs to be reproduced (all new bugs have this label)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions