mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-09-01 07:42:40 -06:00
ide: Refining incremental search
git-svn-id: svn://ultimatepp.org/upp/trunk@7494 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
6f3c5c0307
commit
41b7ad364a
5 changed files with 22 additions and 13 deletions
|
|
@ -233,7 +233,7 @@ void CodeEditor::SelectionChanged()
|
|||
Refresh();
|
||||
}
|
||||
if(!foundsel) {
|
||||
if(!persistent_find_replace && !findreplace.incremental)
|
||||
if(!persistent_find_replace)
|
||||
CloseFindReplace();
|
||||
found = false;
|
||||
notfoundfw = notfoundbk = false;
|
||||
|
|
@ -618,7 +618,7 @@ void CodeEditor::FindWord(bool back)
|
|||
{
|
||||
WString I = GetI();
|
||||
if(!IsNull(I))
|
||||
Find(back, I, true, false, false, false);
|
||||
Find(back, I, true, false, false, false, false);
|
||||
}
|
||||
|
||||
void CodeEditor::SetI(Ctrl *edit)
|
||||
|
|
|
|||
|
|
@ -283,6 +283,7 @@ protected:
|
|||
void ReplaceWildcard();
|
||||
void InsertWildcard(int c);
|
||||
void IncrementalFind();
|
||||
void NoFindError();
|
||||
void CheckSyntaxRefresh(int pos, const WString& text);
|
||||
|
||||
void SetFound(int fi, int type, const WString& text);
|
||||
|
|
@ -328,6 +329,7 @@ public:
|
|||
Callback WhenAnnotationMove;
|
||||
Callback WhenAnnotationClick;
|
||||
Callback WhenAnnotationRightClick;
|
||||
Callback WhenOpenFindReplace;
|
||||
|
||||
FrameTop<Button> topsbbutton;
|
||||
FrameTop<Button> topsbbutton1;
|
||||
|
|
@ -345,8 +347,8 @@ public:
|
|||
void FindReplace(bool pick_selection, bool pick_text, bool replace);
|
||||
bool FindFrom(int pos, bool back, const wchar *text, bool wholeword, bool ignorecase, bool wildcards, bool block);
|
||||
bool Find(bool back, const wchar *text, bool wholeword, bool ignorecase, bool wildcards,
|
||||
bool block);
|
||||
bool Find(bool back = false, bool blockreplace = false, bool replace = false);
|
||||
bool block, bool incremental);
|
||||
bool Find(bool back = false, bool blockreplace = false, bool replace = false, bool incremental = false);
|
||||
bool GetStringRange(int cursor, int& b, int &e) const;
|
||||
bool GetStringRange(int& b, int &e) const { return GetStringRange(GetCursor(), b, e); }
|
||||
bool FindString(bool back);
|
||||
|
|
|
|||
|
|
@ -166,7 +166,7 @@ int CodeEditor::Match(const wchar *f, const wchar *s, int line, bool we, bool ig
|
|||
}
|
||||
|
||||
bool CodeEditor::Find(bool back, const wchar *text, bool wholeword, bool ignorecase,
|
||||
bool wildcards, bool block)
|
||||
bool wildcards, bool block, bool incremental)
|
||||
{
|
||||
if(notfoundfw) MoveTextBegin();
|
||||
if(notfoundbk) MoveTextEnd();
|
||||
|
|
@ -176,6 +176,8 @@ bool CodeEditor::Find(bool back, const wchar *text, bool wholeword, bool ignorec
|
|||
else
|
||||
GetSelection(cursor, pos);
|
||||
pos = cursor;
|
||||
if(incremental)
|
||||
pos = 0;
|
||||
return FindFrom(pos, back, text, wholeword, ignorecase, wildcards, block);
|
||||
}
|
||||
|
||||
|
|
@ -274,12 +276,17 @@ void CodeEditor::FindReplaceAddHistory()
|
|||
findreplace.replace.AddHistory();
|
||||
}
|
||||
|
||||
bool CodeEditor::Find(bool back, bool blockreplace, bool replace)
|
||||
void CodeEditor::NoFindError()
|
||||
{
|
||||
findreplace.find.Error(false);
|
||||
findreplace.info.SetLabel("&Find");
|
||||
}
|
||||
|
||||
bool CodeEditor::Find(bool back, bool blockreplace, bool replace, bool incremental)
|
||||
{
|
||||
NoFindError();
|
||||
if(Find(back, (WString)~findreplace.find, findreplace.wholeword,
|
||||
findreplace.ignorecase, findreplace.wildcards, blockreplace)) {
|
||||
findreplace.ignorecase, findreplace.wildcards, blockreplace, incremental)) {
|
||||
if(!blockreplace) {
|
||||
if(!findreplace.IsOpen())
|
||||
OpenNormalFindReplace(replace);
|
||||
|
|
@ -468,6 +475,8 @@ void CodeEditor::OpenNormalFindReplace(bool replace)
|
|||
findreplace.close <<= THISBACK(CloseFindReplace);
|
||||
if(!findreplace.IsOpen())
|
||||
AddFrame(findreplace);
|
||||
WhenOpenFindReplace();
|
||||
IncrementalFind();
|
||||
}
|
||||
|
||||
void CodeEditor::FindReplace(bool pick_selection, bool pick_text, bool replace)
|
||||
|
|
@ -641,14 +650,11 @@ void CodeEditor::CloseFindReplace()
|
|||
|
||||
void CodeEditor::IncrementalFind()
|
||||
{
|
||||
NoFindError();
|
||||
findreplace.Sync();
|
||||
if(!findreplace.incremental || findreplace.GetTopCtrl() == &findreplace) // || we are block replace
|
||||
return;
|
||||
int l, h;
|
||||
GetSelection(l, h);
|
||||
ClearSelection();
|
||||
SetCursor(min(l, h));
|
||||
Find();
|
||||
Find(false, false, false, true);
|
||||
}
|
||||
|
||||
void CodeEditor::DoFind()
|
||||
|
|
|
|||
|
|
@ -195,7 +195,7 @@ void Ide::MacroFind(EscEscape& e)
|
|||
bool whole_word = (n > 2 && e.Int(2) > 0);
|
||||
bool ignore_case = (n > 3 && e.Int(3) > 0);
|
||||
bool wildcards = (n > 4 && e.Int(4) > 0);
|
||||
e = editor.Find(!down, text, whole_word, ignore_case, wildcards, false);
|
||||
e = editor.Find(!down, text, whole_word, ignore_case, wildcards, false, false);
|
||||
}
|
||||
|
||||
void Ide::MacroReplace(EscEscape& e)
|
||||
|
|
|
|||
|
|
@ -408,6 +408,7 @@ Ide::Ide()
|
|||
editor.WhenAction = THISBACK(AddHistory);
|
||||
editor.WhenBar = THISBACK(EditorMenu);
|
||||
editor.WhenFontScroll = THISBACK(EditorFontScroll);
|
||||
editor.WhenOpenFindReplace = THISBACK(AddHistory);
|
||||
|
||||
macro_api = MacroEditor();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue