From 0ffd6060534b08ff3a8f5f07f8078d398ae6781a Mon Sep 17 00:00:00 2001 From: Ekopalypse Date: Wed, 23 Apr 2025 12:56:06 +0200 Subject: [PATCH] Fix tab settings for external lexers cannot be saved issue Allows the configuration of tab settings for external lexers to be saved through the sessions. Fix #16460, close #16461 --- PowerEditor/src/Parameters.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp index 0d50ef3db..77556f6c1 100644 --- a/PowerEditor/src/Parameters.cpp +++ b/PowerEditor/src/Parameters.cpp @@ -8610,6 +8610,26 @@ bool NppParameters::insertTabInfo(const wchar_t* langName, int tabInfo, bool bac return true; } } + + for (size_t x = 0; x < _pXmlExternalLexerDoc.size(); ++x) + { + TiXmlNode* langRoot = (_pXmlExternalLexerDoc[x]->FirstChild(L"NotepadPlus"))->FirstChildElement(L"Languages"); + for (TiXmlNode* childNode = langRoot->FirstChildElement(L"Language"); + childNode; + childNode = childNode->NextSibling(L"Language")) + { + TiXmlElement* element = childNode->ToElement(); + const wchar_t* nm = element->Attribute(L"name"); + if (nm && lstrcmp(langName, nm) == 0) + { + childNode->ToElement()->SetAttribute(L"tabSettings", tabInfo); + childNode->ToElement()->SetAttribute(L"backspaceUnindent", backspaceUnindent ? L"yes" : L"no"); + _pXmlExternalLexerDoc[x]->SaveFile(); + return true; + } + } + } + return false; }