[... 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": []
}
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
LTeX configuration
Please paste all configuration settings starting with
ltex.from yoursettings.json. You can help us by temporarily removing some irrelevant settings from yoursettings.jsonand see if the bug still occurs.Details
"LTeX Language Server" log file
First, reproduce the bug. Then, go to
View→Outputand selectLTeX Language Serverin the drop-down list. Paste this log here:Details
"LTeX Language Client" log file
First, set the
ltex.trace.serversetting in yoursettings.jsonto"verbose". Then, reload the VS Code window and reproduce the bug. Go toView→Outputand selectLTeX Language Clientin the drop-down list. Paste this log here (note: it will contain your checked document):Details
Version information
List here the version information of the relevant software.
Additional context/information
You can add any other context or information about the problem here.