+enh: extend AutoCloseBrackets (by Matteo-Nigro PR #4318) for Selection

This commit is contained in:
METANEOCORTEX\Kotti 2022-11-26 02:37:49 +01:00
parent bcfb603eb6
commit e5ec9b9982
29 changed files with 135 additions and 75 deletions

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Woord Omslag Instellings...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "L&ang Lyn Instellings...", IDM_SET_LONGLINESETTINGS
MENUITEM "Outo-In&dent Teks", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Outo-Sluit &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "O&uto-Voltooi Woorde", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Outo-Voltooi Le&xer-Sleutel-Woorde", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Налады перано&са радкоў...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Налады до&ўгіх радкоў...", IDM_SET_LONGLINESETTINGS
MENUITEM "Аўта&матычны водступ тэксту", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Аўтазакрыццё тэгаў &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Cамадавяр&шэнне слоў", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Cамадавяршэнне на аснове &лексемаў", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Wort Umbruch Einstellungen...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "&Lang Zeilen Einstellungen...", IDM_SET_LONGLINESETTINGS
MENUITEM "Auto Text &Einrückung", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Klammer Schließen", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Tagabschluss &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Auto Wort &Vorschläge", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto &Lexer KeyWord Vorschläge", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Ρυθμίσεις αναδίπλωσης &λέξεων...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Ρυθμίσεις &μεγάλης γραμμής...", IDM_SET_LONGLINESETTINGS
MENUITEM "Αυτόματη εσ&οχή κειμένου", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Αυτόματο κλείσιμο Η&ΤΜL/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Αυτόματη συμπλήρωση λέ&ξεων", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Α&υτόμ. συμπλήρωση λέ&ξεων-κλειδιών του Lexer", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Word Wrap Settings...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "L&ong Line Settings...", IDM_SET_LONGLINESETTINGS
MENUITEM "Auto In&dent Text", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&uto Complete Words", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto Complete Lexer-&Key-Words", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Word Wrap Settings...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "L&ong Line Settings...", IDM_SET_LONGLINESETTINGS
MENUITEM "Auto In&dent Text", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&uto Complete Words", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto Complete Lexer-&Key-Words", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Configuración &ajuste de línea...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Configuración de &larga línea...", IDM_SET_LONGLINESETTINGS
MENUITEM "&Sangría texto automático", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Cierre &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&uto completar palabras", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto completar palabras clave 'Le&xer'", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Configuración &ajuste de línea...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Configuración de &larga línea...", IDM_SET_LONGLINESETTINGS
MENUITEM "&Sangría texto automático", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Cierre &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&uto completar palabras", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto completar palabras clave 'Le&xer'", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Paramètres de saut de ligne automatique...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Paramètres de ligne l&ongue...", IDM_SET_LONGLINESETTINGS
MENUITEM "Retrait automatique &du texte", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto-fermeture des balises &HTML/XML\tCtrl+Maj+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&uto-complétion des mots", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto-complétion des &mots-clés Lexer", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "शब्द लपेटने की सेटिंग (&W)...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "लंबी रेखा की सेटिंग (&O)...", IDM_SET_LONGLINESETTINGS
MENUITEM "स्वत: टेक्स्ट को इंडेंट करें (&D)", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "HTML/XML स्वत: बंद करें (&H)\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "शब्द स्वतः पूर्ण करें (&U)", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Lexer-Key-Words स्वतः पूर्ण करें (&K)", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Sortörés beállítások...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "&Hosszú sorok beállításai...", IDM_SET_LONGLINESETTINGS
MENUITEM "A&utomatikus behúzás", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "HTML/&XML aut. lezárás\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Szó kie&gészítés", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Lexer kul&csszavak kiegészítése", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Word Wrap Settings...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "L&ong Line Settings...", IDM_SET_LONGLINESETTINGS
MENUITEM "Auto In&dent Text", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&uto Complete Words", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto Complete Lexer-&Key-Words", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "折り返し方の設定(&W)...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "行の長さガイドの設定(&O)...", IDM_SET_LONGLINESETTINGS
MENUITEM "自動インデント(&D)", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "自動閉じHTML/XMLタグ(&H)\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "単語補完(&U)", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "予約語を自動補完(&K)", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "줄 바꿈 설정(&W)...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "긴 줄 설정(&O)...", IDM_SET_LONGLINESETTINGS
MENUITEM "텍스트 자동 들여쓰기(&D)", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "HTML/XML 자동 닫기(&H)\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "단어 자동 완성(&U)", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "어휘 자동 완성(&K)", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Instellingen voor regelterugloop...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "&Lange regelinstellingen...", IDM_SET_LONGLINESETTINGS
MENUITEM "Te&kst automatisch inspringen", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "&HTML/XML tags automatisch sluiten\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Sleutelwoorden &automatisch aanvullen", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "'Lexer' sleutelwoorden auto&matisch aanvullen", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Ustawienia zawijania wierszy...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "&Ustawienia długości wierszy...", IDM_SET_LONGLINESETTINGS
MENUITEM "Automatyczne wcięcie", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Automatyczne zamykanie &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&utouzupełnianie wyrazów", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Autouzupełnianie Lekserem", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Configurações de Quebra de &Palavra...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Configurações de Linha &Longa...", IDM_SET_LONGLINESETTINGS
MENUITEM "In&dentar Texto Automaticamente", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Fechar Automaticamente &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Completa Palavras A&utomaticamente", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Completa Automaticamente Palavras-&Chaves-Léxicas", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Definições de moldagem de texto...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Definições de linhas &longas...", IDM_SET_LONGLINESETTINGS
MENUITEM "In&dentação automática do texto", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Fechar automaticamente &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Conclusão a&utomática das palavras", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Conclusão automática palavras chave Lexer", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Настройка переноса &строк...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Настро&йка длинных строк...", IDM_SET_LONGLINESETTINGS
MENUITEM "Авто&матический отступ текста", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Автозакрытие тегов &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Авто&завершение слов", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Автозавершение на основе &лексем", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Na&stavenie zalomenia slov...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Nastavenie &dĺžky riadkov...", IDM_SET_LONGLINESETTINGS
MENUITEM "Auto&matická identifikácia textu", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto-zakončovanie &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&utomatické dokončovanie slov", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto-kompletizácia kľúčových slov &Lexer", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Automatiskt radbyte...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "Långa rader...", IDM_SET_LONGLINESETTINGS
MENUITEM "Automatiskt indrag", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Stäng HTML/XML automatiskt\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Kompletera ord automatiskt", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Komplettera Lexer-&Key-Words automatiskt", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "Sözcük &kaydırma ayarları...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "&Uzun satır ayarları...", IDM_SET_LONGLINESETTINGS
MENUITEM "Otomatik girinti kullanılsın", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "HTML/&XML kod imleri otomatik kapatılsın\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "Sözcükler &otomatik tamamlansın", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "&Lexer-&anahtar sözcükleri otomatik tamamlansın", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "&Word Wrap Settings...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "L&ong Line Settings...", IDM_SET_LONGLINESETTINGS
MENUITEM "Auto In&dent Text", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "A&uto Complete Words", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "Auto Complete Lexer-&Key-Words", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "自动换行设置(&W)...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "长行标记设置(&O)...", IDM_SET_LONGLINESETTINGS
MENUITEM "自动缩进(&D)", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "自动关闭 &HTML/XML 标记\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "自动补全单词(&U)", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "自动补全语法关键字(&K)", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -469,7 +469,7 @@ BEGIN
MENUITEM "自動換行設定(&W)...", IDM_SET_WORDWRAPSETTINGS
MENUITEM "長行標記設定(&O)...", IDM_SET_LONGLINESETTINGS
MENUITEM "自動縮排(&D)", IDM_SET_AUTOINDENTTEXT
///MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "Auto Close Brackets", IDM_SET_AUTOCLOSEBRACKETS
MENUITEM "自動關閉 HTML/XML 標記(&H)\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
MENUITEM "自動完成單詞(&U)", IDM_SET_AUTOCOMPLETEWORDS
MENUITEM "自動完成語法關鍵字(&K)", IDM_SET_AUTOCLEXKEYWORDS

View File

@ -56,22 +56,6 @@
// ============================================================================
#if (defined(_DEBUG) || defined(DEBUG)) && !defined(NDEBUG)
#ifndef _DEBUG
#define _DEBUG 1
#endif
#ifndef DEBUG
#define DEBUG 1
#endif
inline void* reallocz(void* pMem, size_t numBytes) { void* pM = realloc(pMem, numBytes); if (pM) memset(pM, 0, numBytes); return pM; }
#define AllocMem(B, F) (((F)&HEAP_ZERO_MEMORY) ? calloc(1, B) : malloc(B))
#define ReAllocMem(M, B, F) ((M) ? (((F)&HEAP_ZERO_MEMORY) ? reallocz(M, B) : realloc(M, B)) : AllocMem(B, F))
#define ReAllocGrowMem(M, B, F) ((M) ? ((_msize(M) >= (B)) ? (((F)&HEAP_ZERO_MEMORY) ? (memset(M, 0, B), (M)) : (M)) : (((F)&HEAP_ZERO_MEMORY) ? reallocz(M, B) : realloc(M, B))) : AllocMem(B, F))
#define FreeMem(M) ((M ? (free(M)) : NOOP), true)
#define SizeOfMem(M) ((M) ? _msize(M) : 0)
#else // RELASE VERSION
// direct heap allocation
#if (defined(_DEBUG) || defined(DEBUG)) && !defined(NDEBUG)
#define DEFAULT_ALLOC_FLAGS (HEAP_GENERATE_EXCEPTIONS | HEAP_TAIL_CHECKING_ENABLED | HEAP_FREE_CHECKING_ENABLED | HEAP_CREATE_HARDENED)
@ -117,8 +101,6 @@ inline size_t SizeOfMem(LPCVOID lpMem)
return (lpMem ? HeapSize(Globals.hndlProcessHeap, 0, lpMem) : 0);
}
#endif
// ============================================================================
#if (defined(_DEBUG) || defined(DEBUG)) && !defined(NDEBUG)

