mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-22 13:24:42 +02:00
[NEW_FEATURE] New feature: auto-complete matched delimiters (in progress).
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1109 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
9863633656
commit
86fd35de42
@ -4808,6 +4808,15 @@ bool NppParameters::writeGUIParams()
|
|||||||
|
|
||||||
TiXmlElement hist_element(TEXT(""));
|
TiXmlElement hist_element(TEXT(""));
|
||||||
hist_element.SetValue(TEXT("UserDefinePair"));
|
hist_element.SetValue(TEXT("UserDefinePair"));
|
||||||
|
|
||||||
|
// remove all old sub-nodes
|
||||||
|
for (TiXmlNode *subChildNode = childNode->FirstChildElement(TEXT("UserDefinePair"));
|
||||||
|
subChildNode;
|
||||||
|
subChildNode = subChildNode->NextSibling(TEXT("UserDefinePair")) )
|
||||||
|
{
|
||||||
|
childNode->RemoveChild(subChildNode);
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t i = 0, nb = _nppGUI._matchedPairConf._matchedPairs.size(); i < nb; ++i)
|
for (size_t i = 0, nb = _nppGUI._matchedPairConf._matchedPairs.size(); i < nb; ++i)
|
||||||
{
|
{
|
||||||
int open = _nppGUI._matchedPairConf._matchedPairs[i].first;
|
int open = _nppGUI._matchedPairConf._matchedPairs[i].first;
|
||||||
@ -5019,6 +5028,32 @@ bool NppParameters::writeGUIParams()
|
|||||||
autocExist = true;
|
autocExist = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!autocInsetExist)
|
||||||
|
{
|
||||||
|
TiXmlElement *GUIConfigElement = (GUIRoot->InsertEndChild(TiXmlElement(TEXT("GUIConfig"))))->ToElement();
|
||||||
|
GUIConfigElement->SetAttribute(TEXT("name"), TEXT("auto-insert"));
|
||||||
|
|
||||||
|
GUIConfigElement->SetAttribute(TEXT("parentheses"), _nppGUI._matchedPairConf._doParentheses?TEXT("yes"):TEXT("no"));
|
||||||
|
GUIConfigElement->SetAttribute(TEXT("brackets"), _nppGUI._matchedPairConf._doBrackets?TEXT("yes"):TEXT("no"));
|
||||||
|
GUIConfigElement->SetAttribute(TEXT("curlyBrackets"), _nppGUI._matchedPairConf._doCurlyBrackets?TEXT("yes"):TEXT("no"));
|
||||||
|
GUIConfigElement->SetAttribute(TEXT("quotes"), _nppGUI._matchedPairConf._doQuotes?TEXT("yes"):TEXT("no"));
|
||||||
|
GUIConfigElement->SetAttribute(TEXT("doubleQuotes"), _nppGUI._matchedPairConf._doDoubleQuotes?TEXT("yes"):TEXT("no"));
|
||||||
|
GUIConfigElement->SetAttribute(TEXT("htmlXmlTag"), _nppGUI._matchedPairConf._doHtmlXmlTag?TEXT("yes"):TEXT("no"));
|
||||||
|
|
||||||
|
TiXmlElement hist_element(TEXT(""));
|
||||||
|
hist_element.SetValue(TEXT("UserDefinePair"));
|
||||||
|
for (size_t i = 0, nb = _nppGUI._matchedPairConf._matchedPairs.size(); i < nb; ++i)
|
||||||
|
{
|
||||||
|
int open = _nppGUI._matchedPairConf._matchedPairs[i].first;
|
||||||
|
int close = _nppGUI._matchedPairConf._matchedPairs[i].second;
|
||||||
|
|
||||||
|
(hist_element.ToElement())->SetAttribute(TEXT("open"), open);
|
||||||
|
(hist_element.ToElement())->SetAttribute(TEXT("close"), close);
|
||||||
|
GUIConfigElement->InsertEndChild(hist_element);
|
||||||
|
}
|
||||||
|
autocInsetExist = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (dockingParamNode)
|
if (dockingParamNode)
|
||||||
{
|
{
|
||||||
// Rase tout
|
// Rase tout
|
||||||
|
@ -210,7 +210,9 @@ void AutoCompletion::insertMatchedChars(int character, const MatchedPairConf & m
|
|||||||
{
|
{
|
||||||
if (int(matchedPairs[i].first) == character)
|
if (int(matchedPairs[i].first) == character)
|
||||||
{
|
{
|
||||||
_pEditView->execute(SCI_INSERTTEXT, caretPos, (LPARAM)matchedPairs[i].second);
|
char userMatchedChar[2] = {'\0', '\0'};
|
||||||
|
userMatchedChar[0] = matchedPairs[i].second;
|
||||||
|
_pEditView->execute(SCI_INSERTTEXT, caretPos, (LPARAM)userMatchedChar);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2293,6 +2293,50 @@ BOOL CALLBACK AutoCompletionDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
|
|||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_CHAR), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_CHAR), FALSE);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_NOTE), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_NOTE), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::SendDlgItemMessage(_hSelf, IDD_AUTOCPARENTHESES_CHECK, BM_SETCHECK, nppGUI._matchedPairConf._doParentheses?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDD_AUTOCBRACKET_CHECK, BM_SETCHECK, nppGUI._matchedPairConf._doBrackets?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDD_AUTOCCURLYBRACKET_CHECK, BM_SETCHECK, nppGUI._matchedPairConf._doCurlyBrackets?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDD_AUTOC_QUOTESCHECK, BM_SETCHECK, nppGUI._matchedPairConf._doQuotes?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDD_AUTOC_DOUBLEQUOTESCHECK, BM_SETCHECK, nppGUI._matchedPairConf._doDoubleQuotes?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDD_AUTOCTAG_CHECK, BM_SETCHECK, nppGUI._matchedPairConf._doHtmlXmlTag?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
|
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT1, EM_LIMITTEXT, 1, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT1, EM_LIMITTEXT, 1, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT2, EM_LIMITTEXT, 1, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT2, EM_LIMITTEXT, 1, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT3, EM_LIMITTEXT, 1, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT3, EM_LIMITTEXT, 1, 0);
|
||||||
|
|
||||||
|
size_t nbMatchedPair = nppGUI._matchedPairConf._matchedPairs.size();
|
||||||
|
if (nbMatchedPair > 3)
|
||||||
|
nbMatchedPair = 3;
|
||||||
|
for (size_t i = 0; i < nbMatchedPair; ++i)
|
||||||
|
{
|
||||||
|
char openChar[2];
|
||||||
|
openChar[0] = nppGUI._matchedPairConf._matchedPairs[i].first;
|
||||||
|
openChar[1] = '\0';
|
||||||
|
char closeChar[2];
|
||||||
|
closeChar[0] = nppGUI._matchedPairConf._matchedPairs[i].second;
|
||||||
|
closeChar[1] = '\0';
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT1, WM_SETTEXT, 0, (LPARAM)openChar);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT1, WM_SETTEXT, 0, (LPARAM)closeChar);
|
||||||
|
}
|
||||||
|
else if (i == 1)
|
||||||
|
{
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT2, WM_SETTEXT, 0, (LPARAM)openChar);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT2, WM_SETTEXT, 0, (LPARAM)closeChar);
|
||||||
|
}
|
||||||
|
if (i == 2)
|
||||||
|
{
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT3, WM_SETTEXT, 0, (LPARAM)openChar);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT3, WM_SETTEXT, 0, (LPARAM)closeChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
case WM_COMMAND :
|
case WM_COMMAND :
|
||||||
@ -2301,11 +2345,33 @@ BOOL CALLBACK AutoCompletionDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
|
|||||||
{
|
{
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case IDC_BACKUPDIR_EDIT:
|
case IDC_MACHEDPAIROPEN_EDIT1 :
|
||||||
|
case IDC_MACHEDPAIRCLOSE_EDIT1:
|
||||||
|
case IDC_MACHEDPAIROPEN_EDIT2 :
|
||||||
|
case IDC_MACHEDPAIRCLOSE_EDIT2:
|
||||||
|
case IDC_MACHEDPAIROPEN_EDIT3 :
|
||||||
|
case IDC_MACHEDPAIRCLOSE_EDIT3:
|
||||||
{
|
{
|
||||||
TCHAR inputDir[MAX_PATH];
|
nppGUI._matchedPairConf._matchedPairs.clear();
|
||||||
::SendDlgItemMessage(_hSelf, IDC_BACKUPDIR_EDIT, WM_GETTEXT, MAX_PATH, (LPARAM)inputDir);
|
|
||||||
nppGUI._backupDir = inputDir;
|
char opener[2] = {'\0', '\0'};
|
||||||
|
char closer[2] = {'\0', '\0'};
|
||||||
|
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT1, WM_GETTEXT, MAX_PATH, (LPARAM)opener);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT1, WM_GETTEXT, MAX_PATH, (LPARAM)closer);
|
||||||
|
if (opener[0] != '\0' && closer[0] != '\0')
|
||||||
|
nppGUI._matchedPairConf._matchedPairs.push_back(pair<char, char>(opener[0], closer[0]));
|
||||||
|
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT2, WM_GETTEXT, MAX_PATH, (LPARAM)opener);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT2, WM_GETTEXT, MAX_PATH, (LPARAM)closer);
|
||||||
|
if (opener[0] != '\0' && closer[0] != '\0')
|
||||||
|
nppGUI._matchedPairConf._matchedPairs.push_back(pair<char, char>(opener[0], closer[0]));
|
||||||
|
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIROPEN_EDIT3, WM_GETTEXT, MAX_PATH, (LPARAM)opener);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDC_MACHEDPAIRCLOSE_EDIT3, WM_GETTEXT, MAX_PATH, (LPARAM)closer);
|
||||||
|
if (opener[0] != '\0' && closer[0] != '\0')
|
||||||
|
nppGUI._matchedPairConf._matchedPairs.push_back(pair<char, char>(opener[0], closer[0]));
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user