From e5ec9b9982df05673ca9e7aded26378ed92aaf6c Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Sat, 26 Nov 2022 02:37:49 +0100 Subject: [PATCH] +enh: extend AutoCloseBrackets (by Matteo-Nigro PR #4318) for Selection --- language/np3_af_za/menu_af_za.rc | 2 +- language/np3_be_by/menu_be_by.rc | 2 +- language/np3_de_de/menu_de_de.rc | 2 +- language/np3_el_gr/menu_el_gr.rc | 2 +- language/np3_en_gb/menu_en_gb.rc | 2 +- language/np3_en_us/menu_en_us.rc | 2 +- language/np3_es_es/menu_es_es.rc | 2 +- language/np3_es_mx/menu_es_mx.rc | 2 +- language/np3_fr_fr/menu_fr_fr.rc | 2 +- language/np3_hi_in/menu_hi_in.rc | 2 +- language/np3_hu_hu/menu_hu_hu.rc | 2 +- language/np3_id_id/menu_id_id.rc | 2 +- language/np3_ja_jp/menu_ja_jp.rc | 2 +- language/np3_ko_kr/menu_ko_kr.rc | 2 +- language/np3_nl_nl/menu_nl_nl.rc | 2 +- language/np3_pl_pl/menu_pl_pl.rc | 2 +- language/np3_pt_br/menu_pt_br.rc | 2 +- language/np3_pt_pt/menu_pt_pt.rc | 2 +- language/np3_ru_ru/menu_ru_ru.rc | 2 +- language/np3_sk_sk/menu_sk_sk.rc | 2 +- language/np3_sv_se/menu_sv_se.rc | 2 +- language/np3_tr_tr/menu_tr_tr.rc | 2 +- language/np3_vi_vn/menu_vi_vn.rc | 2 +- language/np3_zh_cn/menu_zh_cn.rc | 2 +- language/np3_zh_tw/menu_zh_tw.rc | 2 +- src/Helpers.h | 18 ----- src/Notepad3.c | 129 +++++++++++++++++++++++-------- src/SciCall.h | 10 +++ src/TypeDefs.h | 3 +- 29 files changed, 135 insertions(+), 75 deletions(-) diff --git a/language/np3_af_za/menu_af_za.rc b/language/np3_af_za/menu_af_za.rc index 21c538d95..d705431cf 100644 --- a/language/np3_af_za/menu_af_za.rc +++ b/language/np3_af_za/menu_af_za.rc @@ -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 diff --git a/language/np3_be_by/menu_be_by.rc b/language/np3_be_by/menu_be_by.rc index 73e467b42..acabe1018 100644 --- a/language/np3_be_by/menu_be_by.rc +++ b/language/np3_be_by/menu_be_by.rc @@ -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 diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc index c7beaa9ce..793e00e22 100644 --- a/language/np3_de_de/menu_de_de.rc +++ b/language/np3_de_de/menu_de_de.rc @@ -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 diff --git a/language/np3_el_gr/menu_el_gr.rc b/language/np3_el_gr/menu_el_gr.rc index 201aac995..1dd25f858 100644 --- a/language/np3_el_gr/menu_el_gr.rc +++ b/language/np3_el_gr/menu_el_gr.rc @@ -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 diff --git a/language/np3_en_gb/menu_en_gb.rc b/language/np3_en_gb/menu_en_gb.rc index 0ab48303f..00bc804ae 100644 --- a/language/np3_en_gb/menu_en_gb.rc +++ b/language/np3_en_gb/menu_en_gb.rc @@ -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 diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc index 4ebc6e2e8..e034b47b6 100644 --- a/language/np3_en_us/menu_en_us.rc +++ b/language/np3_en_us/menu_en_us.rc @@ -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 diff --git a/language/np3_es_es/menu_es_es.rc b/language/np3_es_es/menu_es_es.rc index 613212222..fd17aa05a 100644 --- a/language/np3_es_es/menu_es_es.rc +++ b/language/np3_es_es/menu_es_es.rc @@ -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 diff --git a/language/np3_es_mx/menu_es_mx.rc b/language/np3_es_mx/menu_es_mx.rc index 3eac96963..bda674e4d 100644 --- a/language/np3_es_mx/menu_es_mx.rc +++ b/language/np3_es_mx/menu_es_mx.rc @@ -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 diff --git a/language/np3_fr_fr/menu_fr_fr.rc b/language/np3_fr_fr/menu_fr_fr.rc index 3344ea5de..10c985bd2 100644 --- a/language/np3_fr_fr/menu_fr_fr.rc +++ b/language/np3_fr_fr/menu_fr_fr.rc @@ -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 diff --git a/language/np3_hi_in/menu_hi_in.rc b/language/np3_hi_in/menu_hi_in.rc index 8d23e3160..4379c1f30 100644 --- a/language/np3_hi_in/menu_hi_in.rc +++ b/language/np3_hi_in/menu_hi_in.rc @@ -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 diff --git a/language/np3_hu_hu/menu_hu_hu.rc b/language/np3_hu_hu/menu_hu_hu.rc index 5ada894c0..3bbccb685 100644 --- a/language/np3_hu_hu/menu_hu_hu.rc +++ b/language/np3_hu_hu/menu_hu_hu.rc @@ -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 diff --git a/language/np3_id_id/menu_id_id.rc b/language/np3_id_id/menu_id_id.rc index 3bf1a8479..f8f9ba570 100644 --- a/language/np3_id_id/menu_id_id.rc +++ b/language/np3_id_id/menu_id_id.rc @@ -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 diff --git a/language/np3_ja_jp/menu_ja_jp.rc b/language/np3_ja_jp/menu_ja_jp.rc index c54f1b1d0..6f0366b6d 100644 --- a/language/np3_ja_jp/menu_ja_jp.rc +++ b/language/np3_ja_jp/menu_ja_jp.rc @@ -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 diff --git a/language/np3_ko_kr/menu_ko_kr.rc b/language/np3_ko_kr/menu_ko_kr.rc index e97989bb8..2f7bd6ddc 100644 --- a/language/np3_ko_kr/menu_ko_kr.rc +++ b/language/np3_ko_kr/menu_ko_kr.rc @@ -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 diff --git a/language/np3_nl_nl/menu_nl_nl.rc b/language/np3_nl_nl/menu_nl_nl.rc index b0fad9933..608039071 100644 --- a/language/np3_nl_nl/menu_nl_nl.rc +++ b/language/np3_nl_nl/menu_nl_nl.rc @@ -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 diff --git a/language/np3_pl_pl/menu_pl_pl.rc b/language/np3_pl_pl/menu_pl_pl.rc index cbd71a833..7966b4af2 100644 --- a/language/np3_pl_pl/menu_pl_pl.rc +++ b/language/np3_pl_pl/menu_pl_pl.rc @@ -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 diff --git a/language/np3_pt_br/menu_pt_br.rc b/language/np3_pt_br/menu_pt_br.rc index dcdd22bee..95573425f 100644 --- a/language/np3_pt_br/menu_pt_br.rc +++ b/language/np3_pt_br/menu_pt_br.rc @@ -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 diff --git a/language/np3_pt_pt/menu_pt_pt.rc b/language/np3_pt_pt/menu_pt_pt.rc index a17dd762a..608486e2b 100644 --- a/language/np3_pt_pt/menu_pt_pt.rc +++ b/language/np3_pt_pt/menu_pt_pt.rc @@ -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 diff --git a/language/np3_ru_ru/menu_ru_ru.rc b/language/np3_ru_ru/menu_ru_ru.rc index 5be8f9802..9327347e6 100644 --- a/language/np3_ru_ru/menu_ru_ru.rc +++ b/language/np3_ru_ru/menu_ru_ru.rc @@ -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 diff --git a/language/np3_sk_sk/menu_sk_sk.rc b/language/np3_sk_sk/menu_sk_sk.rc index 6fe3d9c14..a0cd09f9f 100644 --- a/language/np3_sk_sk/menu_sk_sk.rc +++ b/language/np3_sk_sk/menu_sk_sk.rc @@ -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 diff --git a/language/np3_sv_se/menu_sv_se.rc b/language/np3_sv_se/menu_sv_se.rc index c593a264d..b77561d60 100644 --- a/language/np3_sv_se/menu_sv_se.rc +++ b/language/np3_sv_se/menu_sv_se.rc @@ -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 diff --git a/language/np3_tr_tr/menu_tr_tr.rc b/language/np3_tr_tr/menu_tr_tr.rc index 2488b2f0d..cc611aeb6 100644 --- a/language/np3_tr_tr/menu_tr_tr.rc +++ b/language/np3_tr_tr/menu_tr_tr.rc @@ -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 diff --git a/language/np3_vi_vn/menu_vi_vn.rc b/language/np3_vi_vn/menu_vi_vn.rc index 256b81a8a..a4de9a31b 100644 --- a/language/np3_vi_vn/menu_vi_vn.rc +++ b/language/np3_vi_vn/menu_vi_vn.rc @@ -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 diff --git a/language/np3_zh_cn/menu_zh_cn.rc b/language/np3_zh_cn/menu_zh_cn.rc index f49843a07..4f7bc2d1d 100644 --- a/language/np3_zh_cn/menu_zh_cn.rc +++ b/language/np3_zh_cn/menu_zh_cn.rc @@ -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 diff --git a/language/np3_zh_tw/menu_zh_tw.rc b/language/np3_zh_tw/menu_zh_tw.rc index cf2dfb9ca..51c1458fe 100644 --- a/language/np3_zh_tw/menu_zh_tw.rc +++ b/language/np3_zh_tw/menu_zh_tw.rc @@ -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 diff --git a/src/Helpers.h b/src/Helpers.h index 5fd3c1675..13dd4090f 100644 --- a/src/Helpers.h +++ b/src/Helpers.h @@ -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) diff --git a/src/Notepad3.c b/src/Notepad3.c index 91b199eda..5c216e050 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -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; diff --git a/src/SciCall.h b/src/SciCall.h index 86b323179..6ba97dabf 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -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) diff --git a/src/TypeDefs.h b/src/TypeDefs.h index a637810e6..0f1b4de92 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -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