View File

@ -169,6 +169,8 @@ static bool s_bPrevFullScreenFlag = false;
static double s_dExpression = 0.0;
static te_int_t s_iExprError = -1;
static char* s_SelectionBuffer = NULL;
//~static CONST WCHAR *const s_ToolbarWndClassName = L"NP3_TOOLBAR_CLASS";
static int const INISECTIONBUFCNT = 32; // .ini file load buffer in KB
@ -869,6 +871,11 @@ static void _CleanUpResources(const HWND hwnd, bool bIsInitialized)
s_hEventFileDeletedExt = INVALID_HANDLE_VALUE;
}
if (s_SelectionBuffer) {
FreeMem(s_SelectionBuffer);
s_SelectionBuffer = NULL;
}
// ---------------------------------------------
// Save Settings should be done elsewhere before
// ---------------------------------------------
@ -1035,7 +1042,7 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
_InitGlobals();
InitDarkMode();
// Windows Class name
StringCchCopy(s_wchWndClass, COUNTOF(s_wchWndClass), _W(SAPPNAME));
@ -1044,6 +1051,10 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance,
Globals.hPrevInst = hPrevInstance;
Globals.hndlProcessHeap = GetProcessHeap();
// now using AllocMen() methods
s_SelectionBuffer = (char*)AllocMem(128, HEAP_ZERO_MEMORY);
Path_GetAppDirectory(Paths.ModuleDirectory);
if (!Path_GetCurrentDirectory(Paths.WorkingDirectory)) {
@ -8101,10 +8112,13 @@ static void _HandleAutoIndent(int const charAdded)
//
// _HandleAutoCloseTags()
//
static void _HandleAutoCloseTags()
static void _HandleAutoCloseTags()
{
///int const lexerID = SciCall_GetLexer();
///if (lexerID == SCLEX_HTML || lexerID == SCLEX_XML)
if (Sci_IsMultiSelection()) {
return;
}
/// int const lexerID = SciCall_GetLexer();
/// if (lexerID == SCLEX_HTML || lexerID == SCLEX_XML)
DocPos const maxSearchBackward = 8192;
DocPos const iCurPos = SciCall_GetCurrentPos();
DocPos const iHelper = iCurPos - maxSearchBackward;
@ -8153,25 +8167,78 @@ static void _HandleAutoCloseTags()
//=============================================================================
//
// _HandleAutoCloseBrackets()
// _HandleInsertCheck()
//
static void _HandleAutoCloseBrackets(int const x)
static inline void _SaveSelectionToBuffer()
{
DocPos const iCurPos = SciCall_GetCurrentPos();
UndoTransActionBegin();
switch(x){
case '[':
SciCall_AddText(1,"]");
break;
case '{':
SciCall_AddText(1,"}");
break;
case '(':
SciCall_AddText(1,")");
break;
if (!s_SelectionBuffer) {
return;
}
if (Sci_IsMultiOrRectangleSelection()) {
s_SelectionBuffer[0] = '\0';
s_SelectionBuffer[1] = 'X';
return;
}
size_t len = SciCall_GetSelText(NULL);
if ((len + 3) > SizeOfMem(s_SelectionBuffer)) {
s_SelectionBuffer = (char*)ReAllocMem(s_SelectionBuffer, len + 3, HEAP_ZERO_MEMORY);
}
Sci_GetSelectionTextN(&s_SelectionBuffer[1], SizeOfMem(s_SelectionBuffer) - 2);
s_SelectionBuffer[0] = s_SelectionBuffer[1];
}
static inline DocPos _EncloseSelectionBuffer(const char op, const char cl)
{
if (!s_SelectionBuffer) {
return 0;
}
if (s_SelectionBuffer[0] == '\0' && s_SelectionBuffer[1] == 'X') {
// IsMultiOrRectangleSelection:
s_SelectionBuffer[0] = op;
s_SelectionBuffer[1] = '\0';
return 1;
}
size_t len = s_SelectionBuffer ? strlen(s_SelectionBuffer) : 0;
len += (len ? 0 : 1); // empty correction
s_SelectionBuffer[0] = op;
s_SelectionBuffer[len++] = cl;
s_SelectionBuffer[len] = '\0';
return len;
}
static void _HandleInsertCheck(const SCNotification* const scn)
{
if (Sci_IsMultiOrRectangleSelection() || !scn || !(scn->text)) {
return;
}
if (Settings.AutoCloseBrackets) {
if (scn->length == 1) {
bool bInserted = true;
DocPos len = 0;
switch (scn->text[0]) {
case '[':
len = _EncloseSelectionBuffer('[', ']');
break;
case '{':
len = _EncloseSelectionBuffer('{', '}');
break;
case '(':
len = _EncloseSelectionBuffer('(', ')');
break;
default:
bInserted = false;
break;
}
if (bInserted) {
SciCall_ChangeInsertion(len, s_SelectionBuffer);
if (len == 2) {
PostMessage(Globals.hwndEdit, SCI_CHARLEFT, 0, 0);
}
}
}
}
SciCall_SetSel(iCurPos, iCurPos);
EndUndoTransAction();
}
@ -8198,6 +8265,7 @@ static bool _IsIMEOpenInNoNativeMode()
#endif
//=============================================================================
//
// MsgNotifyLean() - Handles WM_NOTIFY (only absolute neccessary events)
@ -8222,18 +8290,24 @@ inline static LRESULT _MsgNotifyLean(const SCNotification *const scn, bool* bMod
if ((iModType & SC_MULTISTEPUNDOREDO) && !(iModType & SC_LASTSTEPINUNDOREDO)) {
return TRUE; // wait for last step in multi-step-undo/redo
}
if (iModType & SC_MOD_INSERTCHECK) {
if (!(iModType & (SC_PERFORMED_UNDO | SC_PERFORMED_REDO))) {
_HandleInsertCheck(scn);
}
}
if (iModType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE)) {
//*bModified = false; // not yet
*bModified = false; // not yet
if (!(iModType & (SC_PERFORMED_UNDO | SC_PERFORMED_REDO))) {
if (!_InUndoRedoTransaction() && (_urtoken < URTok_TokenStart)) {
bool const bIsSelEmpty = SciCall_IsSelectionEmpty();
_SaveSelectionToBuffer();
bool const bSelEmpty = SciCall_IsSelectionEmpty();
bool const bIsMultiRectSel = Sci_IsMultiOrRectangleSelection();
if (!bIsSelEmpty || bIsMultiRectSel) {
if (!bSelEmpty || bIsMultiRectSel) {
LONG const tok = _SaveUndoSelection();
_urtoken = (tok >= URTok_TokenStart ? tok : _urtoken);
}
// TODO: @@@ Find reason for why this NOP workaround is needed:
if (!bIsSelEmpty && bIsMultiRectSel) {
if (!bSelEmpty && bIsMultiRectSel) {
// need to trigger SCI:InvalidateCaret()
bool const bAddSelTyping = SciCall_GetAdditionalSelectionTyping();
//~SciCall_SetAdditionalSelectionTyping(!bAddSelTyping); // v5.1.1: no check for change, so:
@ -8505,13 +8579,6 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const SCNotification* const scn)
_HandleAutoCloseTags();
}
break;
case '[':
case '{':
case '(':
if (Settings.AutoCloseBrackets) {
_HandleAutoCloseBrackets(ich);
}
break;
case '?':
_EvalTinyExpr(true);
break;

View File

@ -373,6 +373,8 @@ DeclareSciCallV1(SetSearchFlags, SETSEARCHFLAGS, int, flags);
DeclareSciCallR2(SearchInTarget, SEARCHINTARGET, DocPos, DocPos, length, const char*, text);
DeclareSciCallV2(DeleteRange, DELETERANGE, DocPos, start, DocPos, length);
DeclareSciCallV2(ChangeInsertion, CHANGEINSERTION, DocPos, length, const char*, text);
DeclareSciCallV1(SetAnchor, SETANCHOR, DocPos, position);
DeclareSciCallV1(SetCurrentPos, SETCURRENTPOS, DocPos, position);
@ -808,6 +810,14 @@ inline void Sci_RedrawScrollbars()
// ----------------------------------------------------------------------------
inline void Sci_GetSelectionTextN(char* pBuffer, size_t count)
{
size_t const selLen = SciCall_GetSelText(NULL);
StringCchCopyNA(pBuffer, count, SciCall_GetRangePointer(SciCall_GetSelectionStart(), selLen), selLen);
}
// ----------------------------------------------------------------------------
#define Sci_GetEOLLen() ((SciCall_GetEOLMode() == SC_EOL_CRLF) ? 2 : 1)
inline int Sci_GetCurrentEOL_A(LPCH eol)

View File

@ -922,6 +922,7 @@ typedef struct THEMEFILES {
// SC_MOD_INSERTTEXT, SC_MOD_DELETETEXT, SC_MOD_CHANGESTYLE, SC_MOD_CHANGEFOLD, SC_PERFORMED_USER,
// SC_PERFORMED_UNDO, SC_PERFORMED_REDO, SC_MULTISTEPUNDOREDO, SC_LASTSTEPINUNDOREDO, SC_MOD_CHANGEMARKER,
// SC_MOD_BEFOREINSERT, SC_MOD_BEFOREDELETE, SC_MULTILINEUNDOREDO, and SC_MODEVENTMASKALL.
// SC_MOD_INSERTCHECK
//
///~ int const evtMask = SC_MODEVENTMASKALL; (!) - don't listen to all events (SC_MOD_CHANGESTYLE) => RECURSION!
///~ SciCall_SetModEventMask(evtMask);
@ -932,7 +933,7 @@ typedef enum SciEventMask {
EVM_None = SC_MOD_NONE,
EVM_UndoRedo = SC_MOD_CONTAINER | SC_PERFORMED_UNDO | SC_PERFORMED_REDO | SC_MULTILINEUNDOREDO | SC_MULTISTEPUNDOREDO | SC_LASTSTEPINUNDOREDO |
SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT | SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE,
SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT | SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE | SC_MOD_INSERTCHECK,
EVM_Default = EVM_UndoRedo
//~EVM_All = SC_MODEVENTMASKALL ~ don't use