View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000372 | Far Manager | Editor | public | 2007-11-23 09:39 | 2007-11-24 08:38 |
Reporter | Sten | Assigned To | alexy | ||
Priority | normal | Severity | trivial | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Fixed in Version | 1.80 alpha 1 | ||||
Summary | 0000372: Не работает поиск по F7 в редакторе | ||||
Description | Когда жмеш клавишу F7 и вводишь чего-нибудь поискать, редактор всегда выдает что строка не найдена. Происходит это потому, что функция Edit::Search() закомментирована и всегда возвращает FALSE. В аттаче патч, который фиксит данную проблему. Просьба закоммитить на SVN. | ||||
Tags | No tags attached. | ||||
Build | 356 | ||||
2007-11-23 09:39
|
edit.diff (2,057 bytes)
*** edit.cpp Fri Nov 23 16:28:29 2007 --- edit_.cpp Fri Nov 23 16:23:00 2007 *************** int Edit::ProcessMouse(MOUSE_EVENT_RECOR *** 1824,1830 **** */ int Edit::Search(const wchar_t *Str,int Position,int Case,int WholeWords,int Reverse) { ! /* int I,J,Length=strlen(Str); if (Reverse) { Position--; --- 1824,1831 ---- */ int Edit::Search(const wchar_t *Str,int Position,int Case,int WholeWords,int Reverse) { ! // *** ! int I,J,Length=static_cast<int>(wcslen(Str)); if (Reverse) { Position--; *************** int Edit::Search(const wchar_t *Str,int *** 1851,1863 **** ChLeft=(TableSet==NULL) ? Edit::Str[I-1]:TableSet->DecodeTable[Edit::Str[I-1]]; if (I>0) ! locResultLeft=(IsSpace(ChLeft) || strchr(WordDiv,ChLeft)!=NULL); else locResultLeft=TRUE; if (I+Length<StrSize) { ChRight=(TableSet==NULL) ? Edit::Str[I+Length]:TableSet->DecodeTable[Edit::Str[I+Length]]; ! locResultRight=(IsSpace(ChRight) || strchr(WordDiv,ChRight)!=NULL); } else locResultRight=TRUE; --- 1852,1864 ---- ChLeft=(TableSet==NULL) ? Edit::Str[I-1]:TableSet->DecodeTable[Edit::Str[I-1]]; if (I>0) ! locResultLeft=(IsSpace(ChLeft) || wcschr(WordDiv,ChLeft)!=NULL); else locResultLeft=TRUE; if (I+Length<StrSize) { ChRight=(TableSet==NULL) ? Edit::Str[I+Length]:TableSet->DecodeTable[Edit::Str[I+Length]]; ! locResultRight=(IsSpace(ChRight) || wcschr(WordDiv,ChRight)!=NULL); } else locResultRight=TRUE; *************** int Edit::Search(const wchar_t *Str,int *** 1876,1882 **** break; } } ! }*/ //BUGBUG return(FALSE); } --- 1877,1883 ---- break; } } ! } return(FALSE); } |
|
Если бы этот патч бы что то фиксил то приняли бы. Перед проделыванием патчей желательно ознакомится с кодом программы. Во первых посмотреть файл UNICODE, а потом ещё подумать нафига оставлять в коде DecodeTable а также подумать кто такой LocalUpper. |
|
Перед заворачиванием патчей желательно бы их проверить - и не только на глаз. Поиск в редакторе теперь работает. Все три галки диалога Search у меня также работают как на английском, так и на русском тексте. В файле UNICODE никакого нового знания для себя не нашел. В DecodeTable и LocalUpper() - каюсь, не настолько хорошо понимаю код, чтобы их вычистить. Именно потому базовый алгоритм поиска трогать не стал. Судя по всему это остатки от ANSI версии. Однако они на первый взгляд не мешают. С патчем приведенным в аттаче поиск работает - без него не работает вообще. Значит патч делает код лучше. |
|
1. Я потому и проверяю, и мено поэтому тебе тут отписываюсь. 2. Ansi Unicode Remark ------------------------------------- strlen StrLength 3. Насчёт LocalUpper смотри в код и думай головой. 4. Без патча было места с багом и оно было помечено, без патча место уже якобы без бага но с другим более худшим багом. Хочешь сделать патч, делай его как человек. |
|
Нашел багу, что не работает case insensitive поиск для не анлоязычных буковок - посмотрим. |
2007-11-23 15:07
|
|
|
Попытка номер два. В аттаче patch.zip. Умеет преобразовывать буковки к нижнему/верхнему регистру в соответствии со стандартом UNICODE 5.0 (за исключением составных символов). Поиск в русском тексте без учета регистра работает. |
|
Ты приколист, да? Так нафига вообще патчи делать? |
|
Ага, прямо дня не могу прожить, чтобы не поприкалываться над динозавтром t-rex-ом. Что теперь не так? |
|
Пока вас дождёшся, сделал сам. build 356. |
Date Modified | Username | Field | Change |
---|---|---|---|
2007-11-23 09:39 | Sten | New Issue | |
2007-11-23 09:39 | Sten | Status | new => assigned |
2007-11-23 09:39 | Sten | Assigned To | => vskirdin |
2007-11-23 09:39 | Sten | File Added: edit.diff | |
2007-11-23 09:46 | alexy | Note Added: 0000819 | |
2007-11-23 09:47 | alexy | Assigned To | vskirdin => alexy |
2007-11-23 10:03 | Sten | Note Added: 0000820 | |
2007-11-23 10:12 | alexy | Note Added: 0000821 | |
2007-11-23 10:59 | Sten | Note Added: 0000831 | |
2007-11-23 15:07 | Sten | File Added: patch.zip | |
2007-11-23 15:10 | Sten | Note Added: 0000835 | |
2007-11-23 15:20 | Sten | Note Edited: 0000835 | |
2007-11-23 15:49 | alexy | Note Added: 0000836 | |
2007-11-23 23:19 | Sten | Note Added: 0000838 | |
2007-11-23 23:19 | Sten | Note Edited: 0000838 | |
2007-11-24 08:38 | alexy | Build | => 356 |
2007-11-24 08:38 | alexy | Status | assigned => closed |
2007-11-24 08:38 | alexy | Note Added: 0000842 | |
2007-11-24 08:38 | alexy | Resolution | open => fixed |
2007-11-24 08:38 | alexy | Fixed in Version | => 1.80 alpha 1 |