mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-31 01:34:58 +02:00
[NEW_FEATURE] Add function + word completion option in auto-completion feature.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1177 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
f1e1cfbe90
commit
63626f65c1
@ -5269,7 +5269,7 @@ struct Quote{
|
|||||||
const char *_quote;
|
const char *_quote;
|
||||||
};
|
};
|
||||||
|
|
||||||
const int nbQuote = 183;
|
const int nbQuote = 193;
|
||||||
Quote quotes[nbQuote] = {
|
Quote quotes[nbQuote] = {
|
||||||
{"Notepad++", "Good programmers use Notepad++ to code.\nExtreme programmers use MS Word to code, in Comic Sans, center aligned."},
|
{"Notepad++", "Good programmers use Notepad++ to code.\nExtreme programmers use MS Word to code, in Comic Sans, center aligned."},
|
||||||
{"Martin Golding", "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."},
|
{"Martin Golding", "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."},
|
||||||
@ -5438,6 +5438,16 @@ Quote quotes[nbQuote] = {
|
|||||||
{"Anonymous #134", "Linux is user friendly.\nIt's just picky about its friends."},
|
{"Anonymous #134", "Linux is user friendly.\nIt's just picky about its friends."},
|
||||||
{"Anonymous #135", "Theory is when you know something, but it doesn't work.\nPractice is when something works, but you don't know why.\nProgrammers combine theory and practice: nothing works and they don't know why."},
|
{"Anonymous #135", "Theory is when you know something, but it doesn't work.\nPractice is when something works, but you don't know why.\nProgrammers combine theory and practice: nothing works and they don't know why."},
|
||||||
{"Anonymous #136", "Documentation is like sex:\nwhen it's good, it's very, very good;\nwhen it's bad, it's better than nothing."},
|
{"Anonymous #136", "Documentation is like sex:\nwhen it's good, it's very, very good;\nwhen it's bad, it's better than nothing."},
|
||||||
|
{"Anonymous #137", "Home is where you poop most comfortably."},
|
||||||
|
{"Anonymous #138", "Laptop Speakers problem: too quiet for music, too loud for porn."},
|
||||||
|
{"Anonymous #139", "Chinese food to go: $16\nGas to go get the food: $2\nDrove home just to realize they forgot one of your containers: RICELESS"},
|
||||||
|
{"Anonymous #140", "MS Windows is like religion to most people: they are born into it, accept it as default, never consider switching to another."},
|
||||||
|
{"Anonymous #141", "To most religious people, the holy books are like a software license (EULA).\nNobody actually reads it. They just scroll to the bottom and click \"I agree\"."},
|
||||||
|
{"Anonymous #142", "You are nothing but a number of days,\nwhenever each day passes then part of you has gone."},
|
||||||
|
{"Anonymous #143", "If 666 is evil, does that make 25.8069758011 the root of all evil?"},
|
||||||
|
{"Simon Amstell", "If you have some problem in your life and need to deal with it, then use religion, that's fine.\nI use Google."},
|
||||||
|
{"James Bond", "James, James Bond."},
|
||||||
|
{"Albert Einstein", "Only 3 things are infinite:\n1. Universe.\n2. Human Stupidity.\n3. Winrar's free trial."},
|
||||||
{"Terry Pratchett", "Artificial Intelligence is no match for natural stupidity."},
|
{"Terry Pratchett", "Artificial Intelligence is no match for natural stupidity."},
|
||||||
{"Stewart Brand", "Once a new technology starts rolling, if you're not part of the steamroller,\nyou're part of the road."},
|
{"Stewart Brand", "Once a new technology starts rolling, if you're not part of the steamroller,\nyou're part of the road."},
|
||||||
{"Sam Redwine", "Software and cathedrals are much the same - first we build them, then we pray."},
|
{"Sam Redwine", "Software and cathedrals are much the same - first we build them, then we pray."},
|
||||||
|
@ -706,7 +706,7 @@ struct NppGUI
|
|||||||
_checkHistoryFiles(true) ,_enableSmartHilite(true), _disableSmartHiliteTmp(false), _enableTagsMatchHilite(true), _enableTagAttrsHilite(true), _enableHiliteNonHTMLZone(false),\
|
_checkHistoryFiles(true) ,_enableSmartHilite(true), _disableSmartHiliteTmp(false), _enableTagsMatchHilite(true), _enableTagAttrsHilite(true), _enableHiliteNonHTMLZone(false),\
|
||||||
_isMaximized(false), _isMinimizedToTray(false), _rememberLastSession(true), _backup(bak_none), _useDir(false), _backupDir(TEXT("")),\
|
_isMaximized(false), _isMinimizedToTray(false), _rememberLastSession(true), _backup(bak_none), _useDir(false), _backupDir(TEXT("")),\
|
||||||
_doTaskList(true), _maitainIndent(true), _openSaveDir(dir_followCurrent), _styleMRU(true), _styleURL(0),\
|
_doTaskList(true), _maitainIndent(true), _openSaveDir(dir_followCurrent), _styleMRU(true), _styleURL(0),\
|
||||||
_autocStatus(autoc_none), _autocFromLen(1), _funcParams(false), _definedSessionExt(TEXT("")),\
|
_autocStatus(autoc_both), _autocFromLen(1), _funcParams(false), _definedSessionExt(TEXT("")),\
|
||||||
_doesExistUpdater(false), _caretBlinkRate(250), _caretWidth(1), _enableMultiSelection(false), _shortTitlebar(false), _themeName(TEXT("")), _isLangMenuCompact(false),\
|
_doesExistUpdater(false), _caretBlinkRate(250), _caretWidth(1), _enableMultiSelection(false), _shortTitlebar(false), _themeName(TEXT("")), _isLangMenuCompact(false),\
|
||||||
_smartHiliteCaseSensitive(false), _leftmostDelimiter('('), _rightmostDelimiter(')'), _delimiterSelectionOnEntireDocument(false), _multiInstSetting(monoInst),\
|
_smartHiliteCaseSensitive(false), _leftmostDelimiter('('), _rightmostDelimiter(')'), _delimiterSelectionOnEntireDocument(false), _multiInstSetting(monoInst),\
|
||||||
_fileSwitcherWithoutExtColumn(false) {
|
_fileSwitcherWithoutExtColumn(false) {
|
||||||
@ -778,7 +778,7 @@ struct NppGUI
|
|||||||
generic_string _backupDir;
|
generic_string _backupDir;
|
||||||
DockingManagerData _dockingData;
|
DockingManagerData _dockingData;
|
||||||
GlobalOverride _globalOverride;
|
GlobalOverride _globalOverride;
|
||||||
enum AutocStatus{autoc_none, autoc_func, autoc_word};
|
enum AutocStatus{autoc_none, autoc_func, autoc_word, autoc_both};
|
||||||
AutocStatus _autocStatus;
|
AutocStatus _autocStatus;
|
||||||
size_t _autocFromLen;
|
size_t _autocFromLen;
|
||||||
bool _funcParams;
|
bool _funcParams;
|
||||||
|
@ -40,6 +40,7 @@ static bool isInList(generic_string word, const vector<generic_string> & wordArr
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
bool AutoCompletion::showApiComplete()
|
bool AutoCompletion::showApiComplete()
|
||||||
{
|
{
|
||||||
if (!_funcCompletionActive)
|
if (!_funcCompletionActive)
|
||||||
@ -47,40 +48,108 @@ bool AutoCompletion::showApiComplete()
|
|||||||
|
|
||||||
// calculate entered word's length
|
// calculate entered word's length
|
||||||
int curPos = int(_pEditView->execute(SCI_GETCURRENTPOS));
|
int curPos = int(_pEditView->execute(SCI_GETCURRENTPOS));
|
||||||
int line = _pEditView->getCurrentLineNumber();
|
int startPos = int(_pEditView->execute(SCI_WORDSTARTPOSITION, curPos, true));
|
||||||
int startLinePos = int(_pEditView->execute(SCI_POSITIONFROMLINE, line ));
|
|
||||||
int startWordPos = startLinePos;
|
|
||||||
|
|
||||||
int len = curPos - startLinePos;
|
if (curPos == startPos)
|
||||||
char * lineBuffer = new char[len+1];
|
return false;
|
||||||
_pEditView->getText(lineBuffer, startLinePos, curPos);
|
|
||||||
|
|
||||||
int offset = len - 1;
|
size_t len = (curPos > startPos)?(curPos - startPos):(startPos - curPos);
|
||||||
int nrChars = 0;
|
if (len >= _keyWordMaxLen)
|
||||||
char c;
|
return false;
|
||||||
while (offset >= 0)
|
|
||||||
{
|
|
||||||
c = lineBuffer[offset];
|
|
||||||
if (isalnum(c) || c == '_')
|
|
||||||
{
|
|
||||||
++nrChars;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
--offset;
|
|
||||||
|
|
||||||
}
|
_pEditView->execute(SCI_AUTOCSETSEPARATOR, WPARAM(' '));
|
||||||
startWordPos = curPos - nrChars;
|
|
||||||
|
|
||||||
_pEditView->execute(SCI_AUTOCSETSEPARATOR, WPARAM('\n'));
|
|
||||||
_pEditView->execute(SCI_AUTOCSETIGNORECASE, _ignoreCase);
|
_pEditView->execute(SCI_AUTOCSETIGNORECASE, _ignoreCase);
|
||||||
_pEditView->showAutoComletion(curPos - startWordPos, _keyWords.c_str());
|
_pEditView->showAutoComletion(curPos - startPos, _keyWords.c_str());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AutoCompletion::showApiAndWordComplete()
|
||||||
|
{
|
||||||
|
int curPos = int(_pEditView->execute(SCI_GETCURRENTPOS));
|
||||||
|
int startPos = int(_pEditView->execute(SCI_WORDSTARTPOSITION, curPos, true));
|
||||||
|
|
||||||
|
if (curPos == startPos)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
const size_t bufSize = 256;
|
||||||
|
TCHAR beginChars[bufSize];
|
||||||
|
|
||||||
|
size_t len = (curPos > startPos)?(curPos - startPos):(startPos - curPos);
|
||||||
|
if (len >= bufSize)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Get word array
|
||||||
|
vector<generic_string> wordArray;
|
||||||
|
_pEditView->getGenericText(beginChars, bufSize, startPos, curPos);
|
||||||
|
|
||||||
|
getWordArray(wordArray, beginChars);
|
||||||
|
|
||||||
|
|
||||||
|
for (size_t i = 0, len = _keyWordArray.size(); i < len; ++i)
|
||||||
|
{
|
||||||
|
if (_keyWordArray[i].find(beginChars) == 0)
|
||||||
|
{
|
||||||
|
if (!isInList(_keyWordArray[i], wordArray))
|
||||||
|
wordArray.push_back(_keyWordArray[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sort(wordArray.begin(), wordArray.end());
|
||||||
|
|
||||||
|
// Get word list
|
||||||
|
generic_string words(TEXT(""));
|
||||||
|
|
||||||
|
for (size_t i = 0, len = wordArray.size(); i < len; ++i)
|
||||||
|
{
|
||||||
|
words += wordArray[i];
|
||||||
|
if (i != wordArray.size()-1)
|
||||||
|
words += TEXT(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
_pEditView->execute(SCI_AUTOCSETSEPARATOR, WPARAM(' '));
|
||||||
|
_pEditView->execute(SCI_AUTOCSETIGNORECASE, _ignoreCase);
|
||||||
|
_pEditView->showAutoComletion(curPos - startPos, words.c_str());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AutoCompletion::getWordArray(vector<generic_string> & wordArray, TCHAR *beginChars)
|
||||||
|
{
|
||||||
|
const size_t bufSize = 256;
|
||||||
|
|
||||||
|
generic_string expr(TEXT("\\<"));
|
||||||
|
expr += beginChars;
|
||||||
|
expr += TEXT("[^ \\t\\n\\r.,;:\"()=<>'+!\\[\\]]*");
|
||||||
|
|
||||||
|
int docLength = int(_pEditView->execute(SCI_GETLENGTH));
|
||||||
|
|
||||||
|
int flags = SCFIND_WORDSTART | SCFIND_MATCHCASE | SCFIND_REGEXP | SCFIND_POSIX;
|
||||||
|
|
||||||
|
_pEditView->execute(SCI_SETSEARCHFLAGS, flags);
|
||||||
|
|
||||||
|
int posFind = _pEditView->searchInTarget(expr.c_str(), expr.length(), 0, docLength);
|
||||||
|
|
||||||
|
while (posFind != -1)
|
||||||
|
{
|
||||||
|
int wordStart = int(_pEditView->execute(SCI_GETTARGETSTART));
|
||||||
|
int wordEnd = int(_pEditView->execute(SCI_GETTARGETEND));
|
||||||
|
|
||||||
|
size_t foundTextLen = wordEnd - wordStart;
|
||||||
|
|
||||||
|
if (foundTextLen < bufSize)
|
||||||
|
{
|
||||||
|
TCHAR w[bufSize];
|
||||||
|
_pEditView->getGenericText(w, bufSize, wordStart, wordEnd);
|
||||||
|
|
||||||
|
if (lstrcmp(w, beginChars) != 0)
|
||||||
|
if (!isInList(w, wordArray))
|
||||||
|
wordArray.push_back(w);
|
||||||
|
}
|
||||||
|
posFind = _pEditView->searchInTarget(expr.c_str(), expr.length(), wordEnd, docLength);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static generic_string addTrailingSlash(generic_string path)
|
static generic_string addTrailingSlash(generic_string path)
|
||||||
{
|
{
|
||||||
if(path.length() >=1 && path[path.length() - 1] == '\\')
|
if(path.length() >=1 && path[path.length() - 1] == '\\')
|
||||||
@ -246,46 +315,18 @@ bool AutoCompletion::showWordComplete(bool autoInsert)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
const size_t bufSize = 256;
|
const size_t bufSize = 256;
|
||||||
|
TCHAR beginChars[bufSize];
|
||||||
|
|
||||||
size_t len = (curPos > startPos)?(curPos - startPos):(startPos - curPos);
|
size_t len = (curPos > startPos)?(curPos - startPos):(startPos - curPos);
|
||||||
if (len >= bufSize)
|
if (len >= bufSize)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Get word array
|
// Get word array
|
||||||
|
vector<generic_string> wordArray;
|
||||||
TCHAR beginChars[bufSize];
|
|
||||||
|
|
||||||
_pEditView->getGenericText(beginChars, bufSize, startPos, curPos);
|
_pEditView->getGenericText(beginChars, bufSize, startPos, curPos);
|
||||||
|
|
||||||
generic_string expr(TEXT("\\<"));
|
getWordArray(wordArray, beginChars);
|
||||||
expr += beginChars;
|
|
||||||
expr += TEXT("[^ \\t\\n\\r.,;:\"()=<>'+!\\[\\]]*");
|
|
||||||
|
|
||||||
int docLength = int(_pEditView->execute(SCI_GETLENGTH));
|
|
||||||
|
|
||||||
int flags = SCFIND_WORDSTART | SCFIND_MATCHCASE | SCFIND_REGEXP | SCFIND_POSIX;
|
|
||||||
|
|
||||||
_pEditView->execute(SCI_SETSEARCHFLAGS, flags);
|
|
||||||
vector<generic_string> wordArray;
|
|
||||||
int posFind = _pEditView->searchInTarget(expr.c_str(), expr.length(), 0, docLength);
|
|
||||||
|
|
||||||
while (posFind != -1)
|
|
||||||
{
|
|
||||||
int wordStart = int(_pEditView->execute(SCI_GETTARGETSTART));
|
|
||||||
int wordEnd = int(_pEditView->execute(SCI_GETTARGETEND));
|
|
||||||
|
|
||||||
size_t foundTextLen = wordEnd - wordStart;
|
|
||||||
|
|
||||||
if (foundTextLen < bufSize)
|
|
||||||
{
|
|
||||||
TCHAR w[bufSize];
|
|
||||||
_pEditView->getGenericText(w, bufSize, wordStart, wordEnd);
|
|
||||||
|
|
||||||
if (lstrcmp(w, beginChars) != 0)
|
|
||||||
if (!isInList(w, wordArray))
|
|
||||||
wordArray.push_back(w);
|
|
||||||
}
|
|
||||||
posFind = _pEditView->searchInTarget(expr.c_str(), expr.length(), wordEnd, docLength);
|
|
||||||
}
|
|
||||||
if (wordArray.size() == 0) return false;
|
if (wordArray.size() == 0) return false;
|
||||||
|
|
||||||
if (wordArray.size() == 1 && autoInsert)
|
if (wordArray.size() == 1 && autoInsert)
|
||||||
@ -464,6 +505,9 @@ void AutoCompletion::update(int character)
|
|||||||
}
|
}
|
||||||
else if (nppGUI._autocStatus == nppGUI.autoc_func)
|
else if (nppGUI._autocStatus == nppGUI.autoc_func)
|
||||||
showApiComplete();
|
showApiComplete();
|
||||||
|
else if (nppGUI._autocStatus == nppGUI.autoc_both)
|
||||||
|
showApiAndWordComplete();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,18 +603,35 @@ bool AutoCompletion::setLanguage(LangType language) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_keyWords = TEXT("");
|
_keyWords = TEXT("");
|
||||||
|
_keyWordArray.clear();
|
||||||
|
|
||||||
if (_funcCompletionActive)
|
if (_funcCompletionActive)
|
||||||
{
|
{
|
||||||
//Cache the keywords
|
//Cache the keywords
|
||||||
//Iterate through all keywords
|
//Iterate through all keywords
|
||||||
TiXmlElement *funcNode = _pXmlKeyword;
|
TiXmlElement *funcNode = _pXmlKeyword;
|
||||||
const TCHAR * name = NULL;
|
const TCHAR * name = NULL;
|
||||||
for (; funcNode; funcNode = funcNode->NextSiblingElement(TEXT("KeyWord")) ) {
|
for (; funcNode; funcNode = funcNode->NextSiblingElement(TEXT("KeyWord")) )
|
||||||
|
{
|
||||||
name = funcNode->Attribute(TEXT("name"));
|
name = funcNode->Attribute(TEXT("name"));
|
||||||
if (!name) //malformed node
|
if (name)
|
||||||
continue;
|
{
|
||||||
_keyWords.append(name);
|
size_t len = lstrlen(name);
|
||||||
_keyWords.append(TEXT("\n"));
|
if (len)
|
||||||
|
{
|
||||||
|
_keyWordArray.push_back(name);
|
||||||
|
if (len > _keyWordMaxLen)
|
||||||
|
_keyWordMaxLen = len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sort(_keyWordArray.begin(), _keyWordArray.end());
|
||||||
|
|
||||||
|
for (size_t i = 0, len = _keyWordArray.size(); i < len; ++i)
|
||||||
|
{
|
||||||
|
_keyWords.append(_keyWordArray[i]);
|
||||||
|
_keyWords.append(TEXT(" "));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _funcCompletionActive;
|
return _funcCompletionActive;
|
||||||
|
@ -44,7 +44,7 @@ public:
|
|||||||
enum ActiveCompletion {CompletionNone = 0, CompletionAuto, CompletionWord, CompletionFunc, CompletionPath};
|
enum ActiveCompletion {CompletionNone = 0, CompletionAuto, CompletionWord, CompletionFunc, CompletionPath};
|
||||||
|
|
||||||
AutoCompletion(ScintillaEditView * pEditView) : _funcCompletionActive(false), _pEditView(pEditView), _funcCalltip(pEditView),
|
AutoCompletion(ScintillaEditView * pEditView) : _funcCompletionActive(false), _pEditView(pEditView), _funcCalltip(pEditView),
|
||||||
_curLang(L_TEXT), _pXmlFile(NULL),
|
_curLang(L_TEXT), _pXmlFile(NULL), _keyWordMaxLen(0),
|
||||||
_pXmlKeyword(NULL), _ignoreCase(true), _keyWords(TEXT("")) {
|
_pXmlKeyword(NULL), _ignoreCase(true), _keyWords(TEXT("")) {
|
||||||
//Do not load any language yet
|
//Do not load any language yet
|
||||||
};
|
};
|
||||||
@ -60,6 +60,8 @@ public:
|
|||||||
bool showApiComplete();
|
bool showApiComplete();
|
||||||
//WordCompletion from the current file
|
//WordCompletion from the current file
|
||||||
bool showWordComplete(bool autoInsert); //autoInsert true if completion should fill in the word on a single match
|
bool showWordComplete(bool autoInsert); //autoInsert true if completion should fill in the word on a single match
|
||||||
|
// AutoComplete from both the list and the current file
|
||||||
|
bool showApiAndWordComplete();
|
||||||
//Parameter display from the list
|
//Parameter display from the list
|
||||||
bool showFunctionComplete();
|
bool showFunctionComplete();
|
||||||
// Autocomplete from path.
|
// Autocomplete from path.
|
||||||
@ -79,10 +81,14 @@ private:
|
|||||||
|
|
||||||
bool _ignoreCase;
|
bool _ignoreCase;
|
||||||
|
|
||||||
|
vector<generic_string> _keyWordArray;
|
||||||
generic_string _keyWords;
|
generic_string _keyWords;
|
||||||
|
size_t _keyWordMaxLen;
|
||||||
|
|
||||||
FunctionCallTip _funcCalltip;
|
FunctionCallTip _funcCalltip;
|
||||||
|
|
||||||
const TCHAR * getApiFileName();
|
const TCHAR * getApiFileName();
|
||||||
|
void getWordArray(vector<generic_string> & wordArray, TCHAR *beginChars);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //AUTOCOMPLETION_H
|
#endif //AUTOCOMPLETION_H
|
||||||
|
@ -310,15 +310,15 @@ BEGIN
|
|||||||
GROUPBOX "Auto-Completion",IDD_AUTOC_GRPSTATIC,86,4,289,84,BS_CENTER
|
GROUPBOX "Auto-Completion",IDD_AUTOC_GRPSTATIC,86,4,289,84,BS_CENTER
|
||||||
CONTROL "Enable auto-completion on each input",IDD_AUTOC_ENABLECHECK,
|
CONTROL "Enable auto-completion on each input",IDD_AUTOC_ENABLECHECK,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,91,15,150,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,91,15,150,10
|
||||||
CONTROL "Function completion",IDD_AUTOC_FUNCRADIO,"Button",BS_AUTORADIOBUTTON | WS_GROUP,118,29,145,10
|
CONTROL "Function completion",IDD_AUTOC_FUNCRADIO,"Button",BS_AUTORADIOBUTTON | WS_GROUP,118,27,145,10
|
||||||
CONTROL "Word completion",IDD_AUTOC_WORDRADIO,"Button",BS_AUTORADIOBUTTON,118,45,145,10
|
CONTROL "Word completion",IDD_AUTOC_WORDRADIO,"Button",BS_AUTORADIOBUTTON,118,41,145,10
|
||||||
|
CONTROL "Function and Word completion",IDD_AUTOC_BOTHRADIO,"Button",BS_AUTORADIOBUTTON,118,55,145,10
|
||||||
RTEXT "From",IDD_AUTOC_STATIC_FROM,248,15,47,8
|
RTEXT "From",IDD_AUTOC_STATIC_FROM,248,15,47,8
|
||||||
CTEXT "1",IDD_AUTOC_STATIC_N,299,15,8,8,WS_TABSTOP
|
CTEXT "1",IDD_AUTOC_STATIC_N,299,15,8,8,WS_TABSTOP
|
||||||
LTEXT "th character",IDD_AUTOC_STATIC_CHAR,313,15,57,8
|
LTEXT "th character",IDD_AUTOC_STATIC_CHAR,313,15,57,8
|
||||||
LTEXT "Valid value : 1 - 9",IDD_AUTOC_STATIC_NOTE,278,25,93,8
|
LTEXT "Valid value : 1 - 9",IDD_AUTOC_STATIC_NOTE,278,25,93,8
|
||||||
CONTROL "Function parameters hint on input",IDD_FUNC_CHECK,
|
CONTROL "Function parameters hint on input",IDD_FUNC_CHECK,
|
||||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,91,67,160,10
|
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,91,72,160,10
|
||||||
|
|
||||||
GROUPBOX "Auto-Insert",IDD_AUTOCINSERT_GRPSTATIC,86,94,289,84,BS_CENTER
|
GROUPBOX "Auto-Insert",IDD_AUTOCINSERT_GRPSTATIC,86,94,289,84,BS_CENTER
|
||||||
CONTROL " (",IDD_AUTOCPARENTHESES_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,101,115,24,10
|
CONTROL " (",IDD_AUTOCPARENTHESES_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,101,115,24,10
|
||||||
CONTROL " [",IDD_AUTOCBRACKET_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,101,133,24,10
|
CONTROL " [",IDD_AUTOCBRACKET_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,101,133,24,10
|
||||||
|
@ -2288,13 +2288,22 @@ BOOL CALLBACK AutoCompletionDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
|
|||||||
bool isEnableAutoC = nppGUI._autocStatus != nppGUI.autoc_none;
|
bool isEnableAutoC = nppGUI._autocStatus != nppGUI.autoc_none;
|
||||||
|
|
||||||
::SendDlgItemMessage(_hSelf, IDD_AUTOC_ENABLECHECK, BM_SETCHECK, isEnableAutoC?BST_CHECKED:BST_UNCHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDD_AUTOC_ENABLECHECK, BM_SETCHECK, isEnableAutoC?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDD_AUTOC_FUNCRADIO, BM_SETCHECK, nppGUI._autocStatus == nppGUI.autoc_func?BST_CHECKED:BST_UNCHECKED, 0);
|
|
||||||
::SendDlgItemMessage(_hSelf, IDD_AUTOC_WORDRADIO, BM_SETCHECK, nppGUI._autocStatus == nppGUI.autoc_word?BST_CHECKED:BST_UNCHECKED, 0);
|
int selectedID = IDD_AUTOC_BOTHRADIO;
|
||||||
::SendDlgItemMessage(_hSelf, IDD_FUNC_CHECK, BM_SETCHECK, nppGUI._funcParams?BST_CHECKED:BST_UNCHECKED, 0);
|
if (nppGUI._autocStatus == nppGUI.autoc_func)
|
||||||
|
selectedID = IDD_AUTOC_FUNCRADIO;
|
||||||
|
else if (nppGUI._autocStatus == nppGUI.autoc_word)
|
||||||
|
selectedID = IDD_AUTOC_WORDRADIO;
|
||||||
|
else if (nppGUI._autocStatus == nppGUI.autoc_both)
|
||||||
|
selectedID = IDD_AUTOC_BOTHRADIO;
|
||||||
|
|
||||||
|
::SendDlgItemMessage(_hSelf, selectedID, BM_SETCHECK, BST_CHECKED, 0);
|
||||||
|
|
||||||
if (!isEnableAutoC)
|
if (!isEnableAutoC)
|
||||||
{
|
{
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_FUNCRADIO), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_FUNCRADIO), FALSE);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_WORDRADIO), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_WORDRADIO), FALSE);
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_BOTHRADIO), FALSE);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_FROM), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_FROM), FALSE);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_N), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_N), FALSE);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_CHAR), FALSE);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_CHAR), FALSE);
|
||||||
@ -2408,17 +2417,19 @@ BOOL CALLBACK AutoCompletionDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
|
|||||||
|
|
||||||
if (isEnableAutoC)
|
if (isEnableAutoC)
|
||||||
{
|
{
|
||||||
::SendDlgItemMessage(_hSelf, IDD_AUTOC_FUNCRADIO, BM_SETCHECK, BST_CHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDD_AUTOC_BOTHRADIO, BM_SETCHECK, BST_CHECKED, 0);
|
||||||
nppGUI._autocStatus = nppGUI.autoc_func;
|
nppGUI._autocStatus = nppGUI.autoc_both;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
::SendDlgItemMessage(_hSelf, IDD_AUTOC_FUNCRADIO, BM_SETCHECK, BST_UNCHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDD_AUTOC_FUNCRADIO, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
::SendDlgItemMessage(_hSelf, IDD_AUTOC_WORDRADIO, BM_SETCHECK, BST_UNCHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDD_AUTOC_WORDRADIO, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
|
::SendDlgItemMessage(_hSelf, IDD_AUTOC_BOTHRADIO, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
nppGUI._autocStatus = nppGUI.autoc_none;
|
nppGUI._autocStatus = nppGUI.autoc_none;
|
||||||
}
|
}
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_FUNCRADIO), isEnableAutoC);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_FUNCRADIO), isEnableAutoC);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_WORDRADIO), isEnableAutoC);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_WORDRADIO), isEnableAutoC);
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_BOTHRADIO), isEnableAutoC);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_FROM), isEnableAutoC);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_FROM), isEnableAutoC);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_N), isEnableAutoC);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_N), isEnableAutoC);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_CHAR), isEnableAutoC);
|
::EnableWindow(::GetDlgItem(_hSelf, IDD_AUTOC_STATIC_CHAR), isEnableAutoC);
|
||||||
@ -2437,6 +2448,13 @@ BOOL CALLBACK AutoCompletionDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM
|
|||||||
nppGUI._autocStatus = nppGUI.autoc_word;
|
nppGUI._autocStatus = nppGUI.autoc_word;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case IDD_AUTOC_BOTHRADIO :
|
||||||
|
{
|
||||||
|
nppGUI._autocStatus = nppGUI.autoc_both;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
case IDD_FUNC_CHECK :
|
case IDD_FUNC_CHECK :
|
||||||
{
|
{
|
||||||
nppGUI._funcParams = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDD_FUNC_CHECK, BM_GETCHECK, 0, 0));
|
nppGUI._funcParams = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDD_FUNC_CHECK, BM_GETCHECK, 0, 0));
|
||||||
|
@ -278,6 +278,7 @@
|
|||||||
#define IDD_AUTOC_STATIC_CHAR (IDD_PREFERENCE_BACKUP_BOX + 13)
|
#define IDD_AUTOC_STATIC_CHAR (IDD_PREFERENCE_BACKUP_BOX + 13)
|
||||||
#define IDD_AUTOC_STATIC_NOTE (IDD_PREFERENCE_BACKUP_BOX + 14)
|
#define IDD_AUTOC_STATIC_NOTE (IDD_PREFERENCE_BACKUP_BOX + 14)
|
||||||
#define IDD_FUNC_CHECK (IDD_PREFERENCE_BACKUP_BOX + 15)
|
#define IDD_FUNC_CHECK (IDD_PREFERENCE_BACKUP_BOX + 15)
|
||||||
|
#define IDD_AUTOC_BOTHRADIO (IDD_PREFERENCE_BACKUP_BOX + 16)
|
||||||
|
|
||||||
#define IDD_PREFERENCE_AUTOCOMPLETION_BOX 6850 //(IDD_PREFERENCE_BOX + 850)
|
#define IDD_PREFERENCE_AUTOCOMPLETION_BOX 6850 //(IDD_PREFERENCE_BOX + 850)
|
||||||
#define IDD_AUTOCINSERT_GRPSTATIC (IDD_PREFERENCE_AUTOCOMPLETION_BOX + 1)
|
#define IDD_AUTOCINSERT_GRPSTATIC (IDD_PREFERENCE_AUTOCOMPLETION_BOX + 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user