mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
Implementation of automatic parenthesis closure
Inserted an item in the menu allowing this to be done. At the moment I have only modified the English and Italian .rc files. If the functionality is implemented I can edit all other rc files with the English string.
This commit is contained in:
parent
2c75ac827b
commit
8bd083877d
@ -824,6 +824,7 @@
|
||||
#define IDM_SET_NOPRESERVECARET 42039
|
||||
#define IDM_SET_MUTE_MESSAGEBEEP 42040
|
||||
#define IDM_SET_EVALTINYEXPRONSEL 42041
|
||||
#define IDM_SET_AUTOCLOSEBRACKETS 42042
|
||||
|
||||
#define IDM_HELP_ABOUT 43000
|
||||
#define IDM_HELP_CMD 43001
|
||||
|
||||
@ -469,6 +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 &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
|
||||
|
||||
@ -469,6 +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 &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
|
||||
|
||||
@ -469,6 +469,7 @@ BEGIN
|
||||
MENUITEM "Impostazioni &A capo automatico...", IDM_SET_WORDWRAPSETTINGS
|
||||
MENUITEM "Impostazioni &Righe lunghe...", IDM_SET_LONGLINESETTINGS
|
||||
MENUITEM "In&dentazione automatica", IDM_SET_AUTOINDENTTEXT
|
||||
MENUITEM "Chiusura automatica Parentesi", IDM_SET_AUTOCLOSEBRACKETS
|
||||
MENUITEM "Chiusura automatica &HTML/XML\tCtrl+Shift+H", IDM_SET_AUTOCLOSETAGS
|
||||
MENUITEM "&Autocompletamento delle parole", IDM_SET_AUTOCOMPLETEWORDS
|
||||
MENUITEM "Autocompletamento &keywords lexer", IDM_SET_AUTOCLEXKEYWORDS
|
||||
|
||||
@ -1518,6 +1518,7 @@ void LoadSettings()
|
||||
GET_BOOL_VALUE_FROM_INISECTION(ShowWordWrapSymbols, true);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(MatchBraces, true);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(AutoCloseTags, false);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(AutoCloseBrackets, false);
|
||||
GET_INT_VALUE_FROM_INISECTION(HighlightCurrentLine, 1, 0, 2);
|
||||
GET_INT_VALUE_FROM_INISECTION(ChangeHistoryMode, ChgHist_ON | ChgHist_MARGIN, ChgHist_NONE, ChgHist_ALL);
|
||||
GET_BOOL_VALUE_FROM_INISECTION(ChangeHistoryMargin, true);
|
||||
@ -1975,6 +1976,7 @@ static bool _SaveSettings(bool bForceSaveSettings)
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ShowWordWrapSymbols);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, MatchBraces);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, AutoCloseTags);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, AutoCloseBrackets);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, HighlightCurrentLine);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, ChangeHistoryMode);
|
||||
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, HyperlinkHotspot);
|
||||
|
||||
@ -4313,6 +4313,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
//i = SciCall_GetLexer();
|
||||
//EnableCmd(hmenu,IDM_SET_AUTOCLOSETAGS,(i == SCLEX_HTML || i == SCLEX_XML));
|
||||
CheckCmd(hmenu, IDM_SET_AUTOCLOSETAGS, Settings.AutoCloseTags /*&& (i == SCLEX_HTML || i == SCLEX_XML)*/);
|
||||
CheckCmd(hmenu, IDM_SET_AUTOCLOSEBRACKETS, Settings.AutoCloseBrackets);
|
||||
|
||||
CheckCmd(hmenu, IDM_SET_REUSEWINDOW, Flags.bReuseWindow);
|
||||
CheckCmd(hmenu, IDM_SET_SINGLEFILEINSTANCE, Flags.bSingleFileInstance);
|
||||
@ -6014,6 +6015,10 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
|
||||
Settings.AutoCloseTags = !Settings.AutoCloseTags;
|
||||
break;
|
||||
|
||||
case IDM_SET_AUTOCLOSEBRACKETS:
|
||||
Settings.AutoCloseBrackets = !Settings.AutoCloseBrackets;
|
||||
break;
|
||||
|
||||
case IDM_VIEW_TOGGLE_HILITCURLN:
|
||||
case IDM_VIEW_HILITCURLN_NONE:
|
||||
case IDM_VIEW_HILITCURLN_BACK:
|
||||
@ -8145,6 +8150,31 @@ static void _HandleAutoCloseTags()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// _HandleAutoCloseBrackets()
|
||||
//
|
||||
static void _HandleAutoCloseBrackets(int const x)
|
||||
{
|
||||
DocPos const iCurPos = SciCall_GetCurrentPos();
|
||||
DocPos const iStartPos = max_p(0, iCurPos - 1);
|
||||
SciCall_SetSel(iStartPos, iCurPos);
|
||||
switch(x){
|
||||
case '[':
|
||||
EditReplaceSelection("[]", false);
|
||||
break;
|
||||
case '{':
|
||||
EditReplaceSelection("{}", false);
|
||||
break;
|
||||
case '(':
|
||||
EditReplaceSelection("()", false);
|
||||
break;
|
||||
}
|
||||
SciCall_SetSel(iCurPos, iCurPos);
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
//=============================================================================
|
||||
//
|
||||
@ -8475,6 +8505,11 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const SCNotification* const scn)
|
||||
_HandleAutoCloseTags();
|
||||
}
|
||||
break;
|
||||
case '[':
|
||||
case '{':
|
||||
case '(':
|
||||
_HandleAutoCloseBrackets(ich);
|
||||
break;
|
||||
case '?':
|
||||
_EvalTinyExpr(true);
|
||||
break;
|
||||
|
||||
@ -581,6 +581,7 @@ typedef struct SETTINGS_T {
|
||||
bool DocReadOnlyMode;
|
||||
bool MatchBraces;
|
||||
bool AutoCloseTags;
|
||||
bool AutoCloseBrackets;
|
||||
int HighlightCurrentLine;
|
||||
int ChangeHistoryMode;
|
||||
bool ChangeHistoryMargin;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user