From 409a810d32970cbb99967e4d8fe655eb69c840be Mon Sep 17 00:00:00 2001 From: Maximilian Martin Date: Tue, 30 Dec 2025 13:27:23 +0100 Subject: [PATCH 1/3] Fix searching Unicode character mismatches with ANSI character '?' Fix #17125, close #17348 --- PowerEditor/installer/nativeLang/english.xml | 3 +- .../nativeLang/english_customizable.xml | 3 +- PowerEditor/src/Notepad_plus.cpp | 9 +- .../src/ScintillaComponent/FindReplaceDlg.cpp | 127 ++++++++++++++---- .../src/ScintillaComponent/FindReplaceDlg.h | 5 + 5 files changed, 113 insertions(+), 34 deletions(-) diff --git a/PowerEditor/installer/nativeLang/english.xml b/PowerEditor/installer/nativeLang/english.xml index 8aa3bf803446..e149f4e20e99 100644 --- a/PowerEditor/installer/nativeLang/english.xml +++ b/PowerEditor/installer/nativeLang/english.xml @@ -5,7 +5,7 @@ Translation note: 2. All the comments are for explanation, they are not for translation. --> - +
@@ -1775,6 +1775,7 @@ Find in all files but exclude all folders log or logs recursively: + diff --git a/PowerEditor/installer/nativeLang/english_customizable.xml b/PowerEditor/installer/nativeLang/english_customizable.xml index 0cc107d61b9a..872159032b8a 100644 --- a/PowerEditor/installer/nativeLang/english_customizable.xml +++ b/PowerEditor/installer/nativeLang/english_customizable.xml @@ -5,7 +5,7 @@ Translation note: 2. All the comments are for explanation, they are not for translation. --> - +
@@ -1775,6 +1775,7 @@ Find in all files but exclude all folders log or logs recursively: + diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index 8a917a805ef3..5a008518b88d 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -1946,6 +1946,7 @@ bool Notepad_plus::replaceInFilelist(std::vector & fileNames) } bool hasInvalidRegExpr = false; + NppGUI& nppGUI = (NppParameters::getInstance()).getNppGUI(); for (size_t i = 0, updateOnCount = filesPerPercent; i < filesCount; ++i) @@ -1978,7 +1979,7 @@ bool Notepad_plus::replaceInFilelist(std::vector & fileNames) if (nbReplaced == FIND_INVALID_REGULAR_EXPRESSION) { hasInvalidRegExpr = true; - break;; + break; } else { @@ -2019,10 +2020,10 @@ bool Notepad_plus::replaceInFilelist(std::vector & fileNames) result = stringReplace(result, L"$INT_REPLACE$", std::to_wstring(nbTotal)); } - if (!hasInvalidRegExpr) - _findReplaceDlg.setStatusbarMessage(result, FSMessage); - else + if (hasInvalidRegExpr) _findReplaceDlg.setStatusbarMessageWithRegExprErr(&_invisibleEditView); + else + _findReplaceDlg.setStatusbarMessage(result, FSMessage); return true; } diff --git a/PowerEditor/src/ScintillaComponent/FindReplaceDlg.cpp b/PowerEditor/src/ScintillaComponent/FindReplaceDlg.cpp index 523937452f35..1c6e6f710ab9 100644 --- a/PowerEditor/src/ScintillaComponent/FindReplaceDlg.cpp +++ b/PowerEditor/src/ScintillaComponent/FindReplaceDlg.cpp @@ -2942,6 +2942,32 @@ bool FindReplaceDlg::processFindNext(const wchar_t *txt2find, const FindOption * return false; const FindOption *pOptions = options?options:_env; + NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); + + // If txt2find contains non-ANSI characters and document type is ANSI, search cannot match + if (isSearchUnicodeCharOnAnsi(txt2find)) + { + if (oFindStatus) + *oFindStatus = FSNotFound; + + // Show warning for regex (could work in theory, but we disallow it to prevent unexpected behavior) + if (pOptions->_incrementalType == NotIncremental) //incremental search doesn't trigger messages + { + setStatusMessageNotFound(txt2find); + + // if the dialog is not shown, pass the focus to his parent(ie. Notepad++) + if (!::IsWindowVisible(_hSelf)) + { + (*_ppEditView)->grabFocus(); + } + else + { + ::SetFocus(::GetDlgItem(_hSelf, IDFINDWHAT)); + } + } + return false; + + } (*_ppEditView)->execute(SCI_CALLTIPCANCEL); @@ -3025,8 +3051,6 @@ bool FindReplaceDlg::processFindNext(const wchar_t *txt2find, const FindOption * (*_ppEditView)->execute(SCI_SETSEARCHFLAGS, flags); - NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); - posFind = (*_ppEditView)->searchInTarget(pText, stringSizeFind, startPosition, endPosition); if (posFind == -1) //no match found in target, check if a new target should be used { @@ -3059,27 +3083,13 @@ bool FindReplaceDlg::processFindNext(const wchar_t *txt2find, const FindOption * //failed, or failed twice with wrap if (pOptions->_incrementalType == NotIncremental) //incremental search doesn't trigger messages { - wstring warningMsg = pNativeSpeaker->getLocalizedStrFromID("find-status-cannot-find", L"Find: Can't find the text \"$STR_REPLACE$\""); - wstring newTxt2find = stringReplace(txt2find, L"&", L"&&"); - - if (newTxt2find.length() > 32) // truncate the search string to display, if the search string is too long - { - newTxt2find.erase(28); - newTxt2find += L"..."; - } - - warningMsg = stringReplace(warningMsg, L"$STR_REPLACE$", newTxt2find); - - warningMsg += L" "; - warningMsg += getScopeInfoForStatusBar(&_options); - wstring reasonMsg; bool isTheMostLaxMode = _options._isWrapAround && !_options._isMatchCase && !_options._isWholeWord; if (!isTheMostLaxMode) { reasonMsg = pNativeSpeaker->getLocalizedStrFromID("find-status-cannot-find-pebkac-maybe", noFoundPotentialReason); } - setStatusbarMessage(warningMsg, FSNotFound, reasonMsg); + setStatusMessageNotFound(txt2find, reasonMsg); // if the dialog is not shown, pass the focus to his parent(ie. Notepad++) if (!::IsWindowVisible(_hSelf)) @@ -3136,9 +3146,10 @@ bool FindReplaceDlg::processReplace(const wchar_t *txt2find, const wchar_t *txt2 if (!txt2find || !txt2find[0] || !txt2replace) return false; + NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); + if ((*_ppEditView)->getCurrentBuffer()->isReadOnly()) { - NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); wstring msg = pNativeSpeaker->getLocalizedStrFromID("find-status-replace-readonly", L"Replace: Cannot replace text. The current document is read only."); setStatusbarMessage(msg, FSNotFound); return false; @@ -3147,12 +3158,30 @@ bool FindReplaceDlg::processReplace(const wchar_t *txt2find, const wchar_t *txt2 FindOption replaceOptions = options ? *options : *_env; replaceOptions._incrementalType = FirstIncremental; + // If txt2find contains non-ANSI characters and document type is ANSI, search cannot match + if (isSearchUnicodeCharOnAnsi(txt2find)) + { + wstring msg = pNativeSpeaker->getLocalizedStrFromID("find-status-replace-not-found", L"Replace: no occurrence was found"); + + msg += L" "; + msg += getScopeInfoForStatusBar(&_options); + + setStatusbarMessage(msg, FSNotFound); + + return false; + } + else if (isSearchUnicodeCharOnAnsi(txt2replace)) + { + NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); + wstring msg = pNativeSpeaker->getLocalizedStrFromID("find-status-replace-invalid-replace-chars", L"Replace: can't replace with non-ANSI text in ANSI document"); + setStatusbarMessage(msg, FSNotFound); + return false; + } + Sci_CharacterRangeFull currentSelection = (*_ppEditView)->getSelection(); FindStatus status; moreMatches = processFindNext(txt2find, &replaceOptions, &status, FINDNEXTTYPE_FINDNEXTFORREPLACE); - NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); - if (moreMatches) { Sci_CharacterRangeFull nextFind = (*_ppEditView)->getSelection(); @@ -3269,24 +3298,35 @@ int FindReplaceDlg::markAllInc(const FindOption *opt) int FindReplaceDlg::processAll(ProcessOperation op, const FindOption *opt, bool isEntire, const FindersInfo *pFindersInfo, int colourStyleID) { + NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); if (op == ProcessReplaceAll && (*_ppEditView)->getCurrentBuffer()->isReadOnly()) { - NppParameters& nppParam = NppParameters::getInstance(); - NativeLangSpeaker *pNativeSpeaker = nppParam.getNativeLangSpeaker(); wstring msg = pNativeSpeaker->getLocalizedStrFromID("find-status-replaceall-readonly", L"Replace All: Cannot replace text. The current document is read only."); setStatusbarMessage(msg, FSNotFound); return 0; } - // Turn OFF all the notification of modification (SCN_MODIFIED) for the sake of performance - LRESULT notifFlag = (*_ppEditView)->execute(SCI_GETMODEVENTMASK); - (*_ppEditView)->execute(SCI_SETMODEVENTMASK, 0); + const FindOption* pOptions = opt ? opt : _env; + const wchar_t* txt2find = pOptions->_str2Search.c_str(); + const wchar_t* txt2replace = pOptions->_str4Replace.c_str(); + // If txt2find contains non-ANSI characters and document type is ANSI, search cannot match + if (isSearchUnicodeCharOnAnsi(txt2find)) + { + return 0; + } + // If txt2replace contains non-ANSI characters and document type is ANSI, the match cannot be replaced + if (isSearchUnicodeCharOnAnsi(txt2replace)) + { + wstring msg = pNativeSpeaker->getLocalizedStrFromID("find-status-replace-invalid-replace-chars", L"Replace: can't replace with non-ANSI text in ANSI document"); + setStatusbarMessage(msg, FSNotFound); + return 0; + } - const FindOption *pOptions = opt?opt:_env; - const wchar_t *txt2find = pOptions->_str2Search.c_str(); - const wchar_t *txt2replace = pOptions->_str4Replace.c_str(); + // Turn OFF all the notification of modification (SCN_MODIFIED) for the sake of performance + LRESULT notifFlag = (*_ppEditView)->execute(SCI_GETMODEVENTMASK); + (*_ppEditView)->execute(SCI_SETMODEVENTMASK, 0); Sci_CharacterRangeFull cr = (*_ppEditView)->getSelection(); size_t docLength = (*_ppEditView)->execute(SCI_GETLENGTH); @@ -4381,6 +4421,26 @@ void FindReplaceDlg::setStatusbarMessageWithRegExprErr(ScintillaEditView* pEditV setStatusbarMessage(result, FSNotFound, string2wstring(s, CP_UTF8)); } +void FindReplaceDlg::setStatusMessageNotFound(const std::wstring& textNotFound, const std::wstring& tooltipMsg) +{ + NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); + wstring warningMsg = pNativeSpeaker->getLocalizedStrFromID("find-status-cannot-find", L"Find: Can't find the text \"$STR_REPLACE$\""); + wstring newTxt2find = stringReplace(textNotFound, L"&", L"&&"); + + if (newTxt2find.length() > 32) // truncate the search string to display, if the search string is too long + { + newTxt2find.erase(28); + newTxt2find += L"..."; + } + + warningMsg = stringReplace(warningMsg, L"$STR_REPLACE$", newTxt2find); + + warningMsg += L" "; + warningMsg += getScopeInfoForStatusBar(&_options); + + setStatusbarMessage(warningMsg, FSNotFound, tooltipMsg); +} + void FindReplaceDlg::setStatusMessageWithInvisibleCharsWarning() { NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker(); @@ -5513,6 +5573,17 @@ bool FindReplaceDlg::replaceInOpenDocsConfirmCheck() return confirmed; } +bool FindReplaceDlg::isSearchUnicodeCharOnAnsi(const wchar_t* text) const +{ + if ((*_ppEditView)->execute(SCI_GETCODEPAGE) == CP_ACP) + { + BOOL convertible = FALSE; + WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, text, -1, nullptr, 0, nullptr, &convertible); + return convertible; + } + return false; +} + // Expand selection (if needed) and set the selected text in Find What field. // Return empty string if nothing to set in find field. // Otherwise return string in which the selected text was copied. diff --git a/PowerEditor/src/ScintillaComponent/FindReplaceDlg.h b/PowerEditor/src/ScintillaComponent/FindReplaceDlg.h index 0d3b5f48f370..944baa2f05ed 100644 --- a/PowerEditor/src/ScintillaComponent/FindReplaceDlg.h +++ b/PowerEditor/src/ScintillaComponent/FindReplaceDlg.h @@ -406,8 +406,11 @@ public : void clearMarks(const FindOption& opt); void setStatusbarMessage(const std::wstring & msg, FindStatus status, const std::wstring& tooltipMsg = L""); void setStatusbarMessageWithRegExprErr(ScintillaEditView* pEditView); + void setStatusMessageNotFound(const std::wstring& textNotFound, const std::wstring& tooltipMsg = L""); + void setStatusMessageWithInvisibleCharsWarning(); void removeStatusMessageWithInvisibleCharsWarning(); + std::wstring getScopeInfoForStatusBar(FindOption const *pFindOpt) const; Finder * createFinder(); bool removeFinder(Finder *finder2remove); @@ -522,6 +525,8 @@ protected : bool replaceInProjectsConfirmCheck(); bool replaceInOpenDocsConfirmCheck(); + bool isSearchUnicodeCharOnAnsi(const wchar_t* text) const; + ContextMenu _swapPopupMenu; enum SwapButtonStatus {swap, down, up} _swapButtonStatus = swap; HWND _hSwapButton = nullptr; From 560f0116f7ae4ca8d17fd29fbe36a5856adb8f75 Mon Sep 17 00:00:00 2001 From: PeterCJ Date: Wed, 18 Mar 2026 15:00:42 -0700 Subject: [PATCH 2/3] Add .cf extension for "Properties"-language list in langs.model.xml Fix #17858, close #17870 --- PowerEditor/src/langs.model.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PowerEditor/src/langs.model.xml b/PowerEditor/src/langs.model.xml index 1a7f56791491..29be21b4a0c8 100644 --- a/PowerEditor/src/langs.model.xml +++ b/PowerEditor/src/langs.model.xml @@ -450,7 +450,7 @@ component description example externalhelp forwardhelpcategory forwardhelptargetname functionality inputs link notes outputs parameter remotehelprunspace role synopsis - + and break case continue data datasection declare declarecdll declaredll default deftype dim else elseif end enddatasection endenumeration endif endinterface endprocedure endselect endstructure endstructureunion enumeration extends fakereturn for foreach forever global gosub goto if includebinary includefile includepath interface newlist next or procedure procedurecdll proceduredll procedurereturn protected read repeat restore return select shared static step structure structureunion to until wend while xincludefile compilercase compilerdefault compilerelse compilerendif compilerendselect compilerif compilerselect From bcf57e71221c127b5d602dcf5b1943200408682f Mon Sep 17 00:00:00 2001 From: PeterCJ Date: Thu, 19 Mar 2026 08:49:08 -0700 Subject: [PATCH 3/3] Add "Style=STRINGRAW styleID=20" for lexer cpp to support C++11 raw string literals cf: https://community.notepad-plus-plus.org/topic/27457/c-11-raw-string-literal-syntax-hightlighting Fix #17875, close #17876 --- PowerEditor/installer/themes/Bespin.xml | 1 + PowerEditor/installer/themes/Black board.xml | 1 + PowerEditor/installer/themes/Choco.xml | 1 + PowerEditor/installer/themes/DansLeRuSH-Dark.xml | 1 + PowerEditor/installer/themes/DarkModeDefault.xml | 1 + PowerEditor/installer/themes/Deep Black.xml | 1 + PowerEditor/installer/themes/Hello Kitty.xml | 1 + PowerEditor/installer/themes/HotFudgeSundae.xml | 1 + PowerEditor/installer/themes/Mono Industrial.xml | 1 + PowerEditor/installer/themes/Monokai.xml | 1 + PowerEditor/installer/themes/MossyLawn.xml | 1 + PowerEditor/installer/themes/Navajo.xml | 1 + PowerEditor/installer/themes/Obsidian.xml | 1 + PowerEditor/installer/themes/Plastic Code Wrap.xml | 1 + PowerEditor/installer/themes/Ruby Blue.xml | 1 + PowerEditor/installer/themes/Solarized-light.xml | 1 + PowerEditor/installer/themes/Solarized.xml | 1 + PowerEditor/installer/themes/Twilight.xml | 1 + PowerEditor/installer/themes/Vibrant Ink.xml | 1 + PowerEditor/installer/themes/Zenburn.xml | 1 + PowerEditor/installer/themes/khaki.xml | 1 + PowerEditor/installer/themes/vim Dark Blue.xml | 1 + PowerEditor/src/stylers.model.xml | 1 + 23 files changed, 23 insertions(+) diff --git a/PowerEditor/installer/themes/Bespin.xml b/PowerEditor/installer/themes/Bespin.xml index 066b78a435bd..168708d3865d 100644 --- a/PowerEditor/installer/themes/Bespin.xml +++ b/PowerEditor/installer/themes/Bespin.xml @@ -77,6 +77,7 @@ Credits: + diff --git a/PowerEditor/installer/themes/Black board.xml b/PowerEditor/installer/themes/Black board.xml index 4ca962914c11..aa42fa622b13 100644 --- a/PowerEditor/installer/themes/Black board.xml +++ b/PowerEditor/installer/themes/Black board.xml @@ -79,6 +79,7 @@ Credits: + diff --git a/PowerEditor/installer/themes/Choco.xml b/PowerEditor/installer/themes/Choco.xml index 82e4bda0cf7c..0321d8b21765 100644 --- a/PowerEditor/installer/themes/Choco.xml +++ b/PowerEditor/installer/themes/Choco.xml @@ -79,6 +79,7 @@ Credits: + diff --git a/PowerEditor/installer/themes/DansLeRuSH-Dark.xml b/PowerEditor/installer/themes/DansLeRuSH-Dark.xml index 8c6c790a5930..d30aaa39d5fe 100644 --- a/PowerEditor/installer/themes/DansLeRuSH-Dark.xml +++ b/PowerEditor/installer/themes/DansLeRuSH-Dark.xml @@ -258,6 +258,7 @@ Installation : Copy this file to "%APPDATA%\Notepad++\themes" and in a portable + diff --git a/PowerEditor/installer/themes/DarkModeDefault.xml b/PowerEditor/installer/themes/DarkModeDefault.xml index c172389be3f9..4fc62d952073 100644 --- a/PowerEditor/installer/themes/DarkModeDefault.xml +++ b/PowerEditor/installer/themes/DarkModeDefault.xml @@ -269,6 +269,7 @@ License: GPL2 + diff --git a/PowerEditor/installer/themes/Deep Black.xml b/PowerEditor/installer/themes/Deep Black.xml index 7ded60c0491e..f1712dd897db 100644 --- a/PowerEditor/installer/themes/Deep Black.xml +++ b/PowerEditor/installer/themes/Deep Black.xml @@ -48,6 +48,7 @@ https://notepad-plus-plus.org/donate/ + diff --git a/PowerEditor/installer/themes/Hello Kitty.xml b/PowerEditor/installer/themes/Hello Kitty.xml index 401bae8d3239..dbf18de25cac 100644 --- a/PowerEditor/installer/themes/Hello Kitty.xml +++ b/PowerEditor/installer/themes/Hello Kitty.xml @@ -174,6 +174,7 @@ so your enhanced file can be included in Notepad++ future release. + diff --git a/PowerEditor/installer/themes/HotFudgeSundae.xml b/PowerEditor/installer/themes/HotFudgeSundae.xml index dd19d42fb889..1f5e86d4e1f3 100644 --- a/PowerEditor/installer/themes/HotFudgeSundae.xml +++ b/PowerEditor/installer/themes/HotFudgeSundae.xml @@ -275,6 +275,7 @@ Installation: + diff --git a/PowerEditor/installer/themes/Mono Industrial.xml b/PowerEditor/installer/themes/Mono Industrial.xml index 2048f32750e5..4ea438b20157 100644 --- a/PowerEditor/installer/themes/Mono Industrial.xml +++ b/PowerEditor/installer/themes/Mono Industrial.xml @@ -79,6 +79,7 @@ Credits: + diff --git a/PowerEditor/installer/themes/Monokai.xml b/PowerEditor/installer/themes/Monokai.xml index 2b5cc9d6f519..1a31cbedd8b0 100644 --- a/PowerEditor/installer/themes/Monokai.xml +++ b/PowerEditor/installer/themes/Monokai.xml @@ -79,6 +79,7 @@ Credits: + diff --git a/PowerEditor/installer/themes/MossyLawn.xml b/PowerEditor/installer/themes/MossyLawn.xml index b5e5e911cc69..48651701eb27 100644 --- a/PowerEditor/installer/themes/MossyLawn.xml +++ b/PowerEditor/installer/themes/MossyLawn.xml @@ -276,6 +276,7 @@ Installation: + diff --git a/PowerEditor/installer/themes/Navajo.xml b/PowerEditor/installer/themes/Navajo.xml index c8edabc1dc18..3827a428d15c 100644 --- a/PowerEditor/installer/themes/Navajo.xml +++ b/PowerEditor/installer/themes/Navajo.xml @@ -273,6 +273,7 @@ Installation: + diff --git a/PowerEditor/installer/themes/Obsidian.xml b/PowerEditor/installer/themes/Obsidian.xml index 553c5d4994ba..c44c00ef671f 100644 --- a/PowerEditor/installer/themes/Obsidian.xml +++ b/PowerEditor/installer/themes/Obsidian.xml @@ -179,6 +179,7 @@ Notepad++ Custom Style + diff --git a/PowerEditor/installer/themes/Plastic Code Wrap.xml b/PowerEditor/installer/themes/Plastic Code Wrap.xml index 28d623108f02..e391351e9d96 100644 --- a/PowerEditor/installer/themes/Plastic Code Wrap.xml +++ b/PowerEditor/installer/themes/Plastic Code Wrap.xml @@ -79,6 +79,7 @@ Credits: + diff --git a/PowerEditor/installer/themes/Ruby Blue.xml b/PowerEditor/installer/themes/Ruby Blue.xml index cb9f7edc5dba..ed95d849f2c7 100644 --- a/PowerEditor/installer/themes/Ruby Blue.xml +++ b/PowerEditor/installer/themes/Ruby Blue.xml @@ -74,6 +74,7 @@ http://sourceforge.net/donate/index.php?group_id=95717 + diff --git a/PowerEditor/installer/themes/Solarized-light.xml b/PowerEditor/installer/themes/Solarized-light.xml index 9d72d0fee6b9..d3bb4f702cf5 100644 --- a/PowerEditor/installer/themes/Solarized-light.xml +++ b/PowerEditor/installer/themes/Solarized-light.xml @@ -284,6 +284,7 @@ Installation: + diff --git a/PowerEditor/installer/themes/Solarized.xml b/PowerEditor/installer/themes/Solarized.xml index 407f507404f0..4e060f9fa0e2 100644 --- a/PowerEditor/installer/themes/Solarized.xml +++ b/PowerEditor/installer/themes/Solarized.xml @@ -345,6 +345,7 @@ Installation: + diff --git a/PowerEditor/installer/themes/Twilight.xml b/PowerEditor/installer/themes/Twilight.xml index b9f6b6f15621..3c2158a0e33f 100644 --- a/PowerEditor/installer/themes/Twilight.xml +++ b/PowerEditor/installer/themes/Twilight.xml @@ -80,6 +80,7 @@ Credits: + diff --git a/PowerEditor/installer/themes/Vibrant Ink.xml b/PowerEditor/installer/themes/Vibrant Ink.xml index 7c8dceeec6be..89051e9ca586 100644 --- a/PowerEditor/installer/themes/Vibrant Ink.xml +++ b/PowerEditor/installer/themes/Vibrant Ink.xml @@ -55,6 +55,7 @@ http://sourceforge.net/donate/index.php?group_id=95717 + diff --git a/PowerEditor/installer/themes/Zenburn.xml b/PowerEditor/installer/themes/Zenburn.xml index 8407f0da36d8..d9656de36c88 100644 --- a/PowerEditor/installer/themes/Zenburn.xml +++ b/PowerEditor/installer/themes/Zenburn.xml @@ -249,6 +249,7 @@ License: GPL2 + diff --git a/PowerEditor/installer/themes/khaki.xml b/PowerEditor/installer/themes/khaki.xml index 8ce7f661c9a9..82dc60411905 100644 --- a/PowerEditor/installer/themes/khaki.xml +++ b/PowerEditor/installer/themes/khaki.xml @@ -251,6 +251,7 @@ Installation: + diff --git a/PowerEditor/installer/themes/vim Dark Blue.xml b/PowerEditor/installer/themes/vim Dark Blue.xml index ea941400903c..163066cd5328 100644 --- a/PowerEditor/installer/themes/vim Dark Blue.xml +++ b/PowerEditor/installer/themes/vim Dark Blue.xml @@ -170,6 +170,7 @@ + diff --git a/PowerEditor/src/stylers.model.xml b/PowerEditor/src/stylers.model.xml index e3c5cb70686f..c671b3b58d03 100644 --- a/PowerEditor/src/stylers.model.xml +++ b/PowerEditor/src/stylers.model.xml @@ -237,6 +237,7 @@ +