View Issue Details

IDProjectCategoryView StatusLast Update
0000372Far ManagerEditorpublic2007-11-24 08:38
ReporterSten Assigned Toalexy  
PrioritynormalSeveritytrivialReproducibilityalways
Status closedResolutionfixed 
Fixed in Version1.80 alpha 1 
Summary0000372: Не работает поиск по F7 в редакторе
DescriptionКогда жмеш клавишу F7 и вводишь чего-нибудь поискать, редактор всегда выдает что строка не найдена. Происходит это потому, что функция Edit::Search() закомментирована и всегда возвращает FALSE.

В аттаче патч, который фиксит данную проблему. Просьба закоммитить на SVN.
TagsNo tags attached.
Build356

Activities

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);
  }
  
edit.diff (2,057 bytes)   

alexy

2007-11-23 09:46

administrator   bugnote:0000819

Если бы этот патч бы что то фиксил то приняли бы. Перед проделыванием патчей желательно ознакомится с кодом программы.
Во первых посмотреть файл UNICODE, а потом ещё подумать нафига оставлять в коде DecodeTable а также подумать кто такой LocalUpper.

Sten

2007-11-23 10:03

reporter   bugnote:0000820

Перед заворачиванием патчей желательно бы их проверить - и не только на глаз.
Поиск в редакторе теперь работает. Все три галки диалога Search у меня также работают как на английском, так и на русском тексте. В файле UNICODE никакого нового знания для себя не нашел.

В DecodeTable и LocalUpper() - каюсь, не настолько хорошо понимаю код, чтобы их вычистить. Именно потому базовый алгоритм поиска трогать не стал. Судя по всему это остатки от ANSI версии. Однако они на первый взгляд не мешают.

С патчем приведенным в аттаче поиск работает - без него не работает вообще. Значит патч делает код лучше.

alexy

2007-11-23 10:12

administrator   bugnote:0000821

1. Я потому и проверяю, и мено поэтому тебе тут отписываюсь.

2. Ansi Unicode Remark
     -------------------------------------
     strlen StrLength

3. Насчёт LocalUpper смотри в код и думай головой.

4. Без патча было места с багом и оно было помечено, без патча место уже якобы без бага но с другим более худшим багом. Хочешь сделать патч, делай его как человек.

Sten

2007-11-23 10:59

reporter   bugnote:0000831

Нашел багу, что не работает case insensitive поиск для не анлоязычных буковок - посмотрим.

2007-11-23 15:07

 

patch.zip (10,813 bytes)

Sten

2007-11-23 15:10

reporter   bugnote:0000835

Last edited: 2007-11-23 15:20

Попытка номер два. В аттаче patch.zip. Умеет преобразовывать буковки к нижнему/верхнему регистру в соответствии со стандартом UNICODE 5.0 (за исключением составных символов). Поиск в русском тексте без учета регистра работает.

alexy

2007-11-23 15:49

administrator   bugnote:0000836

Ты приколист, да? Так нафига вообще патчи делать?

Sten

2007-11-23 23:19

reporter   bugnote:0000838

Last edited: 2007-11-23 23:19

Ага, прямо дня не могу прожить, чтобы не поприкалываться над динозавтром t-rex-ом.

Что теперь не так?

alexy

2007-11-24 08:38

administrator   bugnote:0000842

Пока вас дождёшся, сделал сам. build 356.

Issue History

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