View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002096 | Wishes | Editor | public | 2012-05-11 08:03 | 2013-02-03 00:33 |
Reporter | DAtaMan | Assigned To | vskirdin | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Product Version | 3.0 | ||||
Fixed in Version | 3.0 | ||||
Summary | 0002096: Навигация по тексту в меню результатов поиска | ||||
Description | В приложенном editor.cpp в это меню добавлены следующие возможности: - если включено "Выделять найденное", то после нажатия Enter найденное выделяется :) - Ctrl-Enter позиционирует курсор на найденный текст и выделяет его, если включено "Выделять найденное" - нажатие F5 переключает размер меню - Ctrl-Up/Down скроллирует текст редактора - Add - устанавливает стековую закладку - RCtrl-(0-9) - установить закладку 0..9 в текущей позиции, LCtrl-(0-9) - перейти к позиции закладки 0-9 | ||||
Tags | No tags attached. | ||||
Build | 2677 | ||||
|
|
|
Патч давай. И приплюсуй сюда же патч для FarEng.hlf.m4 и FarRus.hlf.m4 (это намёк про F1 в этом списке в виде отдельного раздела). В принципе неплохо бы так же в разделе @EditorSearch про кнопку All (со ссылкой на новый раздел) что нить сказать. Иначе неполноценно получается. |
|
Ок, но только вечером. А пока так, "на попробовать". :) |
|
Подумалось... может имеет смысл для Ctrl-Enter добавить так же перемещалку по пунктам меню? Стоим на первом пункте в этом списке. Жмакнули Ctrl-Enter - редактор позиционируется на найденное, а курсор списка перемещается на второй. |
|
Намакросить же можно. :-) Всё руки не доходят назначить гуиды для всех меню - давно пора. |
|
FindAllV1.diff (7,514 bytes)
Index: FarRus.hlf.m4 =================================================================== --- FarRus.hlf.m4 (revision 8050) +++ FarRus.hlf.m4 (working copy) @@ -2945,7 +2945,26 @@ #Выделять найденное# - ^<wrap>найденные последовательности будут выделены. + При нажатии кнопки #Всё# будет показано ~меню~@FindAllMenu@ с результатами поиска всех вхождений. +@FindAllMenu +$ #Редактор: меню с результатами поиска всех вхождений# + В этом меню доступны следующие сочетания клавиш: + + #F5# - переключить размер меню + + #Ctrl-Up, Ctrl-Down# - скроллировать текст редактора + + #Ctrl-Enter# - перейти к позиции найденного текста + + #Add# - добавить стековую закладку с текущей позицией + + #ПравыйCtrl-0..9# - установить закладку 0..9 в текущей позиции + + #Ctrl-Shift-0..9# - установить закладку 0..9 в текущей позиции + + #ЛевыйCtrl-0..9# - перейти к позиции закладки 0..9 + @FileOpenCreate $ #Редактор: Открыть/создать файл# С помощью комбинации #Shift-F4# можно открыть существующий или Index: farlang.templ.m4 =================================================================== --- farlang.templ.m4 (revision 8050) +++ farlang.templ.m4 (working copy) @@ -5040,6 +5040,16 @@ "Frecuencia: %1, líneas: %2" "Nájdených: %1, riadky: %2" +MEditFindAllMenuFooter +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" +"F1, F5, Ctrl-Enter, Ctrl-Up/Down, Add" + MEditNotFound "Строка не найдена" "Could not find the string" Index: editor.cpp =================================================================== --- editor.cpp (revision 8050) +++ editor.cpp (working copy) @@ -3745,6 +3745,7 @@ { UINT Line; UINT Pos; + UINT SearchLen; }; VMenu FindAllList(L"", nullptr, 0); @@ -3839,7 +3840,7 @@ MenuItemEx Item = {}; Item.strName = FormatString() << fmt::LeftAlign() << fmt::Width(11) << fmt::Precision(11) << fmt::FillChar(L' ') << (FormatString() << NewNumLine+1 << L':' << CurPos+1) << BoxSymbols[BS_V1] << CurPtr->GetStringAddr() + CurPos; - FindCoord coord = {(UINT)NewNumLine, (UINT)CurPos}; + FindCoord coord = {(UINT)NewNumLine, (UINT)CurPos, (UINT)SearchLength}; Item.UserData = &coord; Item.UserDataSize = sizeof(coord); FindAllList.AddItem(&Item); @@ -4094,19 +4095,92 @@ { FindAllList.SetFlags(VMENU_WRAPMODE|VMENU_SHOWAMPERSAND); FindAllList.SetPosition(-1, -1, 0, 0); - FindAllList.SetBottomTitle(LangString(MEditSearchStatistics) << FindAllList.GetItemCount() << AllRefLines); + FindAllList.SetTitle(LangString(MEditSearchStatistics) << FindAllList.GetItemCount() << AllRefLines); + FindAllList.SetBottomTitle(LangString(MEditFindAllMenuFooter)); + FindAllList.SetHelp(L"FindAllMenu"); FindAllList.Show(); + int SelectedPos; + DWORD Key=0; + FindCoord* coord; + bool MenuZoomed=true; while (!FindAllList.Done()) { - FindAllList.ReadInput(); + SelectedPos=FindAllList.GetSelectPos(); + Key=FindAllList.ReadInput(); + switch (Key) + { + case KEY_ADD: + AddSessionBookmark(); + break; + case KEY_CTRLENTER: + case KEY_RCTRLENTER: + coord = reinterpret_cast<FindCoord*>(FindAllList.GetUserData(nullptr, 0, SelectedPos)); + GoToLine(coord->Line); + CurLine->SetCurPos(coord->Pos); + if (SelectFound) + { + Pasting++; + Lock(); + // if (!EdOpt.PersistentBlocks) + UnmarkBlock(); + Flags.Set(FEDITOR_MARKINGBLOCK); + CurLine->Select(coord->Pos, coord->Pos+coord->SearchLen); + BlockStart = CurLine; + BlockStartLine = coord->Line; + Unlock(); + Pasting--; + Show(); + } + FindAllList.Show(); + break; + case KEY_CTRLUP: case KEY_RCTRLUP: + case KEY_CTRLDOWN: case KEY_RCTRLDOWN: + ProcessKey(Key); + FindAllList.Show(); + break; + case KEY_F5: + MenuZoomed=!MenuZoomed; + if(MenuZoomed) + { + FindAllList.SetPosition(-1, -1, 0, 0); + } + else + { + FindAllList.SetPosition(-1, ScrY-20, 0, ScrY-10); + } + Show(); + FindAllList.Show(); + break; + default: + if ((Key>=KEY_CTRL0 && Key<=KEY_CTRL9) || (Key>=KEY_RCTRL0 && Key<=KEY_RCTRL9) || + (Key>=KEY_CTRLSHIFT0 && Key<=KEY_CTRLSHIFT9) || (Key>=KEY_RCTRLSHIFT0 && Key<=KEY_RCTRLSHIFT9)) + { + ProcessKey(Key); + FindAllList.Show(); + } FindAllList.ProcessInput(); + break; + } } int ExitCode = FindAllList.GetExitCode(); if(ExitCode >= 0) { - FindCoord* coord = reinterpret_cast<FindCoord*>(FindAllList.GetUserData(nullptr, 0, ExitCode)); + coord = reinterpret_cast<FindCoord*>(FindAllList.GetUserData(nullptr, 0, ExitCode)); GoToLine(coord->Line); CurLine->SetCurPos(coord->Pos); + if (SelectFound) + { + Pasting++; + Lock(); + // if (!EdOpt.PersistentBlocks) + UnmarkBlock(); + Flags.Set(FEDITOR_MARKINGBLOCK); + CurLine->Select(coord->Pos, coord->Pos+coord->SearchLen); + BlockStart = CurLine; + BlockStartLine = coord->Line; + Unlock(); + Pasting--; + } } } Index: FarEng.hlf.m4 =================================================================== --- FarEng.hlf.m4 (revision 8050) +++ FarEng.hlf.m4 (working copy) @@ -2868,8 +2868,26 @@ The following option is available in search dialog only: #Select found# - ^<wrap>found text is selected + При нажатии кнопки #Всё# будет показано ~меню~@FindAllMenu@ с результатами поиска всех вхождений. +@FindAllMenu +$ #Редактор: меню с результатами поиска всех вхождений# + В этом меню доступны следующие сочетания клавиш: + #F5# - переключить размер меню + + #Ctrl-Up, Ctrl-Down# - скроллировать текст редактора + + #Ctrl-Enter# - перейти к позиции найденного текста + + #Add# - добавить стековую закладку с текущей позицией + + #ПравыйCtrl-0..9# - установить закладку 0..9 в текущей позиции + + #Ctrl-Shift-0..9# - установить закладку 0..9 в текущей позиции + + #ЛевыйCtrl-0..9# - перейти к позиции закладки 0..9 + @FileOpenCreate $ #Editor: Open/Create file# With #Shift-F4#, one can open the existing file or create a new file. |
|
Приложил diff. |
|
build 2677 |
|
line 4109: CtrlObject->Macro.SetMode(MACRO_MENU); Это не моё :) Может вынести из цикла повыше? |
|
Это я добавил (таа же как и реакцию на распахивание консольного окна) Думаю не стоит выносить повыше... :-) |
|
Ok, не стоит. :) По поводу F5: может завести в настройках пару параметров? (например, верхнюю Y-координату и высоту меню. Либо, как сейчас - минус N строк от высоты окна Far и сколько строк показывать) |
|
Ну раз нет замечаний/других идей... :) |
Date Modified | Username | Field | Change |
---|---|---|---|
2012-05-11 08:03 | DAtaMan | New Issue | |
2012-05-11 08:03 | DAtaMan | File Added: FindAllMenuV1.7z | |
2012-05-11 08:31 | vskirdin | Note Added: 0009143 | |
2012-05-11 08:34 | DAtaMan | Note Added: 0009144 | |
2012-05-11 08:40 | vskirdin | Note Added: 0009145 | |
2012-05-11 08:45 | DAtaMan | Note Added: 0009148 | |
2012-05-11 08:46 | DAtaMan | Note Edited: 0009148 | |
2012-05-15 21:14 | DAtaMan | File Added: FindAllV1.diff | |
2012-05-15 21:16 | DAtaMan | Note Added: 0009207 | |
2012-05-16 07:27 | vskirdin | Note Added: 0009210 | |
2012-05-16 07:27 | vskirdin | Assigned To | => vskirdin |
2012-05-16 07:27 | vskirdin | Status | new => feedback |
2012-05-16 10:10 | DAtaMan | Note Added: 0009211 | |
2012-05-16 10:10 | DAtaMan | Status | feedback => assigned |
2012-05-16 12:12 | vskirdin | Note Added: 0009216 | |
2012-05-16 12:12 | vskirdin | Status | assigned => feedback |
2012-05-16 13:24 | DAtaMan | Note Added: 0009217 | |
2012-05-16 13:24 | DAtaMan | Status | feedback => assigned |
2012-06-08 14:46 | DAtaMan | Note Added: 0009323 | |
2012-06-08 14:46 | DAtaMan | Status | assigned => resolved |
2012-06-09 05:57 | vskirdin | Build | => 2677 |
2012-06-09 05:57 | vskirdin | Status | resolved => closed |
2012-06-09 05:57 | vskirdin | Resolution | open => fixed |
2012-06-09 05:57 | vskirdin | Fixed in Version | => 3.0 |
2013-02-03 00:33 | alexy | Severity | minor => feature |