chupakabra 08.11.2009 09:09:00 +0200 - build 1204

1. From Maximus: Mantis#0001163: Описание не показано, хотя оно есть в Descript.ion.

2. Неэффективный код в VMenu.

chupakabra 08.11.2009 08:08:00 +0200 - build 1203

1. VMenu::Show() не учитывал наличие субменю.

garry 06.11.2009 11:18:34 +0300 - build 1202

1. Проблемы с копирование через WebDav: http://forum.farmanager.com/viewtopic.php?f=9&t=4626
   (исправленный патч от Yegor).

chupakabra 05.11.2009 06:32:00 +0200 - build 1201

1. Mantis#0001104: Падение при попытке открыть панель дерева для mount point.

t-rex 04.11.2009 17:16:24 +0200 - build 1200 (UTF-16 LE :)

1. !?$<history>$<title>?<init>! - вместо history имя истории было мусором.

t-rex 04.11.2009 13:17:09 +0200 - build 1199

1. Изменения в ESPT_GETWORDDIV и EditorSetParameter.
   Вроде как это последнее место в API где не был известен размер буффера для получения данных.
   Теперь в EditorSetParameter есть поле Size (и cParam переименован в wszParam),
   при ESPT_GETWORDDIV, Size должен быть равен размеру буффера wszParam в символах,
   если Size или wszParam равны 0 то EditorControl вернёт нужный размер буффера в символах.

   Плагины использующие ESPT_GETWORDDIV нужно править.

chupakabra 04.11.2009 13:09:00 +0200 - build 1198

1. Mantis#0001158: При окне 80 на 25 меню дисков AltF2 неправильного размера (поломалось в 1190).

t-rex 04.11.2009 00:46:54 +0200 - build 1197

1. Помучаем UnicodeString ещё немного.

2. Ворнинг в gcc.

t-rex 03.11.2009 13:50:19 +0200 - build 1196

1. F9->Options - некорректная работа.

t-rex 03.11.2009 13:10:37 +0200 - build 1195

1. Продолжение Mantis#956: напротив некоторых плагинов в списке стит буква "А". В хелпе об этом ни слова.

2. Для меню плагинов открываля не тот топик хэлпа.

t-rex 02.11.2009 15:12:55 +0200 - build 1194

1. Mantis#1136: Падение Far при большом количестве выделенных файлов и использовании !&.
   Теперь обработка метасимволов использует только динамические буфферы.
   Проверяем что метасимволы не полетели, особенно разные комплексные которые диалоги показывают.

svs 02.11.2009 15:03:32 +0300 - build 1193

1. Mantis#0001155: trim() не отрезает \r и \n в начале строки

2. Имя пользователя в InfoPanel настраиваемо (по умолчанию NameUserPrincipal).
   Добавлен диалог настройки информационной панели.

   НУЖНА ПОМОЩЬ ДЛЯ: lng и hlf - корректно и доступно описать каждый из форматов.


zg 01.11.2009 16:52:52 +0200 - build 1192

1. Mantis#0001144: Ctrl-G обрабатывает каждый выделенный файл несколько раз.

t-rex 31.10.2009 20:39:13 +0200 - build 1191

1. Mantis#1148: Анси-плагины вызывают неприятное торможение в редакторе.
   При вызовах ProcessEditor*, ProcessViewer* и ProcessDialog* будем использовать
   единный CurrentDirectoryGuard для всего цикла вызовов и только если есть анси плагины с такими экспортами.
   В случае ProcessDialogEvent и ProcessEditorInput это все ровно особо не поможет (так как они вызываются дофига)
   поэтому не стоит использовать анси плагины которые экспортирует эти функции.
   Надо в общем подумать если можно придумать что то вместо CurrentDirectoryGuard.

chupakabra 30.10.2009 22:30:00 +0200 - build 1190

1. Mantis#0001083: Некорректная отрисовка VMenu.

yjh 30.10.2009 03:07:09 +0300 - build 1189

1. Для точек монтирования в строке статуса пишем 'Volume' а не 'Junction' -
   так получается нагляднее когда рядом есть и линки и точки монтирования

svs 29.10.2009 16:49:25 +0300 - build 1188

1. Mantis#0001142: Плавная горизонтальная прокрутка в редакторе
   В макросы добавлена функция "N=Editor.Pos(Op,What[,Where])" - Get/Set позиции в редакторе.

     Op: 0 - get, 1 - set
     What:
        1 - CurLine
        2 - CurPos
        3 - CurTabPos
        4 - TopScreenLine
        5 - LeftPos
        6 - Overtype

     Return: -1 - "не в теме", для "get" - текущее значение, для "set" - "угу" (1) или "не угу" (0)

     Пример (при включенном ScrollLock клавиши Left/Right занимаются скроллллингом)

     REGEDIT4

     [HKEY_CURRENT_USER\Software\far2\KeyMacros\Editor\Right]
     "Sequence"="$if(FLock(2,-1) == 1) Editor.Pos(1,5,Editor.Pos(0,5)+1); $else Right $end"
     "DisableOutput"=dword:00000001

     [HKEY_CURRENT_USER\Software\far2\KeyMacros\Editor\Left]
     "Sequence"="$if(FLock(2,-1) == 1) Editor.Pos(1,5,Editor.Pos(0,5)-1); $else Left $end"
     "DisableOutput"=dword:00000001

2. немного замены space на tab

t-rex 27.10.2009 18:04:07 +0200 - build 1187

1. Доделал Mantis#1087.

t-rex 27.10.2009 16:45:19 +0200 - build 1186

1. Mantis#1087: FCTL_SETPANELDIR не возвращает ошибку (0) для несуществующего пути.

2. CodeBlocks project update from Morten MacFly.

zg 27.10.2009 14:29:01 +0200 - build 1185

1. в статусе редактора было перепутано "Col" и текущая строка.

t-rex 26.10.2009 15:17:44 +0200

1. makefile_vc знает теперь и о VC10.

t-rex 26.10.2009 13:42:02 +0200

1. Убрал упоминание о (?{name}pattern) из хэлпа ибо мы это не поддерживаем.

2. Добавил хэлп по "ClearType friendly redraw".

yjh 26.10.2009 10:57:04 +0300 - build 1184

1. Ошибка в plugin.hpp - исходники плагинов бывают не только cpp, но и c.
   В смысле pure C :). 

chupakabra 26.10.2009 06:02:00 +0200 - build 1183

1. Исправлена обработка пустой входной строки в FSF.ConvertPath() и FSF.GetPathRoot().

t-rex 26.10.2009 00:45:52 +0200 - build 1182

1. Новая настройка интерфэса: [ ] ClearType friendly redraw (can be slow)
   По дефолту отключено. Вроде бы решает все проблемы артефактов клиртайпа.
   За одно наверно решает и проблему отрисовки иврита (если конечно шрифт моноширный).

t-rex 24.10.2009 23:39:28 +0200 - build 1181

1. Кто то забыл выставить FSF.GetCurrentDirectory :)

drkns 24.10.2009 20:23:01 +0200 - build 1180

1. Т. к. т. н. "текущий каталог" не всегда совпадает с тем каталогом, который в данный момент на панели, вводится некоторое уточнение:
    - добвлена FSF.GetCurrentDirectory - возвращает внутренний "текущий каталог" far;
    - FCTL_GETCURRENTDIRECTORY переименована в FCTL_GETPANELDIR, ибо этим и является.

    Плагины не сломались, но лучше их таки пересмотреть и при необходимости заменить FCTL_GETCURRENTDIRECTORY на FSF.GetCurrentDirectory.

drkns 23.10.2009 22:51:44 +0200 - build 1179

1. Mantis#0001137: Удаление директорий, в которых есть ссылки.

t-rex 23.10.2009 12:34:50 +0200 - build 1178

1. Вернём назад нормальный размер стека, ибо бага она в TmpPanel.

chupakabra 22.10.2009 22:16:00 +0200 - build 1177

1. Увеличен размер стека (а то tmppanel стала падать после замены MAX_PATH на NT_MAX_PATH)

drkns 21.10.2009 22:31:01 +0200 - build 1176

1. Mantis#0001131: Лишнее сканирование подкаталогов при удалении символической связи

2. Криво обрабатывалось переименование папок по маске.

svs 21.10.2009 18:08:30 +0300 - build 1175

1. В UserMenu "пропало" расстояние между "F10" и "Этим пунктом".

drkns 20.10.2009 20:35:25 +0200 - build 1174

1. При удалении файлов/папок отображается прогресс.

2. Mantis#0001112: Конфликт копирования/перемещения (папка или файл)

3. При отсутствии доступа к папке при попытке входа в неё выдавался неправильный код ошибки.

4. В корнях UNC-путей не показывается элемент "..".

5. printf, коррекция типов и т. п.

6. Показ овнера не работал для путей глубже MAX_PATH.
   На будущее - при передаче имён файловых объектов в функции Windows API используйте класс NTPath, он сам добавит объекту "curdir" в правильном формате.

7. Не работало шифрование папок.

svs 20.10.2009 17:03:59 +0300 - build 1173

1. Не показывает Owner в панелях (Ctrl-8)
   Добавим "curdir" тестируемому объекту.

svs 19.10.2009 11:41:50 +0300 - build 1172

1. Mantis#0001030: Несанкционированная смена атрибутов файла FARMENU.INI 

chupakabra 18.10.2009 20:45:00 +0200 - build 1171

1. Поправлен механизм проверки рекурсивных симлинков.

2. При удалении ScanTree не должен заходить в симлинки.

3. Незначительные изменения в ConvertNameToReal().

drkns 16.10.2009 06:24:11 +0200 - build 1170

1. Забытый отладочный код :)

drkns 16.10.2009 00:08:51 +0200 - build 1169

1. Поправка к 1167.

chupakabra 15.10.2009 23:47:00 +0200 - build 1168

1. Mantis#0001094: Проблема при удалении каталогов по сети.

drkns 15.10.2009 19:12:29 +0200 - build 1167

1. Mantis#0001113: Заполнение экрана символами '?'.

2. Продолжаем давить printf в проблемных местах.

drkns 15.10.2009 00:46:56 +0200 - build 1166

1. Из TechInfo #10 убраны читерские опции [Alt]EditorKey, [Alt]CmdLineKey, [Alt]DialogKey, [Alt]FastFindKey.

   Кнопкосочетания для XLat теперь настраиваются честными макросами, примерно так:
   -------------------------------------------------------------
   REGEDIT4

   [HKEY_CURRENT_USER\Software\Far2\KeyMacros\Common\CtrlShiftX]
   "Sequence"="$XLat"
   -------------------------------------------------------------
   AltR.reg, Apps.reg, CtrlR.reg, CtrlShiftX.reg в addons\XLat\Russian переведены на использование макроязыка.

drkns 14.10.2009 19:25:48 +0200 - build 1165

1. Warnings (level 4).

2. <Get|Free>VirtualFindData для A-плагинов.

drkns 13.10.2009 22:34:34 +0200 - build 1164

1. Warnings.

drkns 13.10.2009 22:26:59 +0200 - build 1163

1. Mantis#0000789: После открытия Viewer под текстом "проглядывается" текст от панелей
   Mantis#0000978: Какие-то неотображаемые символы "съедают" текст при просмотре в UTF-16

  Гадит 0xffff (WEOF), *printf нормально с ним не работает и работать не будет, посему для него написана "замена": классы FormatString и FormatScreen.
  Пока что "умеют" width, precision, align, работают со строками и целыми числами.
  Вьюверу/редактору этого должно хватить, в остальных местах - со временем.

2. Иногда не срабатывали команды типа "cd буква_диска:"

chupakabra 13.10.2009 03:00:00 +0200 - build 1162

1. Дополнение к build 1161.

chupakabra 13.10.2009 02:14:00 +0200 - build 1161

1. Скорректирована работа ConvertNameToReal() для дисков, не имеющих уникального идентификатора тома.

drkns 11.10.2009 21:50:10 +0200 - build 1160

1. PutFilesW теперь выглядит так:

   int WINAPI PutFilesW(
     HANDLE hPlugin,
     struct PluginPanelItem *PanelItem,
     int ItemsNumber,
     int Move,
     const wchar_t *SrcPath,
     int OpMode
   );

   где SrcPath - путь источника (откуда получим файлы).

   Плагины, использующие PutFilesW - сломались, как обычно :)
  
2. Mantis#0001090: Панель с прямыми слэшами становится "нерабочей".

svs 07.10.2009 17:30:36 +0300 - build 1159

1. Mantis#0001099: Узнать, есть ли элемент без горячей клавиши
     N=checkhotkey(S[,N1])

     возвращает:
     -1 - не в своей области
      0 - нет такого
     >0 - позицию элемента

     Параметр N1 - с какой позиции начать искать
     Если S пустая строка, то функция возвращает -1, 0 или номер позиции, у которой отсутствует хоткей

svs 06.10.2009 20:51:50 +0300 - build 1158

1. Macro: CheckHotkey() работает в области "Dialog".
   Если текущий элемент ListBox или открытый Combobox (или открытый History), то CheckHotkey() работает с этим элементов.

chupakabra 05.10.2009 20:49:00 +0200 - build 1157

1. Обновляем текущий каталог для плагинов с OPIF_REALNAMES.

svs 05.10.2009 17:12:13 +0300 - build 1156

1. Mantis#0000956: напротив некоторых плагинов в списке стит буква "А". В хелпе об этом ни слова. 
   from igor_yudincev.

2. Mantis#0001095: Состояние Title (заголовок текущего объекта) пуст при вызове из панелей 

3. Mantins#0001088: Пути в командной строке запуска Фара и слеш (\) 

chupakabra 05.10.2009 12:36:00 +0200 - build 1155

1. Исправлена проблема в ConvertNameToReal() при работе с динамическими дисками.

drkns 30.09.2009 20:43:48 +0200 - build 1154

1. Уточнение 1153.1 для случая корневого каталога пустого диска.

drkns 29.09.2009 18:07:44 +0200 - build 1153

1. apiSetCurrentDirectory всегда возвращал TRUE, даже если искомый каталог отсутствовал.
   Как следствие - можно было "заходить" в несуществующие папки.
   Сюда же Mantis#0001078: FCTL_SETPANELDIR ошибочно успешно отрабатывает для несуществующего пути.

2. Если в редакторе/просмотре отключен titlebar, то и часы на нём рисовать не надо.

3. Так как hex-просмотр текста в UTF8 сейчас не работает чуть менее, чем совсем - запретим эту комбинацию вообще, во избежание однообразных унылых багрепортов.

4. Косметика: в FindFirstFile передаём '*' вместо '*.*'. 

svs 29.09.2009 11:50:38 +0300 - build 1152

1. Mantis#0001064: Error in string handling 
   Очередное уточнение операций:
     1. string + string = string
     2. string + num = string
     3. num + string = string
     4. strnum + string = string
     5. string + strnum = string
     6. num + strnum = num
     7. strnum + num = num

   Т.е. (применяем принудительное преобразование к string):
     msgbox("1" + 0) ==> 1
     msgbox(1 + "2") ==> 3
     msgbox("foo1" + 0) ==> "foo10"
     msgbox(string(1) + "2") ==> "12"
     %i=1; msgbox("0" + string(%i)) ==> "01"
     %i=1; msgbox(int("012ag") + %i) ==> 13
     %i=1; msgbox(string(int("012ag")) + %i) ==> 13
     %i=1; msgbox(string(int("012ag")) + string(%i)) ==> "121"

zg 28.09.2009 20:33:47 +0200 - build 1151

1. Edit::WordDiv устанавливался в значение Editor::WordDiv::m_pData::m_pData.
   если плагин менял WordDiv редактору на большее по размеру значение, память
   переаллоцировалась и Edit::WordDiv указывал в пустоту.

2. при выключенных часах в редакторе и неуникодном тексте обрезалась скобка в строке статуса.

3. gcc warnings.

drkns 28.09.2009 20:02:46 +0200 - build 1150

1. From Tim Sobolev: Mantis#0001074: Impossible to create/edit/view file with name started with 2 or more '.'

svs 28.09.2009 20:59:21 +0300 - build 1149

1. Mantis#0001070: XLat: переключение раскладки клавиатуры при наличии в системе более 2 раскладок 
   Добавлен [HKEY_CURRENT_USER\Software\Far2\XLat]"Layouts" - строка, перечисляющая через ';' HKL раскладок, которые нужно "крутить"
   Например, "Layouts"="04090409;04190419" (или "Layouts"="0409;0419")
   Если указано меньше двух, то механизм "отключается" и раскладки крутятся как и раньше.
   Far для "Layouts" считывает первые 10 значений, остальные, если есть, игнорируются (думаю - за глаза хватит :-).

   Так же добавлен комментарий (чтобы не искать больше :-) про правила... 

2. Mantis#0001064: Error in string handling 
   Macro: Здесь, если "string1 операция string2", то результат как string (для '+' - объединение строк, для остальных "string1")
   
3. Macro: Для Editor.Set() добавлены 5 индексов (первый параметр):
      15: Show scrollbar
      16: Allow editing files opened for writing
      17: Select found (в поиске)
      18: Regular expressions (в поиске)
      19: Pick up the word (в поиске)

drkns 27.09.2009 22:50:36 +0200 - build 1148

1. Фар иногда мог схлопываться, если при старте окно консоли было максимизировано.

2. FSF.ConvertNameToReal больше нет. А есть FSF.ConvertPath(CONVERTPATHMODES Mode,const wchar_t *Src, wchar_t *Dest, int DestSize)
   При Mode=CPM_REAL работает как ConvertNameToReal;
   при Mode=CPM_FULL работает как ConvertNameToFull.

   Ахтунг: использовать GetFullPathNameW для преобразования относительного пути в абсолютный после 1145 билда нельзя, используйте ConvertPath(CPM_FULL, ...).

3. gettable.?pp -> codepage.?pp

garry 27.09.2009 22:54:30 +0300 - build 1147

1. Mantis#0001017  Сделано более общее решение, т.е. поддерживается или нет кодовая страница 
   проверяется как в редакторе так и во вьювере и не только при автодетекте, но и при загрузке 
   кодовой страницы из кэша;

2. Небольшой рефакотринг связанный с таблицами перекодировки: имена функций, а также замена 
   Table -> CodePage;

3. Теперь const UnicodeString& UnicodeString::SetData(const UnicodeString &strCopy) не роняет
   фар, если туда передать NULL;

4. TechInfo #80 (См. сборку #1019).

drkns 27.09.2009 08:56:45 +0200 - build 1146

1. Учитываем, что при использовании префикса \\?\ в путях windows отключает ИИ, заменяющий '/' на '\', посему менять надо самостоятельно.

2. При старте внутренняя strCurrentDirectory инициируется текущим каталогом процесса, дабы работали всякие /e и /p.

drkns 27.09.2009 01:05:56 +0200 - build 1145

1. From Tim Sobolev: собственная реализация ConvertNameToFull.
   Должны починиться все проблемы, связанные с использованием GetFullPathName: спец. имена (nul, con и т. п.), точки/пробелы в конце имён и т. п.

2. Свершилось то, о чём так долго говорили большевики - far не использует SetCurrentDirectory при навигации по папкам.
   Как следствие, бонусы:
     - хождение по папкам глубже MAX_PATH;
     - вход в папки, оканчивающиеся точками, пробелами, и прочими ужасами;
     - папка, открытая на панели, не блокируется от удаления извне;
     - и прочее.
   Соотвественно, могут проявиться и баги. Соблюдаем осторожность.

   Для оемных плагинов текущий каталог всё же выставляется перед вызовом их экспортируемых функций.
   Ибо совместимость.

   Для уникодных плагинов ничего не выставляется.
   Посему некоторые нерадивые плагины могут разнообразно глючить.
   Ещё не поздно исправиться и начать использовать FCTL_GETCURRENTDIRECTORY.
   
svs 26.09.2009 19:07:24 +0300 - build 

1. Mantis#0000986: Far 2 API - pascal 
    from: max rusov 
      PluginW.pas: Добавил поддержку RegExp'ов

zg 26.09.2009 17:05:26 +0200 - build 1144

1. продолжение Mantis#0000921: Проблемы с ECTL_SAVEFILE.

2. при save as из редактора заголовок редактора и консоли не 
   сразу обновлялись новым именем файла.

zg 26.09.2009 14:24:24 +0200 - build 1143

1. уточнение 1136 для несуществующих кодировок.

zg 25.09.2009 22:59:27 +0200 - build 1142

1. Mantis#0000921: Проблемы с ECTL_SAVEFILE.

svs 25.09.2009 18:00:55 +0300 - build 1141

1. Mantis#0001068: В диалоге замены два хоткея "R"

2. Mantis#0001063: Добавление в help-файл списка всех макрокомбинаций 

3. Mantis#0001066: [x] Pick up the word in editor

4. Добавка в Help`ы по RegExp`ам

zg 25.09.2009 16:25:35 +0200 - build 1140

1. при замене с регэкспами если указанной скобки нет, то она меняется на пустую строку.

zg 24.09.2009 23:52:29 +0200 - build 1139

1. f6 в редакторе просмотре сохраняет текущую кодовую страницу.

zg 24.09.2009 23:40:59 +0200 - build 1138

1. плагины в Viewer/Editor могут теперь передавать конкретные кодовые страницы.

zg 24.09.2009 22:19:38 +0200 - build 1137

1. при замене с регэкспами можно в строке замены ссылаться на скобки в строке поиска: $0-$9,$A-$Z.
   любая другая последовательность $* заменяется на *.

2. при замене в диалоге подтверждения показывается реально найденная строка, а не регэксп.

zg 24.09.2009 21:02:09 +0200 - build 1136

1. простейшая имплементация ESPT_CODEPAGE.

zg 24.09.2009 19:03:28 +0200 - build 1135

1. RegExp API

   RegExpControl(HANDLE hHandle, int Command, LONG_PTR Param)

   Command:

   RECTL_CREATE           - hHandle - 0.
                            Param - HANDLE*, в который запишется HANDLE регэкспа.
                            При неудаче вернёт FALSE и Param=INVALID_HANDLE_VALUE.
   RECTL_FREE             - hHandle - HANDLE, который вернул RECTL_CREATE.
   RECTL_COMPILE          - hHandle - HANDLE, который вернул RECTL_CREATE.
                            Param - указатель на строку с регулярным выражением.
   RECTL_OPTIMIZE         - hHandle - HANDLE, который вернул RECTL_CREATE.
   RECTL_MATCHEX          - hHandle - HANDLE, который вернул RECTL_CREATE.
                            Param - указатель на RegExpSearch.
                            RegExpSearch:
                            Text - строка.
                            Position - позиция в строке.
                            Length - длина строки.
                            Match - скобки.
                            Count - количество скобок.
                            Reserved - обязательно должен быть нулём.
   RECTL_SEARCHEX         - hHandle - HANDLE, который вернул RECTL_CREATE.
                            Param - указатель на RegExpSearch.
   RECTL_BRACKETSCOUNT    - hHandle - HANDLE, который вернул RECTL_CREATE.

svs 22.09.2009 21:07:01 +0300 - build 1134

1. Macro: по мотивам Mantis#1064
   msgbox("01") выводит в заголовке "1" вместо "01"
   Остальное согласно спецификации (см. build 1127#6)

drkns 20.09.2009 23:50:53 +0200 - build 1133

1. Если при копировании/переносе нескольких файлов в имени приемника отсутствует заключительный слеш, и сам приемник
   при этом отсутствует - выдаётся уточняющий запрос: под "приемником" подразумевается папка или файл?

zg 19.09.2009 01:53:37 +0200 - build 1132

1. макросы, запущенные плагином из ProcessSynchroEvent, не всегда исполнялись.

chupakabra 17.09.2009 13:24:00 +0200 - build 1131

1. Дополнение к исправлению UserMenu из build 1130.

svs 17.09.2009 12:40:39 +0300 - build 1130

1. from Alexey Samlyukov:
   В UserMenu некорректно отрисовывается длинное название субменю (если не вмещается в размеры экрана)

chupakabra 14.09.2009 19:03:00 +0200 - build 1129

1. Макро SELF_TEST(code), предназначенное для автоматического тестирования кода. code выполняется при запуске отладочной версии.
   В модуль pathmix добавлена процедура тестирования некоторых функций.

zg 15.09.2009 20:52:39 +0200 - build 1128

1. gcc сборка.

2. gcc варнинги.

svs 15.09.2009 20:37:40 +0300 - build 1127

(много форматирования - пробелы на табы)

1. Макросы грузяться после плагинов (необходимо для последующих реализация в макродвижке)

2. keys.hpp: KEY_MACRO_U_BASE - резервирование места под Mantis#18 и Mantis#466

3. EnumRegValueEx() - добавлен агрумент: тип енуменированного значения

4. Macro: Menu.Value - содержит текст текущего пункта меню, как он виден на экране (без &)

5. Macro: добавлен тип double
   Было __int64 и wchar_t*, добавился double. Собственно и говорить то нечего, кроме:
    * разделитель целой и дробной частей - точка;
    * функций sin, cos, tan, etc. нет - это скорее дело для Mantis#0000466 и Mantis#0000018;
    * в памяти такое число занимает 8 байт;
    * константы в реестре (ветка "KeyMacro\Const") в виде REG_SZ (в соответствии с п.2 Far сам преобразует их в double  в момент старта) это криво (может имеет смысл хранить в REG_BINARY?);
    * преобразование double в строку осуществляется по формату "KeyMacro/CONVFMT:REG_SZ" (по умолчанию "%.6g")

6. Macro: уточнение "операций".
    Для начала определения:
        * Int - целое число;
        * Dbl - вещественное число;
        * StrInt - строка, которая полностью преобразуется в Int;
        * StrDbl - строка, которая полностью преобразуется в Dbl;
        * Str - строка, которая не может быть полностью преобразована в Int или Dbl (собственно, просто набор символов).
    В соответствии с этими определениями, там, где это возможно, происходит преобразование строки в число и выполнение операции. Дальше приведены таблицы, показывающие результаты работы операций:

              +     |B.Int    B.Dbl  B.StrInt  B.StrDbl   B.Str
          ----------+------+--------+---------+----------+------
          A.Int     |Int      Dbl    Int       Dbl        Str
          A.Dbl     |Dbl      Dbl    Dbl       Dbl        Str
          A.StrInt  |Int      Dbl    Int       Dbl        Str
          A.StrDbl  |Dbl      Dbl    Dbl       Dbl        Str
          A.Str     |Str      Str    Str       Str        Str
         Здесь Str обозначает конкатенацию двух операндов.

           - * / %  |B.Int    B.Dbl  B.StrInt  B.StrDbl   B.Str
          ----------+------+--------+---------+----------+------
          A.Int     |Int      Dbl    Int       Dbl        A.Str
          A.Dbl     |Dbl      Dbl    Dbl       Dbl        A.Str
          A.StrInt  |Int      Dbl    Int       Dbl        A.Str
          A.StrDbl  |Dbl      Dbl    Dbl       Dbl        A.Str
          A.Str     |A.Str    A.Str  A.Str     A.Str      A.Str
         Здесь A.Str - возвращается значение операнда A.

         Для бинарных операций операнды Dbl или StrDbl предварительно преобразуется к Int.
         
           Op       |B.Int    B.Dbl  B.StrInt  B.StrDbl   B.Str
          ----------+------+--------+---------+----------+------
          A.Int     |Int      Int    Int       Int        A.Str
          A.Dbl     |Int      Int    Int       Int        A.Str
          A.StrInt  |Int      Int    Int       Int        A.Str
          A.StrDbl  |Int      Int    Int       Int        A.Str
          A.Str     |A.Str    A.Str  A.Str     A.Str      A.Str
         Здесь "Op"  | & ^ << >>

         В операциях сравнения (==, !=, <, <=, >, >=) операнды преобразуются (там, где это возможно) и сравниваются.
         В логических OR и AND операнды сравниваются как есть, строки не преобразуются в StrInt и StrDbl, а проверяются на не пустую строку.

7. Macro: Editor.SelValue - содержимое аналогично тому, как Far помещает блок в clipboard (блок текста с наличием crlf в конце строк)

8. Macro: функции "Menu.Select" имеет вид "N=Menu.Select(S[,N[,Dir]])" - добавлен третий параметр, направление поиска, Dir:

    * 0 - от начала в конец списка;
    * 1 - от текущей позиции в начало;
    * 2 - от текущей позиции в конец списка пунктов меню.

9. в хелпе работают макроконструктивы <!Macro:Vars!> и <!Macro:Consts!>, в lng-файлах  ищем "// for <!Macro:Vars" - задают форматы вывода

10. Если Far стартован с ключами /e или /v, то не грузятся макросы из следующих макрообластей: Shell, Search, Disks, MainMenu, InfoPanel, QviewPanel, TreePanel, FindFolder

11. Mantis#0001057: Far Manager версия 1.75 build 2605, x86 При выборе Alt+F1/Alt+F2 -> Process List Вылетает 
    Если в реестре у плагина в значении StartPanelMode пурга, принудительно выставляем нулевой режим панели
    (решение пока влоб, а там, после ухода от статического массива, видно будет)

zg 15.09.2009 18:23:10 +0200 - build 1126

1. Mantis#0001058: Диапазон для класса знаков не работает для русских букв
   RegExp::Optimize урезал уникод до первых 256 символов.

drkns 14.09.2009 19:19:36 +0200 - build 1125

1. Установка атрибутов в некоторых случаях могла приводить к падению. 

chupakabra 14.09.2009 19:03:00 +0200 - build 1124

1. Mantis#0001055 & Mantis#0001056: Проблемы при переходе в корневую папку (Ctrl+\).

drkns 13.09.2009 23:57:35 +0200 - build 1123

1. Применяем #pragma once вместо include guard. Должно положительно отразиться на времени компиляции.

drkns 13.09.2009 20:12:26 +0200 - build 1122

1. С форума: падало, если при открытом infopanel/qview переключиться в файловую панель через меню.

t-rex 13.09.2009 14:49:26 +0200 - build 1121

1. С какого то перепугу кто то отрубил regexp в replace.

2. Не забывайте, include они case sensitive в некоторых операционках.

drkns 13.09.2009 11:24:41 +0200 - build 1120

1. Mantis#0001054: Неправильно отображается свободное место на диске.

chupakabra 12.09.2009 22:53:00 +0200 - build 1119

1. Изменение в API: farConvertNameToReal() всегда возвращает необходимый размер буфера (по аналогии с farGetPathRoot())

drkns 12.09.2009 19:04:40 +0200 - build 1118

1. Очередной divide & conquer:
   - АХТУНГ! - минимальный поддерживаемый sdk теперь 7.0 для vc, w32api-3.13 для gcc;
   - sdkpatches.hpp разделён на отдельные части для vc и gcc;
   - выкинуты макросы i64() и ui64(), ибо vc тоже умеет ll и ull;
   - __try и __except заменяются макросами только в gcc;
   - выкинуто ещё некоторое количество мусора из headers.hpp и pluginold.hpp

2. Немного облегчён класс диалога.

3. macro: itoa() не работал с 64-битными числами.

chupakabra 11.09.2009 01:51:00 +0200 - build 1117

1. Поправлена сборка gcc.

2. makefile_gcc: не оптимизируем отладочную версию; поправлены зависимости (make -j работал некорректно)

chupakabra 11.09.2009 01:02:00 +0200 - build 1116

1. В панели плагина некорректно работал поиск начиная с корня.

2. Добавил TRY EXCEPT в FindFiles::WriteDialogData().

3. Немного переделал код FindFile с целью его упрощения.

drkns 10.09.2009 23:12:56 +0200 - build 1115

1. К scantree прикручена защита от рекурсивных симлинков.

2. В win2k не работало создание хардлинков.

3. Mantis#0001049: Ошибка при поиске файлов по %PATH%.

chupakabra 09.09.2009 16:47:00 +0200 - build 1114

1. GetPathRoot() реализована через ConvertNameToReal().

chupakabra 09.09.2009 06:30:00 +0200 - build 1113

1. Mantis#0001039: Не запоминалось состояние опции "Del removes blocks in edit controls".

chupakabra 09.09.2009 05:40:00 +0200 - build 1112

1. Поправлена сборка gcc и x64.

chupakabra 09.09.2009 05:01:00 +0200 - build 1111

1. ConvertNameToReal() теперь использует NtQueryObject() на Windows XP.
   Старый код с хождением по симлинкам удален полностью.

drkns 08.09.2009 22:18:01 +0200 - build 1110

1. Не работало создание по F7 папки с точкой в конце.

chupakabra 08.09.2009 21:54:00 +0200 - build 1109

1. Для ConvertNameToRealModern() учитываем что входной путь может существовать лишь частично.

2. UnicodeString::Replace(): допускаем, что Data может указывать на данные в самой строке.

3. pathmix: несколько новых функций	для работы с путями.

chupakabra 07.09.2009 18:25:00 +0200 - build 1108

1. Mantis#0001037: зависание внутри ConvertNameToReal().
   Теперь по возможности используется функция GetFinalPathNameByHandle() вместо шаманства с симлинками.

2. Полезные методы для UnicodeString: Replace, Insert, Remove, etc.

t-rex 06.09.2009 22:57:09 +0200 - build 1107

1. Mantis#1038: Неправильное отображение вложенных подкаталогов в дереве.

chupakabra 05.09.2009 04:49:00 +0200 - build 1106

1. VMenu: место под правый горизонтальный скроллер выделяется только если он действительно требуется.
   Это исправляет проблему с плагинами, которые считают ширину листбокса как ("макс. длина строки" + 4).

zg 04.09.2009 16:44:34 +0200 - build 1105

1. после 1103 поиск требовал в два раза больше процессорных ресурсов.

t-rex 04.09.2009 00:16:00 +0200 - build 1104

От греха подальше:

1. При поиске в редакторе с [x] Select found - выставляем курсор на первой букве найденного текста,
   как и в поиске без этой опции и вообще как у нормальных людей.
   В связи с этим сразу отпадает проблема работы regexp поиска с этой опцией, и выкидывается лишний кусок кода
   с гнусным AI который мог к ещё разным проблемам приводить.

drkns 03.09.2009 20:01:23 +0200 - build 1103

1. При поиске по содержимому в статусной строке отображаются проценты для текущего файла.
   Ну и перерисовка там теперь с тем же интервалом, что и везде.

svs 03.09.2009 18:07:57 +0300 - build 1102

1. Корректировка Mantis#0000547
      "...Открываем по F4 файл FarRus.hlf
      F7 ищем цифру 3 и за ней еще какую-нибудь
      3\d
      и ставим галочку [x] Регулярные выражения.
      находим, нажимаем Shift+F7 - все работает, ищет дальше.

      Если еще ставим галочку [x] Выделять найденное
      то первый раз находит, а Shift+F7 не работает..."

   До поры (до разборок) закомментим проблемный кусок/
   Помечен "CHECK!!!: for..."

chupakabra 03.09.2009 15:36:00 +0200 - build 1101

1. Mantis#0001002: крах при работе с VMenu в случае если все элементы скрыты

2. Добавил синхронизацию в VMenu::GetMaxLineWidth()

t-rex 31.08.2009 22:29:55 +0200 - build 1100

1. Продолжим Mantis#1025, было ещё одно внутренее ограничение на длину записи в descript.ion.

drkns 31.08.2009 19:37:49 +0200 - build 1099

1. Mantis#0001029: Переустановка атрибутов без надобности
   Самое смешное - логика "если соответствующие аттрибуты/дата/время не менялись, то и не трогать"
   как бы присутствовала, но была нещадно поломана всякими IsFileWritable.

2. Там же устранено одно досадное недоразумение - дата/время у симлинков/связей теперь выставляются.

3. В поле времени доступно управление миллисекундами.

4. FILE_FLAG_BACKUP_SEMANTICS переехал внутрь apiCreateFile.

t-rex 29.08.2009 23:11:42 +0200 - build 1098

1. Доделка пред. билда.

drkns 29.08.2009 21:53:31 +0200 - build 1097

1. Mantis#0001026: Не работает кнопка «Искать» в диалоге поиска
   
   Господа, убедительная просьба - если приходится ковырять какой-то древний диалог,
   не ленитесь попутно заменять в нём числовые константы именованными, потом самим же легче будет.

drkns 29.08.2009 00:51:58 +0200 - build 1096

1. Задавим несколько memset'ов.

2. Уточнения хелпа.

chupakabra 28.08.2009 18:28:00 +0200 - build 1095

1. FCTL_REDRAWPANEL могла вернуть FALSE в случае успеха

svs 28.08.2009 19:14:22 +0300 - build 

1. Перевод хелпа от Igor Yudincev

svs 28.08.2009 19:01:31 +0300 - build 1094

1. Mantis#0001021: Сохранение состояния 'Select found' 
   кроме этого так же сохраняется состояние "RegExp"

2. Mantis#0000872: RegExp support in Editor and Viewer
   from Igor Yudincev
   Здесь в диалоге замены опция про RegExp пока недоступна (задел на будущее)
   Добавлен коммент в Edit::Search():

    // Q: что важнее: опция диалога или опция RegExp`а?

3. Опция RegExp во вьювере - тоже самое, пока в режиме RO (задел на будущее)

4. Help: "@RegExp. Начало" - раздел есть, нужно аккуратно его корректировать, по мере развития событий.
   Так же, ка ки в редакторе, сохраняется состояние "RegExp".

   ВНИМАНИЕ! Все, что описано в разделе "@RegExp" на данном этапе не пашет (но будет!)

zg 28.08.2009 16:10:30 +0200 - build 1093

1. Mantis#0001025: FAR v2.0.1091 ( и v2.0.981) обрезает записи в descript.ion при F5 или F6 до 260 символов.

2. gcc warnings.

t-rex 27.08.2009 20:09:59 +0200

1. Hungarian lng update from Far Hunor.

drkns 27.08.2009 19:54:05 +0200 - build 1092

1. Символические ссылки теперь можно создавать и в 2000/XP/2003.
   Разумеется, из этого не следует, что они будут там работать.

2. Ещё одна добавка к #0001012.

3. В диалоге подтверждения перезаписи R/O файла кнопка подписывается в зависимости от операции (overwrite/append).

drkns 26.08.2009 20:02:15 +0200 - build 1091

1. Mantis#0001019: Устанавливается атрибут "Encrypted" при копировании (перемещении) папок.

2. Mantis#0001012: "Иногда при копировании в 1090 возникает ощущение, что имя нового копируемого файла появляется когда ещё прогресс старого файла стоит на 100%."

drkns 25.08.2009 20:32:14 +0200 - build 1090

1. Вся визуализация процесса копирования вынесена в (почти) отдельный класс.
   Должны починиться баги с неперерисовкой прогресбара и отображением не того имени (Mantis#0001012).
   Также выкинута куча разнообразного мусора из копира.

2. Т. к. GetUserNameExW есть везде - подсократим код, линкуя её статически.

3. Панель быстрого просмотра перечитывалась и перерисовывалась на каждый чих.

4. Для файловых симлинков в панелях показываем "<symlink>" в колонке размера.

5. MkSymLink() переехала в flink.cpp.

svs 25.08.2009 17:20:04 +0300 - build 1089

1. Mantis#0000970: Дата изменения descript.ion не должна обновляться, если изменений не было
   from Maximus

svs 24.08.2009 19:15:12 +0300 - build 1088

1. В Info-панели после типа FS не стоял пробел.

2. Метка "Память" наезжает на рамку панели.

3. Mantis#0000859: RFE: Show UserName@Domain on the information panel
   Заюзаем 8-й тип - "UserName@Domain" (для локального юзера или были ошибки при получении юзера... будет как сейчас: "юзер")
   + немного форматирования в InfoList::DisplayObject()

   По большому счету форму показа нужно задавать (диалог? techinfo?).

drkns 22.08.2009 00:44:39 +0200 - build 1087

1. Перетрях диалога атрибутов. Сокращения, оптимизации, форматирование, как обычно.
   Плюшки:
   - исправлено несколько мелких багов;
   - добавлена возможность редактировать содержимое reparse point'а. Сильно экспериментально.

2. Уточнения создания reparse point'ов.

3. Из врапера убраны FAR_USE_INTERNALS.

4. Таймауты перерисовки всяческих прогрессбаров теперь контролируюся одной переменной.

5. Перевод для "Standard association".

svs 19.08.2009 11:42:58 +0300 - build 1086

1. Mantis#0000905: Изменения в eval
   Вариант eval("",1) вернет ошибку 12 ("Zero-length macro")
   Считаем, что пустые макропоследовательности недопустимы.

svs 17.08.2009 12:26:34 +0300 - build 

1. Mantis#0000986: Far 2 API - pascal 
    from: max rusov 
      PluginW.pas: убраны FAR_USE_INTERNALS

drkns 16.08.2009 09:05:05 +0200 - build 1085

1. gcc.

drkns 15.08.2009 20:13:55 +0200 - build 1084

1. Уточнения предыдущего билда.
   pointer_array заменен на TPointerArray.

drkns 14.08.2009 23:38:43 +0200 - build 1083

1. Более-менее доделан выбор плагина для SetFindList и prefix.
   Локализация диалога настройки.
   По умолчанию все меню выбора плагина выключены.

svs 14.08.2009 11:51:50 +0300 - build 

1. Mantis#0000986: Far 2 API - pascal 
    from: max rusov 
      PluginW.pas: Добавил поддержку x64. Тестировалось под FreePascal 2.3.1

t-rex 12.08.2009 12:01:41 +0200 - build 1082

1. From Evgeny Zhirnov: Mantis#1006: Добавить explicit к конструктору UnicodeString::UnicodeString(size_t, size_t=0)

svs 11.08.2009 18:55:01 +0300 - build 1081

1. Не работают Ctrl-Home/End на цифровой клавиатуре
   from: Alexey Samlyukov

drkns 09.08.2009 17:21:34 +0200 - build 1080

1. Если на панели был выделен один объект и курсор стоял на "..", то в PanleInfo.SelectedItemsNumber оказывался 0.

chupakabra 09.08.2009 16:10:00 +0200 - build 1079

1. Продолжение 1075: исправление горизонтальной прокрутки для VMenu

chupakabra 09.08.2009 05:13:00 +0200 - build 1078

1. VMenu: автоматическая расстановка шоткатов учитывает горизонтальный скроллинг.

drkns 08.08.2009 20:20:06 +0200 - build 1077

1. Оптимизация сброса в консоль экранного буфера. В некоторых случаях должно стать в разы быстрее.

2. Уточнение в рисовалке меню.

zg 08.08.2009 17:40:18 +0200 - build 1076

1. уточнение 1064 для папок при [ ] Sort folder names by extension.

chupakabra 07.08.2009 21:15:00 +0200 - build 1075

1. Mantis#0000998: По Alt-Right у каждой буквы диска рисуется символ «
   Исправлена горизонтальная прокрутка для VMenu

drkns 06.08.2009 19:14:43 +0200 - build 1074

1. Продолжение 1073: лишние преобразования путей при создании ссылок.
   Там же - убрана мешанина из табов/пробелов и прочая косметика.

drkns 06.08.2009 01:07:51 +0200 - build 1073

1. ConvertNameToReal криво работал с симлинками, указывающими на \\?\UNC\... или \\?\Volume{...

svs 05.08.2009 23:03:44 +0300 - build 1072

1. В ConvertFileSizeString() попутаны префиксы exa и peta
   (see http://en.wikipedia.org/wiki/SI_prefix)

t-rex 05.08.2009 14:56:05 +0200 - build 1071

1. From Evgeny Zhirnov: Mantis#995: Исправление операторов копирования

2. Немного форматирования.

drkns 04.08.2009 21:03:08 +0200 - build 1070

1. Перетрях ассоциаций - упрощения, оптимизации, форматирование и т.п. Как обычно - соблюдаем осторожность.
   Плюшки:
   - каждую ассоциацию теперь можно "включать" и "выключать", не стирая (и, соответственно, не теряя) текст команды.
   - снято ограничение в 32 ассоциации на одно расширение;
   - пункты меню ассоциаций можно двигать вверх-вниз по Ctrl<Up|Down>;

2. При включенном врапе во вьювере блокируется прокрутка вправо.

3. В Modal::ReadInput зачем-то было вот такое чудо:
    if (CloseFARMenu){
      SetExitCode(TRUE);
    Это приводило к тому, что если при открытом меню закрыть фар по [x], то меню закрывалось с ExitCode==1,
    т.е. всегда происходил "запуск" второго по счёту пункта меню. О возможных последствиях такого поведения догадайтесь сами.
    Теперь ExitCode ставится как положено: -1. Если вдруг это шаманство кому-то было нужно - сигнализируйте.

4. С форума: "Падает Far 2.0 build 952 из-за MultiArc..."
   Только не из-за MultiArc, а из-за попыток дописать NULL к UnicodeString. Опять, да.

t-rex 04.08.2009 19:55:56 +0200 - build 1069

1. Mantis#992: /[^ab]/ 
   короче "not set" вообще особо не работал.

svs 04.08.2009 16:42:10 +0300 - build 1068

1. Help для "поиска/замены" в редакторе. Начало.
   * в FarEng.hlf.m4 - русские буковки
   * в FarHun.hlf.m4 - только пустой раздел

   по мере внедрения RegExp хелпы будут обновляться.

svs 04.08.2009 11:27:36 +0300 - build 1067

1. В GetSearchReplaceString() добавлен параметр HelpTopic - пора писать тему помощи для поиска/замены в редакторе (с учетом build 1063)

2. В Panel::ChangeDiskMenu() избавимся от очередного str.Format()
   (From Alexey Samlyukov)

zg 03.08.2009 22:13:13 +0200 - build 1066

1. опечатка в 1064.

chupakabra 03.08.2009 02:32:00 +0200 - build 1065

1. Mantis#0000975
   Диалог с результатами поиска расширен на весь экран.
   Если имя файла слишком длинное - режем в середине, а не в конце.
   Изменение размера по Alt+F9 пока работает не совсем корректно (надо содержимое списка пересчитывать).

2. Для UnicodeString добавлены Append(const wchar_t *, size_t) и Append(wchar_t).

3. В strmix добавлена TruncStrFromCenter - как TruncStr и TruncStrFromEnd, но режет в центре строки.

zg 02.08.2009 15:11:16 +0200 - build 1064

1. новый конструктор UnicodeString(const wchar_t *lpwszData, size_t nLength).

2. Mantis#0000974: file-1.txt выше, чем file.txt

3. PointToName(string)/PointToExt(string) работают быстрее.

4. gcc warnings.

t-rex 31.07.2009 18:11:28 +0200 - build 1063

1. На затравку: ужасная имплементация regexp поиска в редакторе.
   Работает только для поиска вперёд, глючит при "select found", если строка начинается на "/" значит regexp.

2. Совсем немного форматирования, избавление от мешанины табов и пробелов.

svs 31.07.2009 13:49:18 +0300 - build 1062

1. Mantis#0000961: Неполная проверка на наличие файловых ассоциаций в реестре.
   from Ariman.
   Очередное уточнение (отвалились .lnk).

drkns 30.07.2009 21:46:46 +0200 - build 1061

1. Новое кнопкосочетание в панелях - CtrlShiftPgDn.
   Делает ровно то же самое, что и CtrlPgDn, но не перекрывается ассоциациями файлов (по аналогии с F4/CtrlShiftF4).

2. Немного тегов ^<wrap> и форматирования в справке.

drkns 30.07.2009 21:20:07 +0200

1. "Парашютики не забываем..." :)
   "*W.pas" вместо "*.pas" должны присутствовать и в мейкфайлах тоже.

svs 30.07.2009 22:11:37 +0300 - build 

1. Mantis#0000986: Far 2 API - pascal 
   "Ведущий рубрики" Maxim Rusov
   Вместо "*.pas" в двойке будут присутствовать "*W.pas":

   mr> Мне кажется *W - удобнее. В Delphi нельзя использовать ifdef'ы в настройках путей, поэтому приходится подключать модули условно:
   mr> 
   mr>   uses
   mr>     ...
   mr>    {$ifdef Unicode}
   mr>     PluginW,
   mr>    {$else}
   mr>     Plugin,
   mr>    {$endif Unicode}
   mr> 
   mr> Для этого - они должны называться по разному. 

   Файлы FarColorW.pas, FarKeysW.pas и PluginW.pas, относящиеся к АПИ (для Pascal), будут постоянно обновляться "по мере развития событий"

   Если у кого есть что сказать по этому поводу - Wелкам сюда: http://bugs.farmanager.com/view.php?id=986

chupakabra 30.07.2009 17:43:00 +0200 - build 1060

1. Mantis#0000979: ошибка копирования каталога при указании маски в качестве цели
   теперь маска обрабатывается только в CopyFileTree, в ShellCopyOneFile поступает уже готовый путь

chupakabra 29.07.2009 20:27:00 +0200

1. Не используем опции для оптимизации при сборке отладочной версии.

svs 29.07.2009 20:48:11 +0300 - build 

1. без билда
   исправления в scripts\mkdep.awk - "исключаем обработку самого себя"

2. актуализирован mkdep.list (однако чудовищно много зависимостей :-))
   файл mkdep.list содержит все сорцы и с помощью "scripts\mkdep.awk"  генерит far.vc.dep/far.gcc.dep
   far.*.dep нужны для слишком "безумного" nmake

chupakabra 29.07.2009 19:15:00 +0200 - build 1059

1. Mantis#0000982: Подсчет размера папки сильно тормозит на медленных файловых системах
   from CrOm
   ускорена работа функции FarGetPluginDirList

chupakabra 29.07.2009 17:03:00 +0200 - build 1058

1. Mantis#0000985: используем класс NonCopyable для запрета оператора присваивания и конструктора копирования
   from Evgeny Zhirnov

svs 28.07.2009 11:27:23 +0300 - build 1057

1. Mantis#0000981: Far падает, после вызова плагина через CallPlugin
   ...в процессе работы внутренних функций макросы отключаются...

yjh 28.07.2009 06:27:45 +0300 - build 1056

1. В хуке редиректора для win64 добавили поддержку Win2008r2 - там ntdll
   с "полуотладочным" враппером в релизе оставили :(

drkns 26.07.2009 22:12:09 +0200

1. В Vista и выше DEP теперь включён перманентно.

svs 26.07.2009 19:34:54 +0300 - build 1055

1. Mantis#0000405: по Ctrl-Enter выводить Win-диалог свойств диска. 
   from igor_yudincev
   добавлена информация про Ctrl-A и F4 в файлы помощи.

2. Mantis#0000980: FAR2 падает в FileList::PluginGetPanelInfo
   from Maximus.

svs 24.07.2009 17:34:55 +0300 - build 1054

1. Уточнения про CheckShortcutFolder()
   Из-за чего, кстати, неправильно выводилось сообщение про "файл": при переходе по ссылке на не существующую папку получаем - "Файл не найден".

2. Mantis#0000405: по Ctrl-Enter выводить Win-диалог свойств диска. 
   Это временно, до переделки меню в стиле "диалог+листбокс"
   Здесь вместо Ctrl-Enter стандартное поведение - Ctrl-A/F4

3. В Viewer::Search() кто-то не так выставил скобки...

drkns 22.07.2009 20:21:23 +0200 - build 1053

1. В windows 7 погнули WriteConsoleOutputW: ограничение на размер буфера у них теперь не 64 K, а "почти 64 K".
   Из-за этого самого "почти" в консоли выводился мусор вместо текста и периодически падал conhost.
   Посему теперь пишем по 32 K, от греха подальше.
   
2. В windows 7 погнули ReadConsoleInputW, а конкретно заполнение Event.KeyEvent.uChar.UnicodeChar.
   Из-за этого не работал ввод кодов уникодных символов по Alt-NumN.

svs 20.07.2009 18:27:06 +0300 - build 1052

1. Mantis#0000961: Неполная проверка на наличие файловых ассоциаций в реестре.
   from Ariman.
   Порядок проверки ассоциаций:

     1. [HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext] ProgID
     2. [HKСR\.ext] дефолтное значение
     3. [HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext\OpenWithProgids] до первого попадания
     4. [HKCR\.ext] OpenWithProgids до первого попадания

drkns 20.07.2009 00:36:26 +0200 - build 1051

1. Продолжаем трясти UserMenu:
   - выкинуто ещё прилично копипасты;
   - сокращено количество обращений к реестру (раза в два).
   Плюшки:
   - работает прокрутка длинных пунктов Alt-стрелками.

2. Новый флаг в FarMenuItemEx: MIF_SUBMENU.
   Пока что отвечает только за отображение ">" справа от имени пункта.
   Пока что только для внутреннего использования.

3. Экранный граббер зачем-то превращал «» в <>.

drkns 18.07.2009 20:39:05 +0200 - build 1050

1. EditorInfo::Options могло содержать неправильные данные.

drkns 17.07.2009 23:45:27 +0200 - build 1049

1. Рефакторинг UserMenu:
   - теперь оно есть класс (привет редактору и вьюверу);
   - выкинута куча копипасты. Будьте бдительны, что-нибудь вполне могло отвалиться;
   - проверка корректности горячей клавиши и названия пункта перенесена в обработчик диалога;
   Плюшки:
   - в качестве горячих клавиш могут использоваться все функциональные, вплоть до F24;
   - Разделителем теперь считается любой пункт с горячей клавишей "-". Если метка не пуста, она будет использована в качестве текста разделителя.
   - пункты меню можно двигать вверх-вниз по Ctrl<Up|Down>.

2. Частично восстановлен PROJECT_DI_MEMOEDIT.

3. Класс CachedWrite вынесен в отдельный файл.

warp 17.07.2009 19:58:00 +0300 - build 1048

1. Добавил (вернул) поддержку в (HANDLE)-2 в OpenFilePlugin. Может PictureView и заработает. 
   Но это ненадолго.

svs 17.07.2009 18:03:52 +0300 - build 1047

1. Mantis#0000905: Изменения в eval 

2. Mantis#0000973: Опечатка в исходнике - файл scrobj.hpp
   :-)

drkns 15.07.2009 18:30:59 +0200 - build 1046

1. В диалог "Подтверждения" добавлена опция "Перезапись и удаление R/O файлов".
   И, соответственно, FCS_OVERWRITEDELETEROFILES в В ACTL_GETCONFIRMATIONS.

2. По Alt+Del не удалялись вложенные папки.

warp 15.07.2009 02:27:00 +0300 - build 1045

1. HIGHLY EXPERIMENTAL PART 2. Добавим возможность до некоторой степени настраивать
   появление меню при наличии нескольких плагинов на обработку файла. Диалог пока не 
   локализован. 

drkns 14.07.2009 21:14:13 +0200 - build 1044

1. Если не удалось загрузить плагин - покажем результат GetLastError().

drkns 14.07.2009 19:48:31 +0200 - build 1043

1. Ещё всякие мелочи в списке кодовых страниц:
   - отметки возле страниц, выбранных в поиске, выводились также при открытии и сохранении файла;
   - при сохранении не блокировался автодетект и иногда сбивалось позиционирование;
   - Константа CP_REVERSEBOM почему-то была равна 65534, а не 1201.

warp 14.07.2009 01:44:00 +0300 - build 1042

1. Добавлены константы для пунктов основного меню. Это облегчит добавление пунктов в него.
   Кроме того устранена некоторая копипаста. Соблюдаем осторожность, вдруг чего упустил.

drkns 13.07.2009 20:06:54 +0200 - build 1041

1. From Maximus5: не работал ShiftDel на непустой папке на временной панели.

drkns 13.07.2009 00:48:31 +0200 - build 1040

1. В 1035 поломался врапперный GetDirList.

drkns 12.07.2009 21:28:54 +0200 - build 1039

1. Здравствуй, прекрасное далёко. Tеперь мы понимаем петабайты и эксабайты.

2. По традиции, немного косметики: давим "void" везде, где он не нужен.

zg 12.07.2009 11:29:40 +0200 - build 1038

1. в StrCmp* добавлен флаг SORT_STRINGSORT. причина - разница результатов:
   printf("%d\n",CompareString(0,NORM_IGNORECASE,"\"aaa aaa\"",9,"\"aaa aaa-2\"",9));
   printf("%d\n",CompareString(0,NORM_IGNORECASE,"\"aaa aaa\"",-1,"\"aaa aaa-2\"",-1));
   в фаре очень желательно, чтобы совпадали.
   починился Mantis#0000804: не отображается существующий description для одной из папок.

2. InsertQuote теперь пустую строку превращает в две кавычки, а не в одну.

drkns 12.07.2009 01:21:59 +0200 - build 1037

1. В D<N|M>_KEY, ECTL_PROCESSKEY, FarKeyToName, FarNameToKey, меню и ACTL_POSTKEYSEQUENCE не производилось unicode<->oem преобразование кодов клавиш для старых плагинов.

drkns 11.07.2009 22:44:36 +0200 - build 1036

1. Если при сохранении файла по ShiftF2 был выбран нестандартный конец строки, то он потом использовался при сохранении любого файла по F2.

2. При нажатии CtrlIns на элементе ".." кладём в буфер не "..", а имя текущей папки.

drkns 10.07.2009 23:47:08 +0200 - build 1035

1. Говорят, иногда сильно тормозило сохранение файлов. Теперь должно сохранять как минимум не медленнее, чем в 1.75, а то и быстрее. :)

2. Очередные пляски вокруг nul, con, com1 и иже с ними. Теперь должно корректно обрабатываться и в подкаталогах.

3. Разные мелочи.

zg 08.07.2009 20:36:05 +0200 - build 1034

1. в StrCmpNI/StrCmpN сравнение уходило за границы строки.

zg 08.07.2009 03:23:36 +0200 - build 1033

1. Mantis#0000964: проблемы с вставкой текста.
   реально проблема в неправильном позиционировании курсора при удалении блока.

warp 08.07.2009 02:17:2009 +0300 - build 1032

1. HIGHLY EXPERIMENTAL. Меню выбора архивного плагина (с теоретической поддержкой Analyse, который 
   пока не работает). Возврат из OpenFilePlugin результата -2 не поддерживается (актуально только 
   для враппера, в 2.0 OpenFilePlugin вероятно умрет совсем). pointer_array надо или заменить на 
   один из используемых списков или наоборот использовать для списоков везде. Старый код сохранен
   в комментарии. На данный момент в меню отображаются имена модулей архивных плагинов.

zg 07.07.2009 14:53:16 +0200 - build 1031

1. уточнение 1030.

zg 07.07.2009 14:26:00 +0200 - build 1030

1. в ACTL_WAITKEY теперь приходят и макрокнопки.

warp 07.07.2009 03:07:00 +0300 - build 1029

1. Вводим функцию Analyse, первичный этап.

drkns 06.07.2009 23:04:55 +0200 - build 1028

1. По просьбам телезрителей DN_GETDIALOGINFO поступает и в ProcessDialogEvent тоже.

drkns 06.07.2009 18:35:27 +0200 - build 1027

1. Невозможно было зайти в папки nul, con, com1 и иже с ними.

2. При входе в \\?\nul неправильно отображалось содержимое панели.

3. Уточнение 1020.1 - в меню кодовых страниц иногда путались названия разделителей.

4. При пометке кодовых страниц в диалоге поиска файлов Space/Ins перемещают курсор на следующую позицию.

5. Забавный баг: если в диалоге нажать ПК и, не отпуская её, ЛК - диалог становился невидимым.
   IsMouseButtonPressed() теперь возвращает состояние всех мышиных клавиш сразу, а не первой попавшейся.

6. Внедрение системы идентификации диалогов. Часть первая - движок.
   API:
     DN_GETDIALOGINFO - far желает получить информацию о вашем диалоге.
       Param1 - 0, Param2 - указатель на структуру DialogInfo, получающую данные.
       Ваш плагин должен корректно заполнить поле StructSize структуры DialogInfo.
       верните TRUE, если заполнили структуру, или FALSE, если проигнорировали.
     DM_GETDIALOGINFO - вы желаете получить информацию о диалоге far или другого плагина.
       Param1 - 0, Param2 - указатель на структуру DialogInfo, получающую данные.
       возвращаемое значение: TRUE - структура заполнена, FALSE - сообщение проигнорировано.
     структура DialogInfo:
       StructSize - размер структуры;
       Id - уникальный идентификатор диалога в формате GUID.
     Событие DN_GETDIALOGINFO _НЕ_ поступает в функцию ProcessDialogEvent.
   Макроязык:
     состояние Dlg.Info.Id - строковое представление идентификатора текущего диалога.
     
   "Technology preview" второй части: диалог поиска (AltF7) имеет идентификатор {8C9EAD29-910F-4b24-A669-EDAFBA6ED964}.

zg 06.07.2009 13:20:05 +0200 - build 1026

1. убраны ненужные после 1021 фиксы из 1014.

zg 05.07.2009 14:39:29 +0200 - build 1025

1. настройка "whole words" влияла на поиск в hex в просмотре, хоть и была задисаблена.

zg 05.07.2009 12:25:19 +0200 - build 1024

1. Mantis#0000963: Не отображается описание для элемента "..".

zeroes 05.07.2009 03:51:27 +200  - build 1023

1. пробуем выполнить "%Programfiles%\test.exe" в ответ:
'D:\Program' is not recognized as an internal or external command,
operable program or batch file.


zg 04.07.2009 16:00:28 +0200 - build 1022

1. уточнение 1016.1.

zg 04.07.2009 15:48:50 +0200 - build 1021

1. после 1012 билда после закрытия диалогов фар отъедает некоторое время. 
   формально это 64 вызова Sleep(1). реально что-то около порядка секунды.

drkns 03.07.2009 21:08:00 +0200 - build 1020

1. Всякая косметика в меню кодовых страниц - названия групп, справка и т. п.
   Также в меню теперь всегда отображается "Automatic detection" (пока что в отключенном состоянии) - сие есть задел на будущее.

2. В статусной строке редактора не отображались атрибуты файла.

3. Mantis#0000871: Код символа под курсором в редакторе всегда юникодный.
   Если текущая кодовая страница - не уникод, если символ под курсором может быть отображен в этой странице, и если его код при этом
   отличается от уникодного - этот код будет показан в статусной строке вместе с уникодным.

garry 03.07.2009 03:32:47 +0300 - build 1019

1. В продолжение 1018 добавлена возможность в ключе реестра Far2\CodePages\Names задавать имена для
   таблиц символов имён которых не знает система. Например, для CP1125 это будет выглядеть примерно так:

   [HKEY_CURRENT_USER\Software\Far2\CodePages\Names]
   "1125"="RUSCII"

garry 03.07.2009 02:25:13 +0300 - build 1018

1. Добавлена поддержка кодовых страниц без имени (для них GetCPInfoEx возвращает ошибку). В частности,
   теперь работает CP1125 (RUSCII). Пока такие кодовые страницы так и отображаются в списке с пустым
   именем;

2. Во враппере исправлено форматирование нестандартных имён кодовых страниц.

drkns 02.07.2009 21:40:21 +0200 - build 1017

1. Внезапно выяснилось, что FCTL_SETSELECTION, во первых, криво работал при "Show selected first",
   во вторых, после него не работал CtrlM.

   Теперь, ВНИМАНИЕ! - правильно выделять из плагинов надо так:
   
   FCTL_BEGINSELECTION
   FCTL_SETSELECTION сколько нужно раз
   FCTL_ENDSELECTION.

zg 02.07.2009 18:51:52 +0200 - build 1016

1. сильно ускорен последовательный вызов FCTL_GETSELECTEDPANELITEM с неуменьшающимися индексами.

2. gcc варнинги.

drkns 01.07.2009 17:43:47 +0200 - build 1015

1. Продолжение 988.

2. При создании папок проверка корректности списка производится в обработчике диалога, а не после его закрытия.

3. В некоторых случаях неровно форматировались строки в списке результатов поиска.

svs 01.07.2009 11:27:19 +0300 - build 1014

1. Mantis#0000949: Баги при вызове AdvControl с ACTL_REDRAWALL

2. Уточнение build 1013

3. Немного логирования в менеждере...

svs 29.06.2009 17:57:12 +0300 - build 1013

1. в этом патче такое:
   1. фрейм не удаляем из CloseDialog, т.к. эта функция вызывается из XXXProc (и из плагинов)
   2. фрейм можно удалить только из "проходных" функций ProcessMouse или ProcessKey.
   3. при выставленном флаге DMODE_ENDLOOP ничего плагину в обработчик диалога не кидаем
   4. теперь в плагинах "Info.DialogRun(hDlg);" можно юзать сколько угодно раз между Init и Free.

zg 27.06.2009 01:59:08 +0200 - build 1012

1. вернём показ дополнительной информации для элемента "..".

drkns 25.06.2009 23:28:35 +0200

1. Секция "compatibility" в манифесте.

2. Поправки в vcproj.

drkns 23.06.2009 08:40:58 +0200 - build 1011

1. Mantis#0000947: Новое поведение Executor'а и %PATHEXT%. В 1009 закрались "апичатки".

lort 22.06.2009 22:43:08 +0300 - build 1010

1. Убрана перерисовка при вызове EUR_UNDO и EUR_REDO

2. Переделки в Undo, перед откатом проверяем есть ли для UNDO_END соответствующий UNDO_BEGIN и наоборот

3. Исправления в Editor.Sel, неправильно производилось выделение, если позиция начала выделения находилась после позиции конца

4. Добавлена макро функция V=Editor.Undo(N)
   здесь N:
     0 - BEGIN - начало блочной операции
     1 - END - конец блочной операции
     2 - UNDO - сделать Undo
     3 - REDO - сделать Redo

drkns 22.06.2009 15:23:38 +0200 - build 1009

1. Mantis#0000947: Новое поведение Executor'а и %PATHEXT%

2. Не всегда правильно перерисовывался диалог копирования.

drkns 22.06.2009 10:43:06 +0200 - build 1008

1. Исправление во враппере на тему FarDialogItem.Param.ListItems/FarDialogItem.Param.ListPos.
   И кто только придумал засунуть их в union :(
   Ну и заодно во всех подобных местах используем SYSTEMINFO::<Minimum|Maximum>ApplicationAddress вместо "магических чисел" 0x2000, 0x5000, MAX_MSG и т. п.

drkns 21.06.2009 19:22:36 +0200 - build 1007

1. Mantis#0000945: Не работает Rename при перемещении файлов (F6, Move) на одном диске

zg 21.06.2009 19:12:40 +0200 - build 1006

1. уточнения в PluginSynchro.

zg 21.06.2009 18:08:33 +0200 - build 1005

1. новое апи. позволяет потоку, запущенному плагином выполнить код в контексте главного потока фара.
   поток может вызвать Info.AdvControl(Info.ModuleNumber,ACTL_SYNCHRO,Param).
   если плагин экспортирует функцию ProcessSynchroEventW то она будет вызвана в контексте главного потока.
   первый параметр при этом будет равен SE_COMMONSYNCHRO (обязательно нужно проверять), второй - Param, переданный AdvControl.
   ProcessSynchroEventW должна возвращать 0.

drkns 21.06.2009 14:31:57 +0200 - build 1004

1. Массовое истребление IsBad*Ptr.

2. Массовое истребление ключевого слова 'struct'.

3. Массовое истребление "W" в именах функций и структур.

zeroes 21.06.2009 14:30:03 +0200 - build 1003

1. При запуске грабера во viewer'е курсор промелькивает в командной строке.
Особенно это было видно при использовании ConEmu. (за фикс thanx 2 Maximas)

zg 21.06.2009 14:15:36 +0200 - build 1002

1. FCTL_SET*SORTORDER для анси плагинов всегда устанавливала обратную сортировку.

zg 21.06.2009 00:15:57 +0200 - build 1001

1. падение при вызове анси плагином DM_GETDLGITEM с неверным индексом элемента диалога.

drkns 19.06.2009 16:07:36 +0200 - build 1000

1. Падение при вызове FCTL_GET[SELECTED]PANELITEM на пустой панели.

t-rex 19.06.2009 03:34:59 +0200 - build 999

1. Коррупция хипа во враппере.

drkns 17.06.2009 18:27:30 +0200 - build 998

1. Криво обрабатывалась команда chcp.

2. Mantis#938: Несовпадение регистра в именах файлов в исходниках.

3. Ещё пара мелочей. 

garry 16.06.2009 00:29:18 +0300 - build 997

1. Исправлены gcc warnings после 993;

2. Исправлена опечатка в makefile_gcc.

3. В xf_realloc_nomove вызов _expand сделан только для VC, так как в GCC far линкуется с msvcrt, где
   _expand работает несколько по другому:
     - http://msdn.microsoft.com/en-us/library/wfzt8b7y(VS.71).aspx
     - http://msdn.microsoft.com/en-us/library/wfzt8b7y(VS.80).aspx

t-rex 15.06.2009 22:44:49 +0200 - build 996

1. Пару мелочей.

drkns 15.06.2009 22:21:41 +0200 - build 995

1. Получение имени открытого в редакторе файла вынесено в отдельную команду - ECTL_GETFILENAME.
   Команда возвращает требуемый размер буфера.

drkns 15.06.2009 20:30:24 +0200 - build 994

1. ECTL_FREEINFO больше нет. Память под EditorInfo::FileName выделяет плагин.
   Требуемый размер можно получить в поле EditorInfo::FileNameSize передав туда 0,
   либо передав NULL в качестве EditorInfo::FileName.
   Также надо пересобрать плагины, работающие со стековыми закладками редактора и ECTL_UNDOREDO.

2. ACTL_FREEWINDOWINFO больше нет. Память под WindowInfo::TypeName и WindowInfo::Name выделяет плагин.
   Требуемые размеры можно получить в полях WindowInfo::TypeNameSize и WindowInfo::NameSize передав туда 0,
   либо передав NULL в качестве WindowInfo::TypeName и WindowInfo::Name соответственно.

garry 15.06.2009 20:16:33 +0300 - build 993

1. Ускорена загрузка файлов в редактор:
	- Для не-Unicode файлов на больших файлах (~200Мб) прирост скорости порядка 30-40%;
	- Для Unicode файлов прирост скорости загрузки порядка 20-30%.

2. Теперь при загрузке в редактор нормально обрабатываются идущие подряд MAC окончания строк;

3. Немного форматирования по ходу дела;

4. Добавлена функция xf_realloc_nomove, которая рабатает аналогично xf_realloc, за исключением
   того, что в случае перемещения буфера, она не копирует данные в новое расположение;

5. Кое-где применена функция xf_realloc_nomove.

zg 14.06.2009 23:03:14 +0200 - build 992

1. DM_FREEDLGITEM больше нет.
   все плагины, использовавшие DM_GETDLGITEM/DM_FREEDLGITEM/DM_GETCONSTTEXTPTR/DM_GETDLGITEMSHORT/DM_SETDLGITEMSHORT - сломались.
   DM_GETDLGITEM - изменён, Param2 указатель на память куда будет скопирован элемент. возвращается необходимый размер буфера.

2. в диалоге копирования текла память.

zg 14.06.2009 21:38:11 +0200 - build 991

1. откатим b984 пункт 2. иначе apply command иногда для некоторых файлов выполнялось по два раза.

zg 14.06.2009 19:58:18 +0200 - build 990

1. farmail корректно определяет кодировку редактора.

2. если было больше одной любимой кодировки, то анси плагины получали много клонированных кодировок.

lort 13.06.2009 21:07:43 +0300 - build 989

1. При переоткрытии редактора с новым файлом не сбрасывалось состояние undo

2. Запись за границу буфера если в редакторе конец строки состоит из трёх символов (\r\r\n)

drkns 13.06.2009 11:59:46 +0200 - build 988

1. Обход очередного бага Windows (ключевые слова: "ClearType", "векторный шрифт", "мусор").

zg 10.06.2009 20:01:03 +0200 - build 987

1. если set содержала '/', то передавалась cmd.

svs 10.06.2009 14:06:05 +0300 - build 986

1. "echo." ==> "Режим вывода команд на экран (ECHO) включен."

2. Macro: Кнопоксочетания не парсились в функциях (например, "msgbox(CtrlPgUp)")

3. Macro: девиз "eval() без параметров неправильно формирует стек". в общем баг.
   + в eval: если передаем пустую строку, то нефига ничего компилить: вернет -1.

4. API: Исходя из п.3 ACTL_KEYMACRO+MCMD_POSTMACROSTRING вернет FALSE для пустой строки

svs 09.06.2009 23:18:26 +0300 - build 985

1. В исполняторе учтем экрано-символ '^' и вариант "echo." (эхо с точкой!)

2. Mantis#0000912: Ctrl+PageUp problem after using Temp panel 

3. Очередное "изнасилование" ApplyCommand.

4. немного форматирования кода ;-)

svs 08.06.2009 22:32:42 +0300 - build 984

1. Значение параметра "Interface/ShowMenuBar" (Opt.ShowMenuBar) влияло на позицию начала показа панелей.

2. Траблы с прорисовкой после "Apply Command". Часть 1.
   Влияет наличие RedrawDesktop. Временно отключим.
   Побочный эффект - мерцание панелей.

3. Сразу после "Apply Command" установим нулевой фрейм (панели) - вопрос спорный ;-)

4. Подземные стуки с текущим каталогом после 929
   добавляем проверку TestCurrentDirectory()

svs 08.06.2009 15:45:39 +0300 - build 983

1. "cd\" - живи.
   http://forum.farmanager.com/viewtopic.php?f=6&t=4126

2. небольшие проблемы с "~", например, "cd ~\.." не работал.

3. Mantis#0000910: Команды "CD", "SET" и подобные в диалоге "Apply To" (Ctrl-G) 

4. "Apply Command", UserMenu и Ассоциации сделаем однотипно.
   Сейчас есть глюк с прорисовкой - поборимся позже.
   В последствии необходимо из трех однотипных кусков сделать 1 функцию.
   Так же у Ctrl-G был глюк с неудалением временных файлов, если использовались метасимволы-листинги.

drkns 07.06.2009 15:38:57 +0200 - build 982

1. Mantis#0000918: При использовании "Apply to" нужен дополнительный перевод строки

2. При запуске cd без параметра выдавалось ненужное сообщение об ошибке.

t-rex 06.06.2009 17:10:43 +0200 - build 981

1. from chupakabra: Несколько проблем с поиском в архивах.

2. Немного форматирования за одно.

t-rex 06.06.2009 03:51:51 +0200 - build 980

from chupakabra:

1. В результатах поиска нельзя было просмотреть файлы из архивов.

drkns 05.06.2009 22:07:40 +0200

1. Коррекция и обновление документации и справки.

svs 04.06.2009 18:38:04 +0300 - build 979

1. Проблемы с UserMenu

t-rex 04.06.2009 07:39:36 +0200 - build 978

1. Забыл удалить UnicodeString:: у функций при переносе в хидер.

2. GCC ворнинги.

t-rex 03.06.2009 14:19:42 +0200 - build 977

1. Убираем alpha/beta/RC из версии.

t-rex 03.06.2009 00:54:05 +0200 - build 976

1. Mantis#911: Запись за границу буфера в UnicodeString.cpp (для OEM строк)

2. За одно мелкие оптимизации для OEM строк.

3. Пробелы -> Табы в UnicodeString.cpp

drkns 02.06.2009 18:12:34 +0200 - build 975

1. Учитываем, что у папок "по умолчанию" 0 потоков, а не 1.

2. 974 пункт 2 не актуален, ибо падало не там.

svs 02.06.2009 08:47:52 +0300 - build 974

1. Mantis#0000908: Проблемы с сообщением ошибок в макросе

2. Падение, если в процессе загрузки попадался кривой макрос.

drkns 01.06.2009 21:10:37 +0200 - build 973

1. Mantis#0000907: Маски не работают в fexist()

2. Коррекция типов в UserDefinedList: BOOL -> bool.

drkns 01.06.2009 19:13:49 +0200 - build 972

1. В 970 в ParseMacroString проверялись не те флаги, как результат - не работало и вдобавок падало.
   
2. Продолжаем перетряхивать FindFile, часть вторая. Там же поправлена пара мелких глюков.

3. Коррекция типов в BaseFileMask и иже с ним: BOOL -> bool.

4. Уточнение 1 пункта 966 билда.

zeroes 01.06.2009 18:51:19 +0200 - build 971

1. косметика в Farrus.lng "Прерыва&ние операций (Esc)" -> "Прерыва&ние
операций" потому что упоминаний про (Esc) нет в других языковых lng.

svs 01.06.2009 16:49:22 +0300 - build 970

1. Mantis#0000905: Изменения в eval 
     msgbox(eval("!!",1))
     Видим пустой msgbox
     Под ним - красное окошко "Macro parsing error"
     Во-первых msgbox не должен быть пустой 

   так, в общем тут 2 проблемы.
   1. вывод сообщения не должен выводиться всегда... в некоторых случаях нужен режим silent
   2. так вышло, что последовательность исполнения была такой:
    а) eval
    б) eval выводит диалог (он еще не виден, т.к. стоит дизаблеоутпут)
    в) как только в памяти оказался этот диалог об ошибке, макродвиг продолжил исполнение (по сути управление получи ФАР)
    г) дошли до функции msgbox, НО! eval еще не положил в стек значение парсинга.
    д) при исполнении msgbox разлочил экран и мы увидели 2 диалога.
   в общим фиксед, но фиксед только п.2.

   АХТУНГ! НА БУДУЩЕЕ.

   Любые диагностические сообщения в макродвиге должны быть оформлены подобно тому, как это сейчас сделано в 
   KeyMacro::ParseMacroString, т.е.
   1) разлочить экран
   2) увеличть InternalInput (запретить исполнение макроса)
   3) вывести диалог
   4) уменьшить InternalInput
   5) залочить экран, если перед этим он был залочен

2. Bug: Если "Interrupt operation" выключен и мы пытались загрузить большой файл, недождавшись прервали загрузку, то
   на экране оставался месаг про загрузку этого самого файла.

svs 01.06.2009 15:26:55 +0300 - build 969

1. Mantis#0000902: Нельзя выйти из папки первого уровня при работе с диском через \\?\ 

2. Mantis#0000898: недоработка: нет проверки на открываемый размер файла
   доп.месаг, если размер все же не удалось получить...

3. Mantis#0000903: не работает функция ограничения открываемого файла в редакторе по размеру 

4. Mantis#0000894: Должно быть - S=replace(Str,Find,Replace[,Cnt]) а можно вызвать только с двумя параметрами 

drkns 31.05.2009 20:56:30 +0200 - build 968

1. Неправильно работал apiGetFileSizeEx в предыдущем билде.

drkns 31.05.2009 17:25:14 +0200 - build 967

1. Mantis#0000900: Exception: при попытке выполнить команду edit:\\.\PhysicalDrive0.

2. Mantis#0000897: Глюки с \\.\C:. Пока только первая часть - "view:\\.\C: - Видим в заголовке въювера \\\.\C: (три слэша)".

3. Mantis#0000899: Неверное сообщение что файл не существует.

4. В IsNetworkPath() не учитывался формат \\?\UNC\.

5. При разборе макросов теперь всегда выдаётся предупреждение, если макрос содержит ошибки.

drkns 30.05.2009 18:24:54 +0200 - build 966

1. При удалении папки с рекурсивными симлинками (например, профиль пользователя в Vista/2008)
   могла возникать ошибка "The folder is not empty".

2. Не работала логика "показывать статус копирования не чаще 5 раз в секунду".
   Показывалось очень сильно чаще, что при копировании большого количества мелких файлов было чревато.

t-rex 30.05.2009 02:47:02 +0200 - build 965

from chupakabra:

1. Mantis#691: Патч для FindFiles::SetPluginDirectory
   Коректировка и оптимизация.

2. Mantis#637: Проблемы плагинов с OPIF_REALNAMES

3. Mantis#878: Сообщение при отсутствии прав на чтение каталога

t-rex 30.05.2009 02:16:58 +0200 - build 964

1. Ещё штрих.

t-rex 30.05.2009 01:20:25 +0200 - build 963

1. Да, и ещё немного тоже самого :) Но теперь вроде с клавой всё :)
   Осталось сделать также для зверька, изменений размера и т.п.

t-rex 30.05.2009 01:04:20 +0200 - build 962

1. Ещё коректировки в обработке HIDDEN, теперь вроде с клавой точно работает нормально.

t-rex 29.05.2009 21:43:15 +0200 - build 961

1. Оптимизация 960 на случай когда нету никаких HIDDEN.

t-rex 29.05.2009 21:33:45 +0200 - build 960

1. Правильный скроллинг при наличии ?IF_HIDDEN (Mantis#47), пока что только для клавы.
   Мыши нужно доделать примерно таким же образом.

svs 29.05.2009 20:55:05 +0300 - build 959

1. Перетрях UserMenu - форматирование, комментирование , упрощение, etc.

   "Кривые в реестре пункты меню" пропускаются. Раньше процесс прерывался, сейчас продолжается.

   Ахтунг. В режиме isSilent имеем проблемы с командами, которые выводят что-то на экран
           Здесь необходимо переделка, например, перед исполнением подсунуть временный экранный буфер, а потом его содержимое подсунуть в ScreenBuf...
   Это относится к ассоцияциям, юзерменю...

   Для реализации Shift-F4 (в редакторе править только текущий пункт/submenu) необходимо переделать функции MenuRegToFile и MenuFileToReg
   Здесь затыка в "strItemKey.Format (L"%s\\Item%d",MenuKey,I);".

t-rex 29.05.2009 03:58:00 +0200 - build 958

1. from lort: Исправление для 955. GetCPInfo для некоторых таблиц не работает, преобразовываем к ANSI в таких случаях.

2. from Kostia Romanov (kildor): немного переводов в eng.hlf.

t-rex 29.05.2009 01:43:23 +0200 - build 957

from netghost:

1. Mantis#890: Far unicode (both x86 and x64) crash when opening Drive Menu on Windows 7 x64
   Add additional checks for WNetEnumResource call output

drkns 28.05.2009 21:26:32 +0200 - build 956

1. С форума: "Падает Far 2.0 build 952 из-за MultiArc..."
   Только не из-за MultiArc, а из-за попыток дописать NULL к UnicodeString.

t-rex 28.05.2009 15:10:00 +0200 - build 955

from lort:

1. Mantis#879: Поддержка не OEM кодировок в редакторе для старых плагинов
   Умные не юникодные плагины теперь будут реже портить текст в редакторе.

drkns 28.05.2009 10:16:03 +0200 - build 954

1. Mantis#0000883: Фар 2.0 падает в Windows 7 при выборе дисков.

drkns 27.05.2009 15:51:25 +0200 - build 953

1. Ещё несколько лишних sprintf.

2. Дивайдим, конкурим и перетряхиваем findfile.?pp. Часть первая.

svs 27.05.2009 19:53:33 +0300 - build 952

1. Уточнение билда 951

svs 27.05.2009 17:37:41 +0300 - build 951

1. После 2578/929 выявились глубинно-древние камни. При запуске "Far apath ppath" на этапе инициализации приложения для ppath
   происходила подставнока диска от apath.

2. + нефига выводить месагбокс, пока менеджер не стартанул

t-rex 27.05.2009 14:51:32 +0200 - build 950

1. Устаканивание IsWordDiv.

svs 27.05.2009 10:43:02 +0300 - build 949

1. Mantis#0000813: Поддержка консольных алиасов в ассоциациях.

2. Встроенные команды "умеют" /?. Прочие варианты, не реализуемые внутри ФАРа отдаются по цепочке дальше.

svs 26.05.2009 23:56:23 +0300 - build 948

1. У ProcessUserMenu() параметр bool

2. Добавлена IsSpaceOrEos(), руками не мацать, нужна.

3. В GetRegKey() баг, т.к. XXX.GetLength() для 1 символа, считанного из реестра возвращала размер 2

drkns 26.05.2009 20:47:53 +0200 - build 947

1. Разные мелкие оптимизации - избавляемся от конкатенации строк по sprintf(%s%s), квотирования по sprintf(\"%s\") и прочей подобной стрельбы из пушки по воробьям.

drkns 26.05.2009 20:33:47 +0200 - build 946

1. Mantis0000877: Поиск при использовании фильтра зависает.

ts 25.05.2009 23:25:04 +0200 - build 945

1. Уточнение к 940 когда размер колонок в процентах < 100% и нет колонок с автоматически вычесляемой шириной.

drkns 25.05.2009 20:24:51 +0200 - build 944

1. Поиск умеет работать с альтернативными потоками данных.

2. Оптимизация vc-проекта.

svs 25.05.2009 15:18:37 +0300 - build 943

1. Добавка в Help про Redo

2. Ins в строках ввода сбрасывал выделенный блок

t-rex 24.05.2009 16:44:00 +0200 - build 942

1. Продолжаем дивайдить и конкурить хидеры. Уже почти.

ts 24.05.2009 14:16:49 +0200 - build 941

1. Правка опечатки в 940

ts 24.05.2009 09:34:50 +0200 - build 940

1. Mantis#0000805: Ширина колонок панели в процентах
   Реализация расчёта ширины колонок (пункт 3)

zg 24.05.2009 02:37:37 +0200 - build 939

1. убрана HotkeyRules.

t-rex 23.05.2009 23:23:24 +0200 - build 938

From lort:

1. Везде юзаем DList вместо TList.

t-rex 23.05.2009 23:06:59 +0200 - build 937

From lort:

1. Mantis#867: Поддержка redo в редакторе

t-rex 23.05.2009 22:27:45 +0200 - build 936

1. Продолжаем дивайдить и конкурить хидеры.

drkns 23.05.2009 17:43:14 +0200 - build 935

1. Продолжаем разделять и властвовать.

zg 23.05.2009 17:33:03 +0200 - build 934

1. после 930 в редакторе не работали alti/altu/altd. возможно и вдругих местах наблюдалось что-то подобное.

t-rex 23.05.2009 15:57:09 +0200 - build 933

1. Ещё мелкая оптимизация в UnicodeString.

2. Избавился от struct.hpp.

t-rex 23.05.2009 04:18:17 +0200 - build 932

1. Вроде как получилось сделать нормальное решение для KeyToKey
   которое даже несколько лучше чем в 1.75, особенно тем что теперь
   это в общем работает для всех имеющихся раскладок.

t-rex & drkns 23.05.2009 00:53:26 +0200 - build 931

1. Временное решение для KeyToKey.

t-rex 22.05.2009 19:45:37 +0200 - build 930

1. Продолжаем дивайдить и конкурить хидеры.

2. По дороге было замечено что InitKeysArray() и KeyToKeyLayout() (бывший LocalKeyToKey) вообще не правильно
   для 2.0 сделаны. Пометил как BUGBUG.

svs 22.05.2009 14:03:57 +0300 - build 929

1. Неправльно работала функция KeyNameToKey() для "полупрямых" клавишь вида ShiftShiftCtrlDown (ну или ShiftCtrlShiftDown)
   + еще одно "ускорение" KeyNameToKey()

2. "Хождение по сетевым папкам с тормозами"
   Оптимизация работы SetDir`ов и ChageDir`ов, исключающих повторные действия, если CurDir уже является тем же, что хотим установить.
   Основные тормоза возникли где-то в районе "после 5-й беты 1.75" - Фунция PrepareDiskPath().

t-rex 22.05.2009 12:19:59 +0200 - build 928

1. Ещё меская оптимизация в UnicodeString.

2. Продолжаем по маленьку дивайдить и конкурить хидеры.

drkns 21.05.2009 20:29:20 +0200 - build 927

1. Запускатор: перебор расширений производится в порядке, указанном в %pathext%.
   Заодно некоторый перетрях PrepareExecuteModule и IsCommandPEExeGUI.

t-rex 21.05.2009 19:52:11 +0200 - build 926

1. Анси плагин "External Filter" всегда выводил странную ошибку в конце работы.
   Плагин проверяет LastError для своих нужд а во врапере вызов UnicodeToAnsiBin
   приводил к выставлению LastError при нулевых строках что и обманывало плагин.

t-rex 20.05.2009 22:48:48 +0200 - build 925

1. Мда, надо идти работать в Макдональдс (http://faqs.org.ru/progr/c_cpp/cpp_lite3.htm).

t-rex 20.05.2009 00:53:17 +0200 - build 924

1. "" -> L"".

2. Ещё пара мелочей.

t-rex 20.05.2009 00:11:19 +0200 - build 923

1. Оптимизация в макросах на предмет использования VMStack.
   Скажем так, тот макрос который считает простые числа, будет работать маленько быстрей :)

2. Оптимизация в создании пустых UnicodeString. Местами вполне может быть очень значительно.

drkns 19.05.2009 21:12:35 +0200 - build 922

1. В Execute() лишний раз вызывалась GetShellAction().

2. Не пытаемся преобразовать путь в полный, если он c префиксом \\?\ или \\.\

3. В диалоге сохранения опция "[ ] Add signature" блокируется для 1-байтных кодовых страниц.

4. Mantis#0000869: Проблема с относительными путями при открытии файла через ShiftF4

5. Вьювер теперь корректно показывает размер "файлов" \\?\c:, \\.\physicaldrive0 и т. п.

6. Пара мелочей в farwinapi.

t-rex 19.05.2009 16:30:33 +0200 - build 921

1. Раз есть TStack то выкинем TVMStack и заюзаем первый для него.

2. Форматирование и gcc варнинги в TStack.

svs 18.05.2009 22:12:02 +0300 - build 920

2. Mantis#0000809: push/pop-dir для "встроенных" батников 
   "Бетмэн. Начало"
   Добавлены команды PUSHD, POPD, CLRD (очистка стека каталогов) - описаны в хелпе (в FarEng.hlf есть русские букофки)
   Взаимодействия с %COMSPEC% нет.

3. Для PROMT добавлен конструкт "$+" - отображение нужного числа знаков плюс (+) в зависимости от текущей глубины стека 
   каталогов PUSHD, по одному знаку на каждый сохраненный путь.

4. В дополнение - переменная среды FARDIRSTACK - содержимое вершины стека каталогов (который управляется командами pushd и popd)
   FARDIRSTACK позаимствована из униха (там это DIRSTACK)

t-rex 18.05.2009 18:24:35 +0200 - build 919

1. Враппер почему то отдавал анси плагинам кодировки выбраные в поиске а не favorites.

t-rex 18.05.2009 02:32:07 +0200 - build 918

1. And The Saga Continues.

t-rex 18.05.2009 01:13:47 +0200 - build 917

1. Вернём возможность показывать папки "." и ".." которые можно создать на фате, и подружим это с фиксом в 916.

2. Небольшая оптимизация в классе NTPath.

t-rex 17.05.2009 23:50:46 +0200 - build 916

1. В некоторых случаях показывались папки "." и по два раза ".." (и за одно форматирование кода).

t-rex 17.05.2009 17:06:27 +0200

1. Hungarian lng and hlf update from Far Hunor.

t-rex 17.05.2009 16:28:43 +0200 - build 915

1. Меню плагинов неправильно сортировалось если ветка реестра хоткеев была пуста.

t-rex 17.05.2009 14:33:23 +0200 - build 914

1. Mantis#776, назначение хоткея плагину работало в общем только для плагинов в под папках Фара,
   или если путь к плагину был длинней чем к фару. Теперь работает нормально для всех.

2. Ещё переделки и улучшения в классе PluginManager а также просто форматирование кода.

3. Хоткей для "tab size" в диалоге настроек редактора/въювера переводил фокус не туда куда надо.

t-rex 17.05.2009 00:10:20 +0200 - build 913

1. По наводке от Andrey Budko, оптимизация KeyNameToKey, теперь макросы загружаются немного быстрей.

2. Доп. оптимизация и мин. переделка класса PluginManager.

t-rex 16.05.2009 16:57:19 +0200

1. Добавил возможность собрать debug с gcc.

t-rex 16.05.2009 12:57:57 +0200 - buid 912

1. По наводке от Andrey Budko, оптимизация работы с реестром. Как минимум на порядок ускоряет загрузку и закрытие Фара.

2. gcc ворнинги.

t-rex 15.05.2009 21:21:33 +0200 - build 911

1. В 910 забыл изменить PluginManager::LoadPluginsFromCache() в соответствии с новым форматом кэша.

2. За одно теперь работает /co, а он видимо никогда вообще и не работал.

t-rex 15.05.2009 20:09:55 +0200 - build 910

1. На форуме жаловались что большое количество плагинов медленно грузится,
   но раз уж полез то переделал кэш плагинов в более приемлемый и оптимизированный вид.
   Там ещё бы надо в PluginManager::GetPlugin bsearch заюзать для полной красоты,
   раз уж список плагинов всегда находится в отсортированном состоянии.
   
drkns 14.05.2009 21:44:41 +0200 - build 909

1. Ещё некоторые мелочи на тему панели задач.

drkns 14.05.2009 00:49:36 +0200 - build 908

1. В Windows 7 статус выполняемых операций проецируется на кнопку в панели задач. Для gcc пока отключено.

2. При подсчёте размера папки по F3 в сообщении выводится уже насчитанное.

3. При поиске во вьювере отображается индикатор прогресса. 

4. Лишняя перерисовка в дереве папок.

garry 13.05.2009 16:48:26 +0300 - build 907

1. Настройка System\FindCodePage теперь REG_DWORD и содержит кодовую страницу для поиска;
2. Исправлены проблемы при инициализации списка кодовых страниц при поиске по всем кодовым страницам;
3. (С форума) В диалоге поиска, после заполнения списка кодовых страниц, в общем случае выбранная 
   кодовая страница может не совпадать с той кодовой страницей, которую мы хотели установить.
   Эта ситуация учтена.

svs 13.05.2009 11:23:49 +0300 - build 906

1. Mantis#0000860: msave() - сохранение переменных содержащих '\n' 
   Кроме msave() таккая же беда была и в KeyMacro::WriteVarsConst()

drkns 09.05.2009 17:52:42 +0200 - build 905

1. Mantis#0000861: Некорректная обработка кавычек в поиске файлов.
   Плюс немного оптимизации - проверка корректности маски выполняется в обработчике диалога, а не после его закрытия.

drkns 07.05.2009 12:50:05 +0200 - build 904

1. И ещё одно уточнение, там же.

drkns 07.05.2009 12:50:05 +0200 - build 903

1. Уточнение в отображении индикаторов прогресса в редакторе.

svs 06.05.2009 18:54:33 +0300 - build 902

1. Mantis#0000851: Странности с макроконстантами 
   Снова EnumRegValueEx.

zg 06.05.2009 15:30:08 +0200 - build 901

1. варнинги в gcc 4.4.0.

drkns 04.05.2009 20:11:56 +0200 - build 900

1. Фар падал при поиске текста в архивах.

2. Не работал поиск по всем кодовым страницам (а на самом деле - баг в EnumRegValue).

3. От SVS: Mantis0000851: Странности с макроконстантами (а на самом деле - баг в EnumRegValueEx).

drkns 04.05.2009 12:36:22 +0200 - build 899

1. Mantis#0000852: Memory leak in apiFindFirstStream().

2. Утечки памяти в History::ReadHistory() и History::SaveHistory().

drkns 03.05.2009 16:29:21 +0200 - build 898

1. В ScanTree закрывались не все хендлы.

2. Уберём пока эксперименты с Find<First|Next>File.

drkns 02.05.2009 11:16:01 +0200 - build 897

1. С форума: ошибка при установке атрибутов группе файлов

drkns 01.05.2009 13:42:58 +0200 - build 896

1. SetAttr:
   - Блокируем "Sparse" на томах без FILE_SUPPORTS_SPARSE_FILES.
   - "not indexed"/"temporary"/"offline" не блокируются нигде, ибо нет способа узнать, умеет ФС такое или нет.

2. Find<First|Next>File возвращал не все атрибуты на некоторых ФС.

3. Уточнение Mantis#45: содержимое символических ссылок копируется не тогда, когда ФС приёмника !="ntfs",
   а тогда, когда у ФС приёмника не установлен флаг FILE_SUPPORTS_REPARSE_POINTS.

drkns 01.05.2009 01:17:29 +0200 - build 895

1. Mantis#0000833: Не работают шорткаты у старых плагинов

2. Разблокируем в SetAttr и temporary/offline, чего добру пропадать.

drkns 30.04.2009 19:48:32 +0200 - build 894

1. x64 warnings.

drkns 30.04.2009 17:30:41 +0200 - build 893

1. В статусных сообщениях, выводимых редактором при загрузке/сохрании/поиске/замене, теперь присутствует прогрессбар.

2. По Ctrl-A можно управлять атрибутом "Sparse".
   Ахтунг: СНЯТИЕ сего атрибута работает только в Vista и выше.

3. Продолжение Mantis#0000153.

svs 29.04.2009 22:15:50 +0300 - build 892

1. Проблемы с прорисовкой:
   1. мы в корне, Tree.Far отсутствует, курсор на файле ниже предполагаемого Tree.Far, режим панели составной (имя, размер, etc.)
   2. Alt-F10, ждем построения дерева, после появления "панели" выбора в дереве жмем Esc
   3. Видим что строки "поехали".

   Сделано пока в лоб, в нужных местах выставлены комменты для TODO, может кто элегантней код сделает по проверке нужности обновления панелей.

drkns 29.04.2009 19:59:23 +0200 - build 891

1. Продолжение Mantis#0000153.

2. В 16-ричном просмотре используется новый вид скроллбара.

svs 29.04.2009 13:20:20 +0300 - build 890

1. Mantis#0000847: Сбивается выделение (Alt-Ins) при попытке выделить текст с помощью клавиатуры во время msgbox()

drkns 28.04.2009 22:55:03 +0200 - build 889

1. По мотивам Mantis#0000153: "Было бы логичнее и при ручном нажатии [Rename] предлагать уже модифицированное счётчиком имя."

2. Используем GetFileSizeEx() вместо GetFileSize().

svs 28.04.2009 18:03:38 +0300 - build 888

1. Mantis#0000841: Мусор в msgbox при неуказании опциональных параметров 

ts 28.04.2009 03:02:57 +0200 - build 887

1. Mantis#0000805: Ширина колонок панели в процентах
   Подготовка к реализации: задание и хранение настроек (пункт 1 и 2)
   TODO: непосредственно расчет ширины колонок

drkns 27.04.2009 22:48:55 +0200 - build 886

1. В диалог подтверждения перезаписи добавлена кнопка "Rename".

2. PreRedrawFunc() вызывалась при каждом Dialog::Show(), т. е. на каждый чих, что приводило к забавным видеоэффектам.
   Теперь вызывается только тогда, когда надо.

3. Для поиска слешей в строках используем <First|Last>Slash() вместо wcs[r]chr и [R]Pos.

svs 27.04.2009 21:04:01 +0300 - build 885

1. Mantis#0000843: Задержка при установке блока с помощью Editor.Sel 

2. Mantis#0000842: Far повисает на старте встретив Multi-String в разделе KeyMacros\Vars
   Так, здесь проблема не в макросах, а в EnumRegValueEx
   Немного переделал эту функцию - в т.к. ValueName в динамике (если ошибся - поправьте :-)

3. В apiRegEnumKeyEx потенциальный баг... с лишним циклом при получении имени кея

4. KeyMacro\Vars & KeyMacro\Consts могут быть REG_MULTI_SZ

svs 27.04.2009 10:27:38 +0300 - build 884

1. Mantis#0000838: Ошибка при выделении блока (Editor.Sel)
   Уточнение про "Если позиция начала и конца блока совпадают, то эта операция равносильна снятию пометки блока"

drkns 25.04.2009 19:59:55 +0200 - build 883

1. В метасимволах !@! и !$! не работал модификатор 'A'. Туда же добавлены 'W' (создавать список в уникоде) и 'U' (создавать список в UTF8).

drkns 24.04.2009 23:58:40 +0200 - build 882

1. Мелкий баг в 881.

drkns 24.04.2009 23:37:02 +0200 - build 881

1. В режимах панели доступно два новых типа колонок: количество потоков / суммарный размер потоков.

svs 23.04.2009 19:38:08 +0300 - build 880

1. Mantis#0000838: Ошибка при выделении блока (Editor.Sel)

2. Mantis#0000212: Добавить timestamp в истории каталогов/просмотра/редактирования
   Часть первая: внедрение математики, пока без отображения и экшена
   TODO: экшен и отображалку нужно делать в History::Select()
   Здесь так же можно добавить файловые атрибуты, тогда можно будет делать вот так: "удалить все скрытые каталоги"

garry 23.04.2009 09:48:24 +0300 - build 879

1. Усовершенствования в работе с кодовыми страницами:
    - В общем списке кодовых страниц снова отображаются системные OEM и ANSI кодовые страницы;
    - В диалоге поиска файлов нормально обрабатывается ситуация, когда в списке выбора кодовых страниц
      одна кодовая страница присутсвует два раза;
    - Исправлено следующее: если открыть выпадающий список кодовых страниц, спозиционироваться на какой-либо элемент, 
      а затем нажать ESC, то фар запоминал последнюю выбранную в выпадающем списке кодовую страницу, в то время как
      в самом списке оставалась выбрана старая кодовая страница. Соответственно, поиск осуществлялся не по той
      кодовой странице.

svs 22.04.2009 21:07:28 +0300 - build 878

1. Mantis#0000836: Ошибки в макрофункции Editor.Sel()

svs 22.04.2009 11:36:53 +0300 - build 877

1. Уточнение локировок
      есть история каталогов:
      C:\
      C:\Far.Unicode.200
      C:\Far.Unicode.200\contrib
      отмечаю последний и жму del
      выхожу по каталогам наверх -- все пункты истории залочены

svs 21.04.2009 21:54:10 +0300 - build 876

1. History.
   Добавлены локировки пунктов (защита от очисток и удалений)

   В FarHun.hlf.m4 и FarEng.hlf.m4 есть русские буковки.

2. Исправлены чудеса в CopyKeyTree - 1000 не всегда достаточно для хранения данных.
   (это когда делаем "far /u foo" и в ветке foo "немного" данных отсутствует)

svs 20.04.2009 21:04:27 +0300 - build 

1. В FarHun.hlf.m4 те же изменения, что и в 17.04.2009
   текст нужно "конвертнуть" на нужный язык (там на russian)

drkns 20.04.2009 15:52:31 +0200

1. В 875 отвалилась хитрая сортировка заголовков в индексе справки.

drkns 20.04.2009 13:40:12 +0200 - build 875

1. Mantis#0000078: Размер свободного места в симлинке при входе по сети 
   Mantis#0000758: Far неправильно показывает место на диске в ссылках на сетевой ресурс

   Здесь учитываем то, что GetDiskFreeSpaceEx - умный, и сам умеет находить правильный корень для любых ссылок.
   TODO: надо учесть сей момент и в копире, с поправкой на то, что целевой путь может отсутствовать и создаваться только в процессе копирования.

2. При свёрнутом хелпе и 80x25 разъезжался текст лицензии в справке.

3. FarHun.hlf.m4 добавлен в vcproj.

zg 20.04.2009 13:17:47 +0200 - build 874

1. при извлечении hotplug устройств в случае, когда 'device description' было равно 'friendly name' либо 'friendly name' было пустым,
   почему-то отображалось 'friendly name'. хотя более логичным является отображение 'device description'.

2. gcc варнинги.

svs 20.04.2009 12:11:42 +0300 - build 873

1. Mantis#0000832: Неработоспособность ключа /x 

svs 17.04.2009 13:23:10 +0300 - build 872

1. (from ts) правки во враппере для FarCharTableA, аналогичные 869

2. (from Ariman) Mantis#0000830: Неверный расчет перемещения в функции Viewer::Up() для UTF-8

3. (from Ariman) Mantis#0000810: Неверный результат функции Viewer::vread для UTF-8 

svs 17.04.2009 10:51:27 +0300 - build 

1. В hlf-файлах применен параметр CtrlStartPosChar - указывает место, где будет начало последующего текста
   для примера "изменен" раздел @Editor

2. Добавлены 2 раздела: @KeyMacroEditList и @KeyMacroViewerList, "показывающие" какие макросы активны в редакторе и вьювере.
   Здесь применены хелповые макроконструктивы <!Macro:XXXX!>. Парсер хелпа заменяет их на последовательность строк вида
   <название макроклавиши> <описание из поля Description>
   все значения берутся не из реестра, а из памяти (те макросы, которые ФАР загрузил при старте и которые были назначены в текущем сеансе).

   В FarEng.hlf.m4 есть русские букоФки.

drkns 15.04.2009 20:40:53 +0200 - build 871

1. В редакторе при установке кодовой страницы и сохранении файла производились попытки перекодировать пустые строки.

2. Во враппере в FCTL_GET[ANOTHER]PANELINFO производились попытки перекодировать PanelInfo.[Selected]PanelItems при отсутствии элементов на панели.

drkns & zg 14.04.2009 16:50:22 +0200 - build 870

1. IsHotPlugDevice() неправильно работала в Windows 7.

t-rex 14.04.2009 03:29:27 +0200 - build 869

1. av в EnumCodePagesProc при "не стандартных" имён таблиц, например под wine.

garry 13.04.2009 16:31:57 +0300 - build 868

1. Исправлен небольшой баг в раскраске привнесённый в 867.

garry 13.04.2009 14:14:05 +0300 - build 867

1. Исправления/улучшения работы с раскраской:
    - Исправлены проблемы возникающие, если элементы раскраски расположены не по порядку. К сожалению, в этом случае
      полностью избавиться от сканирования строки с начала не получается;
    - Функции RealPosToTab/TabPosToReal, если было включено преобразование табов в пробелы, подсчитывали расстояние 
      без учёта FEDITLINE_EDITBEYONDEND, а если отключено, то с учётом. Теперь FEDITLINE_EDITBEYONDEND не учитывается
      вне зависимсоти от режима работы с табами. Вследствие чего раскраска за пределами строки возможна в любом режиме;
    - Исправлены мелкие недочёты;
    - Произведены некоторые дополнительные оптимизации.

drkns 12.04.2009 16:48:16 +0200

1. Добавим форматов в Far.ico. 

drkns 08.04.2009 22:13:25 +0200 - build 866

1. Погнул выравнивание в предыдущем билде. 

svs 08.04.2009 23:23:47 +0300 - build 865

1. Mantis#0000816: Курсор не прячется при открытии viewer

2. Mantis#0000817: Неправильная макро-область

drkns 08.04.2009 18:08:04 +0200 - build 864

1. Mantis#0000820: В корне подмонтированных через SUBST дисках ошибочно показывается переход в родительский каталог

2. Убран мусор из pluginold.hpp.

3. Заголовки некоторых *.<с|h>pp были в oem.

4. В syslog криво использовалась IsDebuggerPresent().

drkns 07.04.2009 18:55:13 +0200 - build 863

1. Не работала проверка на HelpOnHelpTopic при вызове справки - при удерживании F1 стек возврата забивался черт знает чем.

2. Используем LIF_GRAYED вместо LIF_DISABLE в диалогах поиска и копирования.

3. x64 warnings.

4. Изменения в API:
    - в FSF.GetFileOwner добавлен 4-й параметр - размер приёмника;
    - Функция возвращает требуемый размер буфера.

5. Утечка памяти в FileList::ChangeDir.

6. Истреблён NM в некоторых местах.

7. Копир, поиск, дерево и прочие, использующие ScanTree - падали на путях глубже 130 каталогов.

t-rex 07.04.2009 17:43:53 +0200 - build 862

1. Верхний пункт истории был в общем не доступен.

drkns 06.04.2009 19:45:29 +0200 - build 861

1. Убрано ограничение на размер строки ввода в диалогах, там же поправлено несколько BUGBUG и убраны неиспользуемые переменные.

2. На панелях не отображались каталоги с именем "." (да, и такое иногда бывает).

3. "Плавала" сортировка по размеру.

4. Не сбрасываем TopPos при удалении элемента из истории.

5. ProcessOSAliases в FileList::ApplyCommand().

garry 06.04.2009 14:59:36 +0300 - build 860

1. Доделан поиск по все кодовым страницам:
    - по умолчанию поиск работает по старому, то есть ищет по стандартным и любимым кодовым страницам;
    - в выпадающем списке теперь можно выбрать те стандартны и любимые кодовые страницы по которым
      будет осуществляться поиск при выборе пункта "Все кодовые страницы". Выбрать кодовую страницу
      можно Ins-м и Space-ом;
    - В реестре этот выбор хранится там же где и любимые кодовые страницы. В значении ключа реестра кодовой
      страницы теперь различается два флага: 1 -- любимая кодовая страница, 2 -- кодовая страница выбранная
      для поиска по всем кодовым страницам.

2. В списках кодовых страниц теперь не отображаются кодовые страницы соответвующием системным OEM и ANSI
   кодовым страницам.

t-rex 06.04.2009 11:02:01 +0200 - build 859

1. Удаление последнего элемента из истории переводило выделение на начало списка.

zg 06.04.2009 00:58:22 +0200 - build 858

1. после 856 раскраска глючила в режиме EXPAND_ALLTABS.

zg 06.04.2009 00:25:16 +0200 - build 857

1. исправлен gcc билд.

garry 05.04.2009 00:35:08 +0300 - build 856

1. Оптимизирована раскраска очень длинных строк. По идее должно работать, либо как раньше, либо быстрее.
   Для достижения наилучшей производительности раскраска в ColorList должны быть расположена по порядку.

t-rex 04.04.2009 22:27:16 +0200 - build 855

1. Ещё мелкий бажок в TList. Заметил faruh.

t-rex 04.04.2009 16:31:10 +0200 - build 854

1. Ещё немного внутренних переделок в истории. Как вытекающее - ShiftDel удаляет текущий пункт.

2. Ещё пару багов в TList.

t-rex 04.04.2009 13:27:18 +0200

1. Hungarian lng update from Far Hunor.

drkns 04.04.2009 00:54:42 +0200 - build 853

1. Неуникодные плагины теперь метятся не дописыванием [A] к имени, а символом в "служебной области" меню.

2. x64 warning. 

drkns 03.04.2009 20:37:18 +0200 - build 852

1. Из VMenu::AddItem убран AssignHighlights, ибо:
    - сие приводило к сказочным тормозам в длинных меню и списках;
    - AssignHighlights уже есть в ShowMenu.
   Там же: убран неиспользуемый код и немного оптимизации.
   
garry 03.04.2009 19:40:01 +0300 - build 851

1. Переработан диалог печати:
   - Сделано динамическое выделение памяти для списка принтеров (буфера иногда не хватало);
   - Сетевые и локальные принтеры теперь получаются вместе;
   - Список принтеров теперь получается через PRINTER_INFO_4W, что избавляет от зависаний при наличии
     недоступных сетевых принтеров. Вследствии этого в списке теперь отображается только имя принтера;
   - Принтер по умолчанию теперь отмечается галочкой.

t-rex 03.04.2009 17:26:47 +0200 - build 850

1. История полностью переписана, изменения чисто внутренние, на использование не должно влиять.
   Единственное (надеюсь) видимое изменение это то что больше нет пустой строки в конце, если в ней был какой то
   сокровенный смысл то пишите, верну.
   Заодно исправлены Mantis#690 и Mantis#450.

2. Ужасы в TList.hpp.

drkns 01.04.2009 21:33:08 +0200 - build 849

1. Не работало отключение автоопределения кодовых страниц в редакторе/просмотре.

svs 01.04.2009 20:54:14 +0300 - build 848

1. Mantis#0000047: *IF_HIDDEN 
   Добавлены флаги LIF_HIDDEN (для листов/комбо/историй полей ввода, в общем списков) и MIF_HIDDEN для
   менюх.
   Патч крайне эксперементальный (при юзании этих флагов, в "обычной жизни" все ок).
   Возможно нужны уточнения.
   VMENU_QUICKSEARCH будет после нормализации работы VMenu с *IF_HIDDEN.

2. Плюс к этому флаги [L|M]IF_GRAYD. 
   Смысл флагов: стать курсором на такой пункт можно, но тыкание мышкой или Enter на таком пункте не работает 
   (этот пункт не производит активных действий)
   Соответственно палитра потолстела на 10 пунктов.
   В раскраске у таких пунктов нет горячих клавиш, соответственно красим только normal и selected.

drkns 30.03.2009 18:24:04 +0200 - build 847

1. Если фар не смог выполнить команду вида "cd какой-то_путь", то в %comspec% она больше не передаётся, т.к.
   во первых, смысл в этом всё равно отсутствует чуть более, чем полностью, во вторых, если путь - сетевой,
   то ругань комспека на unc-пути вводит пользователя в заблуждение.
   Вместо этого теперь показываем красивое красное сообщение с текстом ошибки, как в панелях.
   Также в ProcessOSCommands добавлена обработка команды "exit" и немного косметики.

svs 30.03.2009 15:05:57 +0300 - build 846

1. Уберем немного варнингов.

2. При считывании макросов из реестра так же сохраняются поля "Description".

3. В хелп добавлена обработка макроконструктивов. 
   Пока обрабатываются <!Macro:!> - показывающие в помощи макросы, работающие в текущем сеансе
   Кроме сочетания клавиш выводятся описания (если они есть) - в реестре это "Description".
   В этом билде hlf-файлы не скорректированы - необходимо определиться с форматом CtrlStartPosChar

t-rex 30.03.2009 00:42:57 +0200 - build 845

1. Mantis#750: Неинициализированная переменная strInitedLanguage приводит к падению Far.
   И тоже самое с strPersonalPluginsPath.

t-rex 29.03.2009 21:43:12 +0200 - build 844

1. Несколько мелочей.

t-rex 29.03.2009 17:31:41 +0200

1. Hungarian lng and hlf updates from Far Hunor.

t-rex 28.03.2009 23:25:18 +0200 - build 843

1. Отключенные драйвы которые теперь показываются в меню дисков теперь имеют соот. описание чтоб было понятно.
   Ну и разные мелочи с этим связанные.

drkns 28.03.2009 20:10:26 +0200 - build 842

1. Ошибка в предыдущем патче.

drkns 28.03.2009 19:07:10 +0200 - build 841

1. "Интеллектуальные" полосы прокрутки: высота ползунка пропорциональна количеству прокручиваемого.
   Во вьювере пока оставлен старый вариант.

2. Удаление всех записей из истории ввода диалога приводило к падению.

3. network.?pp добавлены в проект.

t-rex 28.03.2009 19:54:38 +0200 - build 840

1. Пару проблем в пердыдущем патче.
   Надо наверно ещё придумать как помечать эти отключеные драйвы которые теперь показываются в меню дисков.

t-rex 28.03.2009 17:20:46 +0200 - build 839

1. From dialex: Mantis#363: Support for network disks

2. Теперь вроде pch будет пересобиратся когда надо.

svs 27.03.2009 11:50:18 +0300 - build 838

1. Mantis#0000801: FarInputRecordToKey() игнорирует dwControlKeyState

drkns 26.03.2009 18:43:43 +0200 - build 837

1. "Защита от дурака" для случая Mantis#0000800, ну и вроде как Mantis#0000765 сюда же.

2. Иногда при смене диска ломились не туда, куда надо.

drkns 25.03.2009 21:03:34 +0200 - build 836

1. Mantis#0000800: FAR падает при попытке показать дерево, если в файле tree2.far присутвуют длинные пути

svs 25.03.2009 20:58:07 +0300 - build 835

1. Mantis#0000799: Buffer overrun in Editor::BlockLeft

drkns 24.03.2009 18:43:59 +0200 - build 834

1. Неправильно отображалась разделительная линия в диалоге параметров поиска.

drkns 23.03.2009 20:05:37 +0200 - build 833

1. Неперерисовка после закрытия дерева папок. В 1.7х исправлено ещё в 2194, сюда почему-то не попало.

2. UnicodeString::c_str() -> CPtr().

t-rex 21.03.2009 12:59:12 +0200

1. Updates and corrections in Hungarian lng from Far Hunor.

svs 20.03.2009 22:20:25 +0300 - build 832

1. Macro: V=callplugin(SysID[,param])

drkns 19.03.2009 19:02:25 +0200 - build 831

1. 829 не собирался в гцц. То ли лыжи не едут, то ли...

2. В UnicodeString добавлен const wchar_t *c_str() (название обсуждаемо), равносильный оператору const wchar_t*.

3. Косметические правки в lng.

t-rex 19.03.2009 13:48:11 +0200

1. Polish translation (lng file) from Maciej Ogrodniczuk.

svs 19.03.2009 12:51:37 +0300 - build 830

1. Mantis#0000794: Empty menu can't be shown from ANSI plugins
   from: darkmist

t-rex 19.03.2009 11:04:52 +0200

1. Corrections in FarHun.hlf.m4 from Far Hunor.

2. Немного грамматики в FarEng.hlf.m4.

drkns 18.03.2009 23:48:38 +0200 - build 829

1. Редактор умеет читать окрытые на запись файлы (опционально). Как следствие - некоторый перетрях диалога настроек
   редактора, ибо в 80x25 новая опция уже не лезла (а заодно и вьювера, дабы выглядели более/менее в одном стиле).
   Теперь влезает, ещё и место остаётся.
   Заодно скроем из локальных настроек редактора/вьювера ещё пару неактуальных для данного режима опций.
   В FarEng.hlf.m4 есть русские буквы.
   В FarHun.hlf.m4 надо обновить разделы @ViewerSettings и @EditorSettings.

2. Упорядочим использование флага FILE_FLAG_POSIX_SEMANTICS для CreateFile. Теперь оный не размазан по коду,
   а используется централизованно в обёртке apiCreateFile, но только для случая dwCreationDistribution==OPEN_EXISTING,
   ибо позволять пользователю самому создавать такое чудо - это уже перебор.

3. При неудачной загрузке файла в редактор не отображался результат GetLastError()

4. Неиспользуемая переменная в main.cpp

svs 18.03.2009 22:42:31 +0300 - build 828

1. Убираем несостоявшиеся эксперименты с двойными тыками в макросах.
   MsM1DblClick, MsM2DblClick, MsM3DblClick, MsLDblClick, MsRDblClick - таких клавиш нет.
   Причины:
   1) если есть макросы на MsLDblClick и MsLClick, то (всегда!) сначала сработает MsLClick, а за ним MsLDblClick.
   2) ну оооочень медленно

2. Mantis#0000790: Buffer overrun in KeyMacro::GetIndex

svs 16.03.2009 20:56:35 +0300 - build 827

1. Mantis#0000165: Макросы на кнопки мыши 
   End of game - двойные тыки тоже обмакросены.
   MsM1DblClick, MsM2DblClick, MsM3DblClick, MsLDblClick, MsRDblClick

2. Не совсем корректно был реализован Mantis#0000762.

3. Mantis#0000785: Filters in search are broken
   В FileFilter::FileInFilter() добавлен второй параметр типа enumFileInFilterType, 
   уточняющий, почему функция вернула false или true.

4. В FarEng.hlf.m4 есть русские буквы.
   В FarHun.hlf.m4 нужно уточнить раздел @KeyMacroSetting про "и другие клавиши мыши".

drkns 15.03.2009 10:14:34 +0200 - build 826

1. Глюки при таскании мышью полос прокрутки в редакторе, просмотре и панелях.

t-rex 14.03.2009 20:28:48 +0200 - build 825

1. From Alexey Pakhunov: Mantis#787: Buffer overrun in nsMBCSGroupProber::HandleData.

drkns 14.03.2009 11:34:05 +0200 - build 824

1. С форума: не работала кнопка "пропустить всё" при копировании сжатых папок и файлов.

t-rex 13.03.2009 16:03:43 +0200 - build 823

1. Hungarian HLF file from Far Hunor.

2. From Alexey Pakhunov: Mantis#782: FileList::ProcessEnter падает после ChangeDir.
   А также видимо исправляет Mantis#734 и Mantis#743.

drkns 12.03.2009 19:37:22 +0200 - build 822

1. Граббер сбрасывал режим выделения по приходу KEY_IDLE.

2. При пометке файлов правой кнопкой обрабатываем и двойной клик тоже.

3. Уточнение в выделении текста двойным кликом.

4. В диалог поиска уже толком не влезают ни комбобокс с кодовыми страницами,
   ни поле ввода текста (особенно с оглядкой на regexp), посему элементы диалога слегка передвинуты.

5. Mantis#0000781:Buffer overrun in VMenu::ShowMenu 

6. При неудачном открытии файла не удалялся FileViewer.

7. Лишние delete и strdup вместо xf_strdup в паре мест.

svs 12.03.2009 20:27:06 +0300 - build 821

1. Mantis#0000780: Парсер: не всегда принимается вызов функции Sleep
   Т.к. в билде 2450 появилась клавиша Sleep, то появилась и проблема :-)
   Переименуем клавишу в Standby.

2. Mantis#0000762: Не находятся символические ссылки 

drkns 11.03.2009 01:35:29 +0200

1. Криво создавался farkeys.hpp

drkns 10.03.2009 19:15:58 +0200 - build 820

1. Уточнение 737 билда: WaitKey() считает "любыми настоящими клавишами" не только те,
   которые меньше KEY_END_FKEY, но и некоторые из INTERNAL_KEY_BASE.

2. Клавиши KEY_SLEEP и KEY_DECIMAL передвинуты из INTERNAL_KEY_BASE в EXTENDED_KEY_BASE,
   ибо таки имеют реальные VK_-прототипы, в отличие от.

3. Проект MOUSEKEY извёрнут несколько в другую сторону, но итог примерно тот же:
   в редакторе, комстроке и полях ввода диалогов двойной клик выделяет слово, тройной - всю строку.

4. Mantis#0000774: Не верно работает перименование junction-в на сетевых дисках.

t-rex 10.03.2009 11:39:46 +0200 - build 819

1. Будем считать что если детектор определил что таблица "x-mac-cyrillic" то это всётаки Win-1251 так как они очень похожи
   и 1251 встречается чаще (в рамках фара, да и в мире тоже :) а вот детектор бывает путает и определяет 1251 как mac.

   Дектор у нас наверно ошибается потому что ему передаётся только кусок файла, по хорошему надо сделать чтоб детектор получал
   весь файл по кусочкам. Может там уже есть АПЙ для этого?

drkns 09.03.2009 12:56:57 +0200 - build 818

1. Mantis#0000775: баг в SHErrorToWinError

t-rex 07.03.2009 18:50:04 +0200

1. Hungarian translation (lng file) from Far Hunor.

2. Обновил lng.generator.

svs 06.03.2009 13:24:30 +0300 - build 817

1. Mantis#0000773: Комбинация макросов приводящая к мусору в клавиатурном буфере (при запуске фара с плагином, выводящем при старте диалог)

drkns 06.03.2009 00:01:07 +0200 - build 816

1. В 809 немного поломал макросы.

svs 05.03.2009 12:17:32 +0300 - build 815

1. Mantis#0000771 - утчонение:
   для Cmd&1 функция evalFunc() должна вернуть false всегда (т.к. исполнять нечего)

t-rex 05.03.2009 10:27:10 +0200 - build 814

1. Правка Mantis#769 в 813 не правильная.

2. Ворнинги.

svs 05.03.2009 09:42:34 +0300 - build 813

1. Mantis#0000771: Опечатка в справке по аргументам коммандной строки

2. Mantis#0000769: Ошибка в Dlg.GetValue
   (так же здесь DM_LISTGETITEM применялась для первого элемента диалога, вместо запрашиваемого Index)

drkns 04.03.2009 21:48:39 +0200 - build 812

1. Разные мелкие глюки в отображении диалога результатов поиска.
   Там же: сепараторы в списке рисуем как сепараторы.

2. Неправильно работала функция TruncStrFromEnd.

3. В логике дорисовывания рамки меню не учитывалась ситуация BoxType==NO_BOX.

4. Mantis#0000730: Far2: падение при DM_LISTINSERT.

svs 04.03.2009 17:48:01 +0300 - build 811

1. Mantis#0000768: Расширение параметров макрофункции eval() для проверки корректности макропоследовательности 
   N=eval(S[,T])
   N = код ошибки
       enum errParseCode
       {
         err_Success,
         err_Unrecognized_keyword,
         err_Unrecognized_function,
         err_Not_expected_ELSE,
         err_Not_expected_END,
         err_Unexpected_EOS,
         err_Expected,
         err_Bad_Hex_Control_Char,
         err_Bad_Control_Char,
         err_Var_Expected,
         err_Expr_Expected,
       };
   T = "как". Пока так: 0 - компиляция и исполнение, 1 - только компиляция и возврат кода ошибки.

t-rex 04.03.2009 15:52:31 +0200 - build 810

1. Правки в regexp либе, от Кости.

2. Some grammar in German translation. By Wolfgang Krumm.

3. Варнинги и форматирование в macro.cpp.

drkns 03.03.2009 21:55:07 +0200 - build 809

1. В диалог параметров макрокоманды добавлено поле "Sequence:", содержащее текстовое представление
   набранного пользователем макроса, что позволяет не отходя от кассы разбавить сухие нажатия клавиш
   разнообразными элементами макроязыка (и да - я помню про DI_MEMOEDIT, и что с ним сие было бы
   гораздо круче. Но где ещё тот DI_MEMOEDIT, а пока что обкатаем технологию).

svs 03.03.2009 20:36:33 +0300 - build 808

1. Mantis#0000767: Результат функции Menu.Select() вызванной из неверного контекста

drkns 03.03.2009 00:18:19 +0200 - build 807

1. Не работал поиск в панели плагина.
   Похоже, забыли сделать InitInFileSearch() для случая PluginMode.

2. Имела место утечка памяти в поиске при (•) Selected folders.
   Похоже, InitInFileSearch() делали не там где надо.
   
drkns 02.03.2009 19:32:52 +0200 - build 806

1. Однако, не всё прибил в 805.

drkns 02.03.2009 18:48:53 +0200 - build 805

1. При перетаскивании файла в консоль (или при вставке текста через меню окна)
   нелатинские символы превращались в киргуду.

2. Прибита опция "Middle button equals Enter in panels" в "Interface settings".
   Ибо макросы.

svs 02.03.2009 19:38:51 +0300 - build 804

1. Mantis#0000165: Макросы на кнопки мыши
    Здесь в теле макрокоманды доступны константы (обновляются):
    MsX, MsY - координаты мыши
    MsButton - состояние клавиш, описано в хелпе для MOUSE_EVENT_RECORD
    MsCtrlState - состояние клавиш, описано в хелпе для MOUSE_EVENT_RECORD

    Назначать макрос можно на [Alt|Ctrl|Shift]Ms[L|R|M[1|2|3]]Click - выбираются в диалоге назначения макроклавиши.

    Например :crazy:
    Shell\MsLClick="$if (MsY < Far.Height-1) F1 $Else $Akey $End"
    Если кликнули в строке кейбара - отработает то, что на лейбах написано. Если выше - повится подсказка. 

    Здесь етсь ахтунги:
    1. Для мышиной клавиши, которая встречается в теле макроса (Ms[LRM[123]]Click), вернем значение 
       события MOUSE_EVENT, соответствующее _последнему_ событию мыши.
       (lastMOUSE_EVENT_RECORD - всегда заполняется при поступлении событий мыши)
    2. Если в макропоследовательности предыдущая клавиша мышиная - сбросим состояние панели Drag,
       иначе в панелях получаем незапланированный Drag.

2. В диалоге назначения макроклавиш "становится тесно", поэтому для визуальной ориентации в списке 
   разделим наборы сепараторами.
   + вместо [модификаторы]MsWheelXXX строки для комбобокса формируются с помощью KeyToText

3. Введена функция KeyMacro::SetMacroConst(), позволяющая оперативно изменять "макроконстанты".

4. KEY_MS??CLICK клавиши фиктивные, ФАР и плагины в чистом виде (кроме макродвижка) их не "видят"

drkns 02.03.2009 01:30:00 +0200 - build 803

1. Зависал поиск по всем кодовым страницам.

2. Избранные кодовые страницы теперь хранятся не в CodeTables\Selected, а в CodePages\Favorites.

3. Ещё немного косметики на предмет chartable -> codepage в коде.

drkns 01.03.2009 21:15:30 +0200 - build 802

1. В findfile.cpp "магические числа" заменены именованными константами.

2. Коррекция hlf/lng на предмет "character table" -> "code page".

3. Ещё одно уточнение в рисовалке меню.

t-rex 01.03.2009 12:36:10 +0200 - build 801

1. Mantis#760: Новая реализация поиска по содержимому файлов, а так же любимых таблиц символов.
   From DiRTy_GaRRy.

   # Поиск по содержимому файлов (ALT+F7):

       * Поиск по стандартным и любым системным кодировкам;
       * Поиск по всем кодировкам. Сейчас понятие "все таблицы символов" сильно расширилось, так как FAR теперь работает
         с системными кодировками, а их много. Пока в случае поиска по всем таблицам символов сделан поиск по UTF-16, OEM
         и ANSI, но это не правильно. Так что, предложения по данному пункту принимаются.
       * Таблица символов поиска теперь сохраняется, только, если не выбран пунет все "Все таблицы символов".

   # Списки таблиц символов:

       * Выбор таблиц символов теперь выглядит везде (создание/сохранение файла, выбор таблицы символов в редакторе/просмотрщике, поиск файлов) одинаково.
       * Не доступные на данный момент в редакторе/просмотрщике таблицы символов показываются выключеными;
       * Заполненеие списков таблиц символов перенесено в единое место;
       * Сделал любимые таблицы символов, как я предлагал изначально (Mantis#660);
       * Убрана настройка CPMenuMode.

   # Разное:

       * Немного улучшена рисовалка меню:

2. Пару исправлений связанных с языковыми файлами.

3. gcc варнинги в UCD.

t-rex 26.02.2009 23:21:41 +0200

1. German translation (lng file) from Thomas Wolf.

2. Перевёл MEditOpenCreateLabel на Чешский и Немецкий :)
   !!! Заметка на будущее, при добавлении новых языковых строк помечайте те строки которые
   вы не знаете как перевести соловом upd: вот таким образом, чтоб было легко найти:
   upd:"Строка"
   lng.generator знает о такой пометке и выводит напоминания на экран !!!

drkns 26.02.2009 08:47:51 +0200 - build 800

1. В процессе копирования/переноса в ".." производилась попытка этот самый ".." создать.
   Причём на FAT это даже получалось.

svs 26.02.2009 00:14:42 +0300 - build 799

1. Уточнение для "~". Добавлена обработка символов "после тильды".

2. В диалоге открытия файла на редактирование (Shift-F4) в явном виде указывались подписи,
   был указан совершенно левый топик помощи.
   Czech-вариант для MEditOpenCreateLabel оставлен по английски - не владах с этой мовой ;-)

3. Немного хелпа про редактор (опять добавка русских буковок в английское писание ;-)):
   а) новый раздел @FileOpenCreate - для диалога Shift-F4
   б) в разделе @FileSaveAs - писание про кодовую страницу и BOM.

   Текстовку возможно придется уточнять. Если у кого есть предложения - Wелкам!

4. Непонятки!
   а) Кстати, термин "REVERSEBOM" - это так и должно быть или есть осмысленное название?
   б) В fileedit.cpp есть строка:
       Message(MSG_WARNING, 1, L"WARNING!", L"Editor will be reopened with new file!", MSG(MOk));
      так и должно быть или все же ОНО должно "говорить" на языке выбранного интерфейса?

drkns 25.02.2009 20:47:41 +0200 - build 798

1. Mantis#0000759: При попытке поиска (Alt-F7) на сетевом ресурсе вида \\host\c$ получаем AV exception

2. Mantis#0000761: Не совсем корректная работа с папками оканчивающимися на "."

ts 25.02.2009 15:26:18 +0200 - build  797

1. FarCharTableA: кроме "любимых", всегда первыми возвращаем OEM и ANSI таблицы. Коррекция поведения при ошибке.

zg 24.02.2009 22:17:53 +0200 - build 796

1. пара опечаток в FileList::FileListToPluginItem2.

drkns 24.02.2009 21:32:15 +0200 - build 795

1. Mantis#0000753: "Skip all" для ошибок удаления исходных файлов при перемещении

2. Mantis#0000757: x64 Far. после поиска по Alt-F7 при попытке просмотра файла (F3) валится с AV exception.

drkns 24.02.2009 19:19:50 +0200 - build 794

1. Иногда пропадал второй символ первой строки при просмотре файла в utf8.

2. В farlang.templ.m4 были униховские переводы строк.

3. Раз уж у нас lng теперь в этом вашем utf8, пусть и hlf будут в нём же.

t-rex 24.02.2009 13:53:17 +0200

1. Czech translation (lng file) from Radek Kubicek.

svs 24.02.2009 14:50:45 +0300 - build 793

1. Mantis#0000754: F1 не работает в плагинах 

warp 24.02.2009 14:40:00 +0300 - build 792

1. Отключим автоматическое определение кодировки для .hlf/.lng (то, которое испольует таблицы, определение
   по BOM остается). Это забавно, но если детектор промахивается - читать полученное невозможно, исправить тоже.

svs 24.02.2009 11:49:33 +0300 - build 791

1. Macro: N=atoi(S[,radix])
   radix=0 ==> autodetect

yjh 24.02.2009 08:56:09 +0300 - build 790

1. Предупреждения кастингов в 64-бит

zg 23.02.2009 23:08:36 +0200 - build 789

1. FCTL_FREEPANELITEM больше нет. FCTL_GET[SELECTED|CURRENT]PANELITEM возвращают необходимый размер буфера.
   все плагины, использовавшие FCTL_* - сломались.

drkns 23.02.2009 19:43:31 +0200 - build 788

1. И ещё раз продолжение 785.

drkns 23.02.2009 07:11:48 +0200 - build 787

1. Опечатка в 785.

drkns 22.02.2009 23:25:01 +0200 - build 786

1. Не работали CtrlP/CtrlM для вертикальных блоков, ибо IsClipboardFormatAvailable
   по определению ничего не знает о внутреннем фаровском буфере обмена.

2. Не собирался отладочный вариант.

drkns 22.02.2009 12:52:54 +0200 - build 785

1. Мелкие глюки при сохранении файла в редакторе и c определением кодировки во вьювере.

2. Используем IsSlash() вместо '\\' везде, где надо.

3. Обновил проект.

t-rex 22.02.2009 12:12:26 +0200 - build 784

1. Добавил в nsUniversalDetectorEx.h конвертацию имён в nCodePage для всех поддерживаемых фаром таблиц которые может вернуть мозиловский детектор.

2. Удалил prmem.c из корня ибо он есть и в UCD. Надо проект обновить.

drkns 22.02.2009 11:39:41 +0200 - build 783

1. Криво работала вставка вертикальных блоков из буфера обмена.

drkns 22.02.2009 02:41:43 +0200 - build 782

1. Дополним vc-проект и починим мейки.

warp 22.02.2009 02:11:00 +0300 - build 781

1. Бонус-тайм. Если повезет может определяться все, что умеет определять автодетектор кодировок от 
   Mozilla. Побочные эффекты в наличии. 

   До починки make-ов собрать можно будет только проектом!

2. Ну и диалог сохранения файла поправим в размерах.

drkns 21.02.2009 22:13:13 +0200 - build 780

1. UTF8 может определяться и без наличия сигнатуры (если повезёт :)

2. В диалог сохранения добавлена опция, определяющая, надо ли писать в файл сигнатуру.

3. Mantis#0000706: opening very short file gives messed up encoding
   Ужесточён алгоритм определения UTF16 LE/BE. Пусть уж лучше будет ложный ascii, чем ложный уникод.

drkns 21.02.2009 14:56:50 +0200 - build 779

1. Автоопределение кодовой страницы во вьювере, аналогичное редакторному.

2. В PrepareDiskPath криво обрабатывались отностительные пути вида c: или d:dir

3. параметр Layout\PassiveFolder удалён, т.к. есть Panel\<Left|Right>\<Folder|Focus>

svs 19.02.2009 21:28:08 +0300 - build 778

1. Mantis#0000710, приведем к униходу.

2. в хелпе неудачно "пошутил" на счет "если плагин НЕ имеет файла-помощи"

svs 19.02.2009 20:58:19 +0300 - build 777

1. Mantis#0000710: При выборе диска буквами - всегда выбирается дисковод A: (в telnet)
   Отличие от оригинальное патча от Maximus: код немного причесал, вместо "5" поставил countof(Layout)

2. Mantis#0000748: Undo/вставка не работают 
   В 1.7 функцию IsClipboardFormatAvailable() применил, а в 2.0 думал про нее, но как то... видимо кто-то отвлек, ну и...

3. варнинги в VC от пред.патчей.

drkns 19.02.2009 17:39:21 +0200 - build 776

1. "Немного" :) перестарался с UnicodeString в предыдущем билде.

drkns 19.02.2009 15:32:33 +0200 - build 775

1. Mantis#0000739: cannot search for 0x00 hex value
   UnicodeString был не особо приспособлен для хранения двоичных строк.

2. Как оказалось, ещё не работал hex-поиск для всех символов выше 0x7f.

3. Косметика в ChangeDiskMenu.

svs 19.02.2009 11:49:46 +0300 - build 774

1. Mantis#0000740: Некорректная вставка вертикального блока
   FAR 2.0 теперь работает с новым форматом - "FAR_VerticalBlock_Unicode", старый
   поддерживается только для "чтения".
   (в 1.75 будет добавлена поддержка "FAR_VerticalBlock_Unicode" на уровне "readonly")

2. CopyToClipboard() допускает параметр, равный NULL = "очистить буфер обмена"

3. InternalCopyToClipboard() сама не чистит буфер (EmptyClipboard), это делает CopyToClipboard().
   В этом случае используя InternalCopyToClipboard() можно добавлять данные в других форматах в буфер.

4. Mantis#0000744: Двойное вырезание
   Пришлось в некоторых функциях редактора вместо xwcsncpy/StrLength/etc применить "размеры-переменные".
   Так же:
   1) Edit::SetString - +доп.параметр, размер. по умолчанию равен -1
   2) В EditorUndoData добавлен член Length - для корректной работы отката "после вырезания" :-)
      соответственно Edit::AddUndoData() так же получил доп.параметр.

   Здесь еще копать и копать, но... вроде ничего сейчас не поломалось ;-)

drkns 18.02.2009 20:16:30 +0200 - build 773

1. Mantis#0000741: Ошибка в panel.cpp "if(GetMode()==FILE_PANEL)".

2. Mantis#0000742: Иногда последний сегмент пути в пассивной панели установляется заглавными буквами.

drkns 15.02.2009 22:26:31 +0200 - build 772

1. gcc.

drkns 15.02.2009 19:21:51 +0200 - build 771

1. При копировании (не системном) выделяем место заранее (если хватает).
   Не знаю, сильно ли это ускорит процесс, но фрагментация точно будет меньше.

2. В запускателе используем флаг SEE_MASK_NOZONECHECKS, дабы ОС не спрашивала
   разрешения для запуска файлов, полученных по сети.

3. Криво работали ассоциации, начинающиеся с символа '@'.

4. Ещё всякие косметические мелочи.

drkns 12.02.2009 21:29:15 +0200

1. Mantis#0000712: Неверная строка билда в заголовке справки.
   Заодно убраны некоторые другие отличия vc-проекта от мейкфайла.

drkns 12.02.2009 00:40:52 +0200 - build 770

1. В RemoveToRecycleBin забыли про "\0\0".
   Там же: уточнения в переводе кодов возврата SHFileOperation в winerror-коды.
   Там же: в NT6 и выше игнорируем опцию "Удалять символические ссылки", т.к. эти ОС корректно удаляют их при очистке корзины.

svs 11.02.2009 16:35:57 +0300 - build 769

1. Mantis#0000715: Добавим вызов диалога конфигурации в меню плагинов
   (from samlyukov)
   ...с небольшими моими уточнениями:
     0) никаких биперов и месагов - нет конфиг-диалоге - ничего не делаем.
     1) Alt-Shift-F9 в меню выбора дисков действует независимо от того, стоит ли 
        курсор в области внешних моделей или "на дисках"
     2) соответственно обновлены файлы помощи.

     В файле FarEng.hlf.m4 есть русские букофки - поправил бы кто (mantis#702)

2. Mantis#0000711: Ошибка при замене 
   Уточнение с выделениями - при замене ставим выделение соответствующего размера.

svs 08.02.2009 18:19:49 +0300 - build 768

1. Mantis#0000547: Выделение найденных фрагментов при поиске
   Корректировка - после выделения найденного нужно перемещать курсор 
                   только если не замена, иначе дальше по тексту "Text(TmpStr);" 
                   убивает все, что дальше.

2. Mantis#0000711: Ошибка при замене
   Собственно - следствие Mantis#0000547.
   + к этому: выделяем корректно, с локами, и перед очередным выделением снимаем пометку блока.

svs 08.02.2009 17:33:52 +0300 - build 767

1. Mantis#0000716: Один из режимов работает неправильно
   (from DiRTy_GaRRy)

drkns 08.02.2009 11:03:16 +0200 - build 766

1. Реализация DM_LISTGETTITLES.

2. Во врапере не были описаны DM_<G|S>ETEDITPOSITION, DM_<G|S>ETCOMBOBOXEVENT.

drkns 07.02.2009 23:34:36 +0200 - build 765

1. Начинаем учить фар работе с по настоящему длинными именами (это где "\\?\" и "примерно 32000").

2. Корректная работа с файлами/папками, оканчивающимися пробелами.

3. Криво работала FCTL_GETCMDLINE для oem-плагинов.

drkns 06.02.2009 00:40:14 +0200 - build 764

1. В меню с полосой прокрутки неправильно вычислялась правая граница срабатывания мыши.

2. Длинные строки в меню можно прокручивать мышью.

3. Из GetString убран параметр DestLength.

drkns 05.02.2009 19:24:36 +0200 - build 763

1. В справке не работали ссылки вида ~Text~@<Path>@.

drkns 04.02.2009 19:18:48 +0200 - build 762

1. Mantis#0000725: Не всплывает окно поиска при нажатии русских букв

2. Mantis#0000727: heap corruption in CopyToClipboard

drkns 03.02.2009 18:38:38 +0200 - build 761

1. Одно чиним, другое ломаем :) - снова неперерисовка пассивной панели.

drkns 01.02.2009 19:58:28 +0200 - build 760

1. Еще немного на тему отрисовки пассивной панели при закрытии активной полноэкранной.

drkns 31.01.2009 19:40:10 +0200 - build 759

1. OEM-плагины в ProcessEditorInput получали KEY_EVENT_RECORD в "сыром" виде.
   Как результат, вместо русских символов им приходила киргуда.

2. В некоторых случаях не восстанавливались длинные имена, утерянные после выполнения внешних команд.

drkns 30.01.2009 19:39:47 +0200 - build 758

1. Mantis#0000719: Ошибка копирования русского текста в clipboard.

drkns 29.01.2009 21:20:22 +0200 - build 757

1. Не во всех случаях обвобождалась память, выделенная в FileListToPluginItem.

2. Не освобождалась память, выделенная под InfoPanelLine во врапере.

warp 28.01.2009 11:30:00 +0300 - build 756

1. Ну раз уж пошло - добавим еще и FCTL_GETCURRENTITEM, дабы FCTL_GETPANELINFO не дергать ради этого.

yjh 28.01.2009 04:05:24 +0300 - build 755

1. 64хбитовые предупреждения к 753

drkns 27.01.2009 17:47:55 +0200 - build 754

1. Вдогонку к 753: FCTL_GETCMDLINE[SELECTEDTEXT] возвращет требуемый размер буфера с учётом 0.

drkns 27.01.2009 16:09:51 +0200 - build 753

1. Очередной перетрях API.
   FCTL_GETPANELSHORTINFO больше нет. Её функцию выполняет FCTL_GETPANELINFO.
   Из структуры PanelInfo убраны поля PanelItems, SelectedItems, lpwszColumnTypes, lpwszColumnWidths, lpwszCurDir.
   Для получения их значений теперь есть отдельные FCTL-команды: FCTL_GETPANELITEM, FCTL_GETSELECTEDPANELITEM,
   FCTL_GETCOLUMNTYPES, FCTL_GETCOLUMNWIDTHS, FCTL_GETCURRENTDIRECTORY.
   
   FCTL_FREEPANELINFO тоже больше нет. Фар выделяет только память для полей FCTL_GET[SELECTED]PANELITEM, для их
   освобождения плагин должен использовать команду FCTL_FREEPANELITEM.
   
   Память для FCTL_GETCOLUMNTYPES, FCTL_GETCOLUMNWIDTHS, FCTL_GETCURRENTDIRECTORY выделяет плагин,
   необходимый размер буфера пожно получить, передав NULL в качестве параметра.

   FCTL_GET[SELECTED]PANELITEM, FCTL_FREEPANELITEM, FCTL_SETSELECTION работают с ОДНИМ элементом.

   Info.Control теперь выглядит как Info.Control(HANDLE hPlugin,int Command,int Param1,LONG_PTR Param2).
   Часть бывших Param переехала в Param1, часть в Param2, будьте бдительны.

   Все плагины, так или иначе использовавшие Control, надо переделать!!!

2. From Tim Sobolev: реализация FarCharTableA.

drkns 25.01.2009 19:37:00 +0200 - build 752

1. При закрытии полноэкранной плагиновой панели не обновлялась пассивная панель.

2. Не обновлялась панель после FCTL_CLOSEPLUGIN.

drkns 24.01.2009 22:01:13 +0200 - build 751

1. Криво отображался символ пометки в панелях.

drkns 24.01.2009 15:39:50 +0200 - build 750

1. В копире вылезли очередные баги.

2. В меню выбора кодовой сраницы (ShiftF8) не обрабатывался Ins на цифровой клавиатуре.

svs 23.01.2009 19:26:56 +0300 - build 749

1. Macro: Editor.Sel()
   - new -> Editor.Sel(0,4) - вернет тип блока (0 - нету, 1 - stream, 2 - column)
   - исправлены прыжки (в т.ч с column, которые по сути не пахали)
   - некорректно работали установки... без учета табов
   - некорректно работали инфо-функции - без учета табов
   - new -> Editor.Sel(4) - Unmark selected block, вернет всегда 1
   - если ширина блока = 0 (от сюда == до сюда), то это равносильно Editor.Sel(4)

   Фича есть одна с применением Editor.Sel():
     1. Editor.Sel(2, 0) - помечаем начало stream блока
     2. что-то делали, и даже блоки выделяли...
     3. Editor.Sel(2, 1) - помечаем конец - предыдущие выделения снимаются и помечается новый 
        блок от (1) до "сюда"

2. Macro: парсер - символ ';' сразу после закрывающейся скобки функции игнорируется

3. Попутно в АПИ для ECTL_SELECT была несуразица:
   - отметка блока исчезает всегда, сейчас, если что-то не так с параметрами, блок остается на месте
   - отметка блока исчезает всегда, даже если такой строки не находили (BlockStartLine)
   - если BlockHeight был больше чем текста (например, пытаемся выделить блок, указывая последнюю строку, 
     а BlockHeight=, например, 10), то EditorControl возвращал FALSE, хотя блок успешно выделялся.
   - Читаем "BlockWidth - Ширина блока. Может быть отрицательной величиной." - но получалось, 
     что при BTYPE_COLUMN и BlockWidth=-1 "транзакция" пометки блока неполная, что может приводить к 
     непоняткам с блоками.

   Что-то не могу припомнить для чего нужна была проверка "if(BlockWidth==-1)", в любом случае получалась 
   не полная транзакция.

4. Поддержка MCODE_F_EDITOR_SEL во всем, что движется... (редактируется)

5. Добавлено (для единообразия) Ctrl-U (снять выделение с блока) в ком.строке (работает при погашенных обоих панелях).


drkns 22.01.2009 15:03:21 +0200 - build 748

1. В FormatMessage не передавался флаг FORMAT_MESSAGE_IGNORE_INSERTS.
   Как следствие, функция обламывалась на строках с %1, %2 и т.п. (например, в сообщениях об "ошибке запуска").
   Сейчас эти %x никак дополнительно не обрабатываются, что, конечно, не фонтан, но всяко лучше, чем совсем ничего.

drkns 22.01.2009 12:47:21 +0200 - build 747

1. Mantis#0000709:Ansi и Unicode версии в одной dll?
   Заодно починил оптимизацию проверки экспортов по crc32.

svs 22.01.2009 12:16:13 +0300 - build 746

1. Macro: Editor.Sel([1|0],[0|1]) работают некорректно: 
   - не учетены табы, 
   - при "прыжке" в конец блока позиция ставится на слудующую строку.


t-rex 22.01.2009 08:51:22 +0200 - build 745

1. From Alexey Pakhunov: Mantis#708: Чтение за пределы буфера в FilePositionCache::Save 
   
2. Заодно сделал там пару вещей "покрасивей".

drkns 21.01.2009 00:19:40 +0200 - build 744

1. Если развернутый комбобокс или история ввода не влезает целиком на экран,
   и при этом над ним места больше, чем под ним - откроем его "вверх".

2. При изменении размеров консоли комбобоксы и истории рисуются как положено, а не чёрт знает где.

3. Не уродуются диалоги, не влезающие в консоль.

drkns 19.01.2009 20:44:36 +0200 - build 743

1. В перемещении диалога кнопками End/PgDn был баг, но проявился он только после предыдущего билда.

2. Mantis#0000704: глюки при передаче управления в плагин
   Mantis#0000705: Проблемы с farcmds.dll

drkns 19.01.2009 16:59:41 +0200 - build 742

1. Нежно, плавно и осторожно попробуем разрешить таскать диалоги за пределы экрана.
   Вроде бы всё работает, но мало ли, могло где-то аукнуться.
   Просьба незамедлительно докладывать в штаб о любом неадекватном поведении.

drkns 17.01.2009 21:28:37 +0200 - build 741

1. Mantis#0000703: При попытке переместить папку возникает ошибка "Access Denied".

drkns 17.01.2009 17:05:36 +0200 - build 740

1. Снова копирайт: по "Far /?" выводился мусор.

2. В copyright.inc вместо символов генерируются их hex-коды.

drkns 16.01.2009 22:02:38 +0200 - build 739

1. Если нет ни одного плагина, экспортирующего SetFindList[W],
   то и кнопку [ Panel ] в диалоге результов поиска показывать не будем.

2. Косметика: замена sizeof/sizeof на countof везде, где ещё оставалось.

svs 16.01.2009 19:07:22 +0300 - build 738

1. Уточнение для Editor.Sel
   Начало и конец блока может быть в любом месте (например, начало - ниже, конец - выше).
   Блок всегда выделиться правильно.


svs 16.01.2009 16:35:23 +0300 - build 737

0. с предущим патчем напортачил - не вовремя удалил буфер.

1. Macro: функция waitkey имеет второй необязательный параметр - тип возвращаемого значения: 
   0 - вернуть строковое название клавиши, 1 - числовое название клавиши

     V=waitkey([N,[T]])

2. Macro: добавлена функция Editor.Sel

    V=Editor.Sel(Action[,Opt])

   позволяет манипулировать выделениями в тексте

      Action: 0 = Get Pos
                  Opt:  0 = return FirstLine
                        1 = return FirstPos
                        2 = return LastLine
                        3 = return LastPos
                  return: 0 = failure, 1... request value

              1 = Set Pos
                  Opt:  0 = begin block (FirstLine & FirstPos)
                        1 = end block (LastLine & LastPos)
                  return: 0 = failure, 1 = success

              2 = Set Stream Selection Edge
                  Opt:  0 = selection start
                        1 = selection finish
                  return: 0 = failure, 1 = success

              3 = Set Column Selection Edge
                  Opt:  0 = selection start
                        1 = selection finish
                  return: 0 = failure, 1 = success

   Например, повторим некоторые сочетания клавиш из Turbo-сред (повесим макрос на сочетание Ctrl-K):

   %k=waitkey(0,1); 
   $if(%k==B || %k==b || %k==CtrlB) 
     editor.sel(2,0) 
   $else 
     $if(%k==K || %k==k || %k==CtrlK)
       editor.sel(2,1) 
     $else
       $if((%k==C || %k==c || %k==CtrlC) && Selected)
         CtrlC
       $else
         $if((%k==Y || %k==y || %k==CtrlY) && Selected)
           CtrlD
         $else
           eval("F1")
         $end
       $end
     $end
   $end


3. Уточнение в WaitKey() - "пропускаем только любые настоящие клавиши" (код < KEY_END_FKEY)

4. добавлена функция "s=key(v)" - преобразует значение v в строковый эквивалент названия клавиши.
   если v строка, то проверяется правильность написания клавиши и она же возвращается
   если v число, то происходит попытка преобразовать в текст
   в случае ошибок - возвращается пустая строка.

5. Macro: теперь именованные клавиши могут участвовать в любых вычислениях.
   Например, 
     %k=waitkey(0,1); $if(%k == CtrlB)...
   или
     %k=CtrlK; ..... %k=%k+Alt; eval(key(%k))



svs 16.01.2009 13:55:26 +0300 - build 736

1. Ситуация была - в copyright.inc количество символов превышало 256, заявленных для Str в ControlObject::ShowCopyright().
   Естественно ФАР успешно компилился, но не запускался, молча трапался.
   Можно было бы применить xstrncpy, но вдруг в copyright.inc.m4 что-то еще допишется, 
   так что пусть строка выделяется динамически.

drkns 15.01.2009 07:02:47 +0200 - build 735

1. Пара мелочей.

drkns 15.01.2009 00:44:47 +0200 - build 734

1. В диалоге установки атрибутов для файла, имеющего несколько жёстких ссылок,
   вместо одного имени отображается список всех его имён.
   Работает в Vista и выше.

t-rex 14.01.2009 22:00:55 +0200 - build 733

1. Добавляем битность сборки в инфу о версии.

2. Убрал за не надобностью BUILDTESTONLY и BUILDTYPENUM.

drkns 12.01.2009 17:38:59 +0200 - build 732

1. Кто-то снова сломал Mantis#0000605.
   Скобки вокруг VMenu ChDisk() в panel.cpp и вокруг других аналогичных мест - НАДО!!!
   От них там польза, они дырку на обоях загора... бррр, они область видимости ограничивают,
   чтобы эти меню вовремя удалялись и не маячили на экране.

2. Уберём из локальных настроек редактора/вьювера чекбоксы выбора умолчальной кодировки.

svs 12.01.2009 15:13:56 +0300 - build 731

1. Не работает в FAR 2.0 alpha 1 (build 729) опция автоматически монтировать CDROM.

yjh 12.01.2009 03:44:27 +0300 - build 730

1. Добавим опцию в makefile_vc для возможности генерации release с 
   включенным кодом для теста exception (отладки excdump :).

t-rex 11.01.2009 23:00:45 +0200 - build 729

1. Продолжение Mantis#697, GetShellType должен вернуть false если найденый тип это пустая строка.

t-rex 11.01.2009 21:56:05 +0200 - build 728

1. Mantis#693 и Mantis#697 - проблемы в запускаторе виндовых типов из за неправильной работы с реестром.

drkns 11.01.2009 19:52:42 +0200 - build 727

1. Баги в url-запускателе + в висте запускалось не то, что надо.

drkns 11.01.2009 16:08:39 +0200 - build 726

1. Вроде бы заработало автозавершение в строках ввода диалогов.

drkns 11.01.2009 09:12:18 +0200 - build 725

1. From Maximus5: Cannot update file descriptions.

drkns 10.01.2009 18:32:35 +0200 - build 724

1. И снова продолжение 720.

drkns 10.01.2009 16:40:25 +0200 - build 723

1. В меню ассоциаций не отображалась колонка с описаниями.

drkns 10.01.2009 16:16:50 +0200 - build 722

1. Продолжение 720.

drkns 10.01.2009 14:53:38 +0200 - build 721

1. При выводе сообщения об ошибке загрузки плагина брался "плагиновый" экземпляр Language вместо "фаровского".

drkns 10.01.2009 12:53:27 +0200 - build 720

1. Во враппере криво освобождался FarList;

2. Xlat в редакторе;

3. Edit::GetStringAddrW -> Edit::GetStringAddr.

drkns 08.01.2009 09:47:23 +0200

1. Секция <dependency> в манифесте.

drkns 06.01.2009 11:34:50 +0200 - build 719

1. Не работали макроконстанты.

t-rex 05.01.2009 18:05:34 +0200 - 718

1. Символы "=;," тоже требуют две пары кавычек при запуске через cmd.

drkns 04.01.2009 15:37:36 +0200

1. Мелочи в vc-проекте и мейках.

zg 04.01.2009 15:17:03 +0200 - build 717

1. mantis#695.

t-rex 04.01.2009 00:32:09 +0200 - build 716

1. Первые шаги поддержки UTF во вьювере, с горем пополам но как то пашет.

drkns 03.01.2009 16:18:04 +0200 - build 715

1. Поддержка клавиши PrintScreen :) + в панелях некорректно обрабатывались AltEnter и AltTab.

2. Отключено создание PCH для *.с, ибо этих *.с осталось "один штука".

drkns 02.01.2009 10:30:25 +0200 - build 714

1. Xlat.Table и Xlat.Rules теперь string и в реестре хранятся как REG_SZ.

2. Исправил пару BUGBUG в копире.

3. Из iswind.cpp удалены остатки былой роскоши - FindFarWndByTitle, IsWindowedEnumProc, IsWindowedEnumProc2.

4. Пара вещей из Mantis#657.

zg 02.01.2009 02:44:04 +0200 - build 713

1. CAS в диалоге назначения макроклавиши.

drkns 29.12.2008 18:38:33 +0200 - build 712

1. Продолжение Mantis#0000674.

2. Откатим 709 - не всё так просто.

t-rex 29.12.2008 12:45:32 +0200 - build 711

1. FarCharTableA эмулирует как можно ближе к 1.7x.

2. Xlat и XlatA "работают". Я не знаю что и как они должны делать, кто умеет этим делом пользоватся потестируйте.

t-rex 28.12.2008 22:46:27 +0200 - build 710

1. Mantis#689: Crash in the viewer.

drkns 29.12.2008 22:33:47 +0200 - build 709

1. Если запрашивалось ACTL_GETSHORTWINDOWINFO для текущего окна, и это окно - vmenu, то текущим считалось предыдущее окно.

t-rex 28.12.2008 20:21:07 +0200 - build 708

1. Теперь все функции API доступны и работают (кроме Xlat который пока в виде заглушки).

drkns 28.12.2008 17:56:33 +0200 - build 707

1. Mantis#0000688: View Command Log does not show first characters

t-rex 28.12.2008 17:33:01 +0200 - build 706

1. StandardFunctions.ConvertNameToReal заработал.

2. Фильтры не работали при move на одном и том же диске (тестовый фикс).

3. Продолжаем колбасить всё подряд.

drkns 28.12.2008 11:09:34 +0200

1. Из проекта убраны удалённые в 703 файлы.

2. Косметика в far.rc.

t-rex 27.12.2008 23:59:35 +0200 - build 705

1. Убрал все эти UnicodeToAnsi и т.п., теперь они есть только во враппере где им и место.

2. Баг в ProcessNameA.

3. macro.cpp::dlggetvalueFunc(), обработка 10 параметра. Надо посмотреть ещё раз, вроде для Edit надо подругому.

4. Lnaguage - теперь не держит Unicode и OEM строки паралельно, а только те которые надо.

5. Ещё пару мелочей по дороге.

t-rex 27.12.2008 18:30:29 +0200 - build 704

1. Продолжаем колбасить.

t-rex 27.12.2008 16:37:31 +0200 - build 703

1. Продолжаем колбасить fn.hpp, а вдобавку и farconst.hpp struct.hpp global.hpp.

drkns 27.12.2008 13:44:08 +0200 - build 702

1. Забыл добавить сами *.hpp :)

drkns 27.12.2008 13:26:29 +0200 - build 701

1. Из fn.hpp некоторые тематические куски (winapi, registry, syslog) вынесены в отдельные hpp.

2. Удалены FAR_OemToChar[Buff] и FAR_CharToOem[Buff].

3. Последний параметр apiCreateFile - HANDLE hTemplateFile - сделан опциональным, ибо всё равно нигде ни разу не используется.

drkns 27.12.2008 01:08:58 +0200 - build 700

1. При определённых условиях криво работал запуск lnk-файлов.

2. + apiRegEnumKeyEx().

drkns 26.12.2008 20:47:04 +0200 - build 699

1. Из враппера искоренён флаг MB_USEGLYPHCHARS, теперь "непечатные" символы подменяются уникодными только на этапе отрисовки.

t-rex 26.12.2008 19:49:57 +0200 - build 698

1. Используем SHCreateAssociationRegistration, теперь не надо CoInitialize, так спокойней на душе.

2. AssociationRegistration работает теперь и в GCC.

svs 26.12.2008 19:19:43 +0300 - build 697

1. Mantis#0000685: Is Not removed window "to Search for" under "Searching for and change" in editor 

2. Избавляемся от варнинга в gettable.cpp

t-rex 26.12.2008 14:42:38 +0200 - build 696

1. Забыл удалить FMENU_TRUC* из plugin.hpp.

t-rex 26.12.2008 14:27:31 +0200 - build 695

1. Mantis#677: Некорректный горизонтальный скрол в меню.

2. Удалил VMENU_TRUNCMODE и с ним связанное, оно не используется.

3. Продолжение 693 и Mantis#679: option "use windows registered types" doesn't work.
   Забыл в qview это дело, сделал централизованным.

warp 26.12.2008 00:05:49 +0300 - build 694

1. Неправильная работа UnicodeToAnsiBin с пустыми строками, которая мешала работать во враппере Colorer 4.

t-rex 26.12.2008 00:02:06 +0200 - build 693

1. В Висте придумали новую заморочу с ассоциациями файлов, теперь и мы её умеем.
   В gcc пока что это закоменчено ибо надо ручками хидеры дописать.

zg 25.12.2008 21:11:58 +0200 - build 692

1. запрет на посылку DN_EDITCHANGE элементу диалога если этот элемент уже обрабатывает DN_EDITCHANGE.

2. Корректировка функции WaitKey(). Теперь функция реагирует только на "настоящие" клавиши 
   (ранее функция срабатывала, например, на потерю-получение фокуса окном ФАРа (KEY_KILLFOCUS/KEY_GOTFOCUS)

3. из SysLog удалены не используемые константы ECTL_EDITORTOOEM и ECTL_OEMTOEDITOR

t-rex 25.12.2008 20:18:15 +0200 - build 691

1. FARINT64 остался ещё в syntax.cpp::printKeyValue.

zg 25.12.2008 16:37:39 +0200 - build 690

1. исправлен потенциальный ub в обработчике DN_EDITCHANGE.

2. варнинги в vc9.

zg 25.12.2008 04:19:29 +0200 - build 689

1. теперь DN_EDITCHANGE приходит при любых изменениях в строке редактирования
   за исключеним изменений, производимых в обработчике DN_INITDIALOG.

svs 24.12.2008 13:40:38 +0300 - build 688

1. Mantis#0000680: $SelWord sets Selected flag on, even though no selection was made

zg 23.12.2008 04:27:09 +0200 - build 687

1. в макросах в $Text \x теперь понимает до 4 16-ричных цифр, что позволяет ввести любой unicode символ.

2. в FindFiles::GetPluginFile освобождалось не то что выделялось.

t-rex 22.12.2008 20:40:17 +0200 - build 686

В будущем для nightly будет автоматом показываться релевантный кусок changelog,
чтоб это работало пожалуйста всегда пишете "build XXX" - т.е. слово build пробел (только одни)
и номер где то в первой строке записи (ну в общем как мы и всегда делаем).
А также nightly обновляется только если сменился номер билда, имейте ввиду.

1. Разделил farversion.m4 на два файла для удобств nightly сборок.

2. Забытые переменные в hook_wow.

zg 22.12.2008 17:34:32 +0200 - build 685

1. исправлено падение при открытии файла из результатов поика на плагиновой панели,
   если имя файла или короткое имя файла были NULL.

zg 22.12.2008 00:27:46 +0200 - build 684

1. FreeFindData вызывался при старой позиции курсора. при определённых обстоятельствах far падал.

zg 21.12.2008 22:34:23 +0200 - build 683

1. убраны дубли GetHiColor и GetGroup использовавшиееся для работы на плагиновых панелях.
   как следствие фар не падает, если плагин передал ему NULL в качестве имени файла.
   так же для плагиновой панели GetHiColor вызывается один раз.

2. CmpName проверяет маску и имя файла на NULL.

3. в InfoPanelLine масивы заменены на указатели. плагины, использующие это надо пересобрать.

drkns 21.12.2008 22:01:17 +0200 - build 682

1. Читалка farmenu.ini понимает старые OEM-файлы от 1.7.
   Следует осознавать, что при редактировании такого меню оно сохранится уже в уникоде, и из 1.7 доступно не будет.

2. Надписи на F8 в редакторе/вьювере теперь не DOS/Win, а OEM/ANSI, для соответствия с Shift<F2|F4|F8>.

t-rex 21.12.2008 20:29:45 +0200 - build 681

1. Не работали KeyBarLabels.

t-rex 21.12.2008 13:50:11 +0200 - build 680

1. hook_wow64: Выявили что если сделать PAGE_EXECUTE_READWRITE вместо PAGE_READWRITE
   для VirtualProtect то работает нормально и с DEP под Вистой.
   Не знаю на сколько это безопасно, ждём коментариев от Юры.

t-rex 21.12.2008 12:13:02 +0200 - build 679

1. hook_wow: В Vista SP1 или 2008 попытаемя вырубить DEP для процесса и если не можем то не будем патчить.
   Временое решение пока не разберёмся чего там DEP'у крышу сносит.

t-rex 21.12.2008 03:23:37 +0200 - build 678

1. Глюк с пометкой в меню кодировок во вьювере.

2. Не детектились юникод файлы с сигнатурой во вьювере. Надо будет сделать как в редакторе примерно.

t-rex 21.12.2008 02:09:48 +0200 - build 677

ВСЕ ЮНИКОДНЫЕ ПЛАГИНЫ ТРЕБУЕТСЯ ПЕРЕСОБРАТЬ (И ПОДПРАВИТЬ ГДЕ НАДО) - ДАЖЕ НЕ ПЫТАЙТЕСЬ ЗАПУСТИТЬ СО СТАРЫМИ!!!!!!!!!!

1. Выбор кодировок во вьювере по примеру редактора, начальная стадия.

2. GlobalSearchString - теперь юникодный и string.

3. Убрал кучу говна в виде CharTables из 1.7x и с этим связаное.

4. Убрал ECTL_EDITORTOOEM, ECTL_OEMTOEDITOR ибо в них нет смысла.

5. CodePage в EditorInfo, ViewerInfo и т.п.

6. CodePage в вызов Info.Viewer и Info.Editor - пока что нечего не делает, но потом будет.
   Пока что туда надо ставить CP_AUTODETECT чтоб в будущем работало нормально.

7. Начинаем учить FindFile о CodePage. Пока что поиск в WIN кодировке не работает!

8. Заготовки для XLat.

9. Убрал FARINT64 за ненадобностью.

10. CalcWordFromString теперь работает.

drkns 20.12.2008 23:18:27 +0200 - build 676

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

t-rex 20.12.2008 18:58:50 +0200 - build 675

1. Ещё Mantis#657, поменял alloca на xf_malloc.

2. Убрал немного мусора по дороге.

t-rex 20.12.2008 15:46:47 +0200 - build 674

1. hook_wow64: Небыло настоящей проверки если мы работаем под WOW64,
   что в Vista/2008 приводило к попыткам хука заработать на x86 платформе
   и соот. падать при определённых ситуациях.

t-rex 20.12.2008 12:41:46 +0200 - build 673

1. Mantis#450: Bug in History::Select().
   Меню истории показывало на один пункт меньше чем надо.

t-rex 19.12.2008 21:22:09 +0200 - build 672

1. "Почистил" немного history.cpp. Частично Mantis#657.

2. FarGetPluginDirListA

3. From Denis Kosy: Неправильная работа с реестром в qview.

drkns 19.12.2008 20:10:53 +0200 - build 671

1. Mantis#0000674: Some errors: Missing L, incorrect types

t-rex 19.12.2008 18:25:23 +0200 - build 670

1. Mantis#675: Crash while showing the command history.
   Проблема с длинными пунктами меню.

t-rex 19.12.2008 13:39:31 +0200 - build 669

1. Mantis#673: Crash in Viewer::SelectText().
   Проблемы с InfoPanel.

t-rex 19.12.2008 09:36:40 +0200 - build 668

1. Mantis#668: Far ожидает закрытия запущенного приложения.

drkns 19.12.2008 09:21:34 +0200 - build 667

1. Mantis#0000672: Invalid values in the Information panel

t-rex 19.12.2008 01:41:01 +0200 - build 666 :) мой

1. Ноль ворнингов (GCC 4.3.2 и VC9).

t-rex 19.12.2008 00:52:30 +0200 - build 665

1. From Igor O. Bochkariov: Mantis#670: Округление размеров дисков и файлов.

2. FarGetDirListA и FarFreeDirListA.

3. Утечка памяти в FarGetDirList.

svs 18.12.2008 23:43:54 +0300 - build 664

1. Mantis#0000659: негативное число в "remaining time" в подсчёте total 
   Как то не все хорошо в копире по поводу фильтров. Даже если файл не прошел 
   фильтр (ShellCopyOneFile вернет COPY_NEXT), переменная TotalCopiedSize все 
   равно увеличивается.
   Добавим новое состояние COPY_NOFILTER - не считать цифры, если ShellCopyOneFile вернул ЭТО

   Осталься непонятным один момент.

      if (CopyCode!=COPY_SUCCESS)
      {
        unsigned __int64 CurSize = SrcData.nFileSize;
        if (CopyCode != COPY_NOFILTER) //????
   >>     TotalCopiedSize = TotalCopiedSize - CurCopiedSize + CurSize;
        if (CopyCode == COPY_NEXT)
          TotalSkippedSize = TotalSkippedSize + CurSize - CurCopiedSize;

   нужно ли считать отмеченное всегда или все же нужно, когда кодвозврата COPY_NEXT.


drkns 18.12.2008 16:16:46 +0200 - build 663

1. [x] Use system copy routine
   [ ] Show uppercase file names in lowercase
   [x] Del removes blocks

drkns 18.12.2008 12:57:24 +0200 - build 662

1. Win2k узаконена в качестве "минимального системного требования" (уже давно им являясь на деле).

t-rex 18.12.2008 12:26:49 +0200 - build 661

1. Более коректная имплементация FCTL_GET*PANELSHORTINFO для враппера, из за различий в новом и старом API.

2. Mantis#669: getInt64() function.
   Каст на (char) вместо на (wchar_t).

t-rex 17.12.2008 22:17:58 +0200 - build 660

1. Mantis#667: уникодный фар криво выставляет заголовок панели для ансишного мульти-арка.
   В общем 2 бага во враппере:
   - Не было предохранения от рекурсии при вызове GET*PANELINFO из GetOpenPluginInfo.
   - Имплементация обработки GET*PANELSHORTINFO была неправильной.

drkns 17.12.2008 12:12:45 +0200 - build 659

1. Убраны "магические числа" в расчёте длины выводимой строки в qview и setattr.

t-rex 17.12.2008 11:47:17 +0200 - build 658

1. Mantis#664: Crash while using Quck View on Volume Mount Point.

2. Заодно сделал похожие места в коде красивей, без этого offset.

svs 16.12.2008 23:42:36 +0300 - build 657

1. Panel API: Флаг PFLAGS_PANELRIGHT удален, т.к. вместе с PFLAGS_PANELLEFT...
   ...получалось взаимоисключение.
   Для проверки "панели справа" использовать отсутствие флага PFLAGS_PANELLEFT.

drkns 16.12.2008 21:11:41 +0200 - build 656

1. FarGetDirList возвращал имена без относительных путей.
   Как следствие - Mantis#0000663: не работает опция Copy folder contents.

drkns 15.12.2008 21:17:28 +0200 - build 655

1. Mantis#0000660: Добавить возможность задания «любимых» таблиц перекодировки.
   Пока что только для ShiftF8 в редакторе.

svs 15.12.2008 15:30:25 +0300 - build 654

1. Ещё несколько вещей из Mantis#657, различные "мелочи". 
   (наверное нужно было бы для этой фразы поставить копирайт ;-))

t-rex 15.12.2008 10:57:07 +0200 - build 653

1. Ещё несколько вещей из Mantis#657, различные "мелочи".

t-rex 14.12.2008 23:19:19 +0200 - build 652

1. Пропустил ещё одно место где не проверялось значение возвращаемое GlobalLock в работе с клипбордом.

t-rex 14.12.2008 23:01:37 +0200 - build 651

Ещё несколько вещей из Mantis#657

1. Передавался sizeof вместо countof массива wchar_t в некоторых местах для WinAPI/CRT функций.

2. Не проверялось значение возвращаемое GlobalLock в работе с клипбордом.

3. Неправильна format строка для swprintf в DizList::GetDizTextAddr.

t-rex 14.12.2008 12:50:25 +0200 - build 650

Несколько вещей из Mantis#657

1. В ProcessName была полнейшая мутотень с проверками флагов, ибо там половина флаги а половина по приколу. 
   Тоже самое и во враппере.

2. Неправильное освобождение памяти после CreateProcess в паре мест.

3. Неправильная проверка на NULL в CheckFolder.

4. Panel::ChangeDiskMenu, слишком много переменных с одинаковым именем. Переименовал ту у которой scope шире.

5. В syslog юзался %S вместо %s для wprintf для юникодных строк.

6. Неправильные проверки BSTATE во враппере.

7. Несколько месте где sizeof не использовался как надо.

8. Несколько проверок на неудачный запуск функций.

9. RegQueryStringValue, неправильная проверка на REG_SZ.

t-rex 13.12.2008 20:09:18 +0200 - build 649

1. FileFilter API

   FileFilterControl(HANDLE hHandle, int Command, int Param1, LONG_PTR Param2)

   Command:

   FFCTL_CREATEFILEFILTER - hHandle - PANEL_ACTIVE или PANEL_PASSIVE
                            Param1 - один из FAR_FILE_FILTER_TYPE
                                     Созданный фильтр получит настройки той
                                     области которая задана в Param1.
                                     Настройки области глобальны и всегда идентичны
                                     в любом фильтре этой области (настройки правой
                                     и левой панели это две разные области).
                                     Авто фильтры (и настройки панельной области)
                                     зависят от hHandle.
                            Param2 - HANDLE* в который запишется HANDLE фильтра
                            
                            При неудаче вернёт FALSE и Param2=INVALID_HANDLE_VALUE.

   FFCTL_FREEFILEFILTER   - hHandle - HANDLE который вернул FFCTL_CREATEFILEFILTER

   FFCTL_OPENFILTERSMENU  - hHandle - HANDLE который вернул FFCTL_CREATEFILEFILTER
                            
                            Откроет меню фильтра для заданной области.
                            Если меню отменено пользователем то вернёт FALSE.

   FFCTL_STARTINGTOFILTER - hHandle - HANDLE который вернул FFCTL_CREATEFILEFILTER

                            Это вызов надо сделать до начала "атомической" операции фильтрования
                            чтобы фильтры с относительной датой правильно работали.
                            Этот вызов обновляет "текущее время" которое используется для сравнения
                            относительных дат.

   FFCTL_ISFILEINFILTER   - hHandle - HANDLE который вернул FFCTL_CREATEFILEFILTER
                            Param2 - (const FAR_FIND_DATA *) который нужно проверить на включение в фильтр.
                            
                            Вернёт TRUE если файл попадает под фильтр (т.е. включен), или FALSE если исключен.

t-rex 13.12.2008 16:00:35 +0200 - build 648

1. Убрал Load/UnloadPlugin, теперь на будущее есть
   PluginsControl(HANDLE hHandle, int Command, int Param1, LONG_PTR Param2)

   LoadPlugin теперь так
   PluginsControl(INVALID_HANDLE_VALUE,PCTL_LOADPLUGIN,PLT_PATH,(LONG_PTR)L"path to dll");

   UnloadPlugin теперь так
   PluginsControl(INVALID_HANDLE_VALUE,PCTL_UNLOADPLUGIN,PLT_PATH,(LONG_PTR)L"path to dll");

2. Заготовка API для FileFilter.

3. Убрал проверку на размер PluginPanelItem из plugin.hpp, она больше не нужна и была не правильная.

drkns 13.12.2008 13:31:49 +0200

1. Версия 2.0 в проекте.

t-rex 13.12.2008 13:22:22 +0200 - build 647

1. Версия Фара теперь 2.0

2. Ветка в реестре теперь Far2.

3. Подготовка FileFilter к вызовам через PluginAPI.

t-rex 12.12.2008 17:59:54 +0200 - build 646

From Shmuel Zeigerman

1. При указании в BreakKeys более одного из модификаторов
   (ctrl, alt, shift), для закрытия меню было достаточно нажатия
   любого одного из указанных, например: указано AltShiftF9,
   а закрывается и по AltF9, и по ShiftF9.

t-rex 10.12.2008 17:03:51 +0200 - build 645

1. Фикс GCC сборки hook_wow64.

t-rex 10.12.2008 11:09:44 +0200 - build 644

1. Вернул привычное поведение re.
   Т.е. теперь в масках re работают как везде/всегда, регистро-зависимые и надо //i чтоб наоборот.

2. Освободим память в объекте re для масок если обработанна большая строка, чтоб не накапливалось.

t-rex 10.12.2008 08:57:45 +0200 - build 643

1. Исправление от Юры: hook_wow64 не работал в Висте и 2008.
   В принципе, намного проще было сделать без таких извращений (просто заведя
   переменную), но мне не нравится идея когда поведение _системной_ dll, завист
   от "удара по памяти" внутри программы. В том смысле, что если где-то кто-то
   писанул бы в эту переменную, последствия бы были... мягко скажем неприятные.
   Полный, в общем, аналог того что со вторым блоком (предпочитаю патчить).
   Можно было бы сделать и одним патчем, а не двумя (это уже из области паранои :)
   я просто сделал цепочку в которой "отказ" на любом этапе практически
   безопасен. А если патчить в одном месте так бы не получилось.

drkns 10.12.2008 00:33:43 +0200 - build 642

1. Опытным путем (в MSDN об этом ни слова :) установлено, что при вызове SearchPathW(NULL,...)
   источник и приемник не должны пересекаться, иначе будет UB.
   Как следствие - при определённых условиях криво работал запускатель.

zg 09.12.2008 17:56:32 +0200 - build 641

1. в DialogRun/DialogFree проверяется hDlg на равенство INVALID_HANDLE_VALUE.

t-rex 09.12.2008 13:05:43 +0200 - build 640

1. В re для масок, сделал Search в место Match, так логичней и привычней.

2. re для масок теперь по умолчанию регистро-НЕзависимые, если вдруг надо зависимые то
   ввёл новый параметр /regexp/c

3. Сделал классы масок "покрасивей".

t-rex 09.12.2008 03:08:31 +0200 - build 639

1. Мелкие изменения в использовании RegExp.

2. new небыл переопределён для GCC.

drkns 09.12.2008 00:13:07 +0200

1. RegExp.?pp добавлены в VC-проект.

t-rex 08.12.2008 23:42:49 +0200 - build 638

1. Используя RegExp библиотеку любезно предоставленную Костей Ступником фар теперь умеет RegExp.
   Синтакс такой же как в плагине S&R (описано в его хэлпе, надо будет скопировать).
   Начинаем по мелкому, пока что в АПЙ этого нету но зато добавил поддержку RegExp в файловые маски.
   Это значит что теперь в любом месте где задаются маски можно использовать RegExp - например фильтры, поиск файлов, ассоциации, select.
   Так как функционал прозрачен то все плагины которые юзают АПЙ масок получают RegExp за бесплатно.
   Теперь о прозрачности: regexp должен задаватся в /regexp/ - т.е. идёт простая проверка, если первый символ маски это / то это regexp.
   По умолчанию regexp регистро-зависимые, если надо наоборот то /regexp/i (ну как обычно короче).
   В тех местах где поддерживается маска исключения тоже можно использовать regexp (или маску), с любой из сторон |.
   Если нужно точное соответсвие между RegExp и строкой то /^regexp$/.
   Примеры:
   /(eng|rus)/i
   /(eng|rus)/i|/.*(a|b)/i
   *.lng|/(eng|rus)/i
   /(eng|rus)/i|*.lng

t-rex 06.12.2008 21:41:04 +0200 - build 637

1. Удалил (видимо забытые) строки из DM_SETMAXTEXTLENGTH которые не давали выставить размер больше чем 511.

zg 06.12.2008 16:57:17 +0200 - build 636

1. добавлены два дополнительных DM_*:
   а. DM_GETDLGITEMSHORT - Param1 - ID элемента, Param2 - указатель на FarDialogItem.
                           PtrData всегда возвращается как NULL.
                           В случае успеха возвращается TRUE, в случае ошибки FALSE.
   б. DM_SETDLGITEMSHORT - полностью аналогичен DM_SETDLGITEM за исключением того, 
                           что PtrData не используется.

t-rex 05.12.2008 21:17:26 +0200 - build 635

1. Доделал API для работы FExcept, подходящая версия FExcept через минуту будет на SVN.

2. Различные мелкие исправления/доделки в PluginManager.

drkns 05.12.2008 19:16:40 +0200 - build 634

1. Уточнение работы автоопределения.

t-rex 05.12.2008 02:19:36 +0200 - build 633

1. Начальное API для загрузки и выгрузки плагинов (FARLOADPLUGIN FARUNLOADPLUGIN),
   пока что без особых проверок на валидность выгрузки, поэтому выгружать надо осторожно :)
   В farcmds через минуту будут префиксы pload и unloadp чтоб это использовать.
   
drkns 04.12.2008 23:55:44 +0200 - build 632

1. Если _существующий_ файл открывали по ShiftF4 - зачем-то устанавливался флаг FFILEEDIT_NEW.

2. Если просят открыть файл с BOM в однобайтной кодировке - не будем его прятать.

drkns 04.12.2008 19:38:03 +0200 - build 631

1. Попытки автоопределения LE/BE-уникода без сигнатуры.

2. Вроде бы починил глюки с кодировкой "Auto" в редакторе.

3. Не работали ситсемные ассоциации для некоторых типов файлов.

t-rex 04.12.2008 01:50:41 +0200 - build 630

1. Открываем файл UTF8, ShiftF2 в UNICODE, если во время EE_GOTFOCUS который
   придёт после месаги о перезагрузки файла вызвать ECTL_GETINFO то AV ибо в
   редакторе нету строк.

На обдумывание:
1. Нафига нам вообще эта перезагрузка файла, вроде как лишняя совсем.
2. Хотя и AV в самом фаре, ловится оно как бы в плагине и плагин выгружается.

drkns 03.12.2008 18:24:39 +0200 - build 629

1. Проверка возможности корректного сохранения текста в выбранной кодировке
   производится до любых манипуляций с исходным файлом.

2. В FileEditor::SaveFile убрана мешанина из libc и winapi-функций. 

drkns 02.12.2008 22:44:32 +0200 - build 628

1. К классу GetFileString прикручена проверка корректности отображения строки в уникод.

2. Редактор выдаёт предупреждение, если во время открытия файла перекодирование прошло с потерями.

drkns 02.12.2008 18:02:06 +0200 - build 627

1. В 624 поломал сохранение в UTF<7|8>.

t-rex 02.12.2008 12:41:01 +0200 - build 626

1. #if (_WIN32_WINNT >= 0x0500) добавлен вокруг нужных мест в keys.hpp.

zg 02.12.2008 03:50:20 +0200 - build 625

1. у диалогов, созданных плагинами, фокус всегда был на первом элементе.

2. исправил gcc сборку.

drkns 02.12.2008 01:03:36 +0200 - build 624

1. При попытке сохранения уникодного текста в неуникодной кодировке
   покажем сообщение, что "лучше так не делать".

zg 01.12.2008 21:28:20 +0200 - build 623

1. использование неинициализированной переменной при создании редактора.

drkns 01.12.2008 00:42:27 +0200 - build 622

1. В некоторых местах вместо BoxSymbols использовались непосредственно коды.

2. Доступ к элементам BoxSymbols производится через именованные константы (перечисление BOX_DEF_SYMBOLS).

drkns 30.11.2008 20:59:07 +0200 - build 621

1. Mantis#0000605: На экране остаётся мусор.

t-rex 30.11.2008 15:31:00 +0200 - build 620

1. Ещё варнинги.

drkns 30.11.2008 12:23:04 +0200 - build 619

1. Mantis#0000646: OK button in the dialogs

2. Синхронизация vc-проекта с мейками.

3. Снова отголоски TI#48, теперь в дереве папок.

t-rex 30.11.2008 11:26:12 +0200 - build 618

1. Исправил вроде как все ворнинги.

2. lng файлы теперь содержат версию фара что должно помочь разбирать разные тупые проблемы в этой сфере.
   Теперь править языковые строки надо в farlang.templ.m4 (farlang.templ теперь генерится из него).

t-rex 30.11.2008 00:33:42 +0200

1. Был исправлен lng.generator на предмет не обновления языковых файлов когда использовались ключи -ol и -oh совместно с -i.
   Это приводило к проблемам в компиляции VC проектов. Обновил lng.generator.exe в tools.

2. Теперь и в мэйках используем -ol для lng.generator.

drkns 29.11.2008 21:55:34 +0200 - build 617

1. Mantis#0000645: Падение при попытке вызвать несуществующий раздел помощи.

2. В диалоге назначения макрокоманды некорректно отображались некоторые клавиши. 

drkns 29.11.2008 17:49:01 +0200 - build 616

1. Говорят, падали ansi-плагины, делающие FCTL_SETSELECTION сразу на обе панели.

t-rex 29.11.2008 04:20:11 +0200 - build 615

1. Исправил ворнинги.

2. Новый gcc мэйк не грузил файл dependencies.

3. На подобии с gcc сделал самостоятельный мэйк для VC (и переименован в makefile_vc).
   Он теперь пашет сам по себе и все эти батники больше не нужны.
   Также добавлен автодетект версии VC (по версии мэйк).

4. mkdep.awk теперь общий для всех компайлеров. mkdep.gcc.awk удалил.

drkns 28.11.2008 18:43:14 +0200 - build 614

1. Поразвлекаемся с редактором, пока мелочи для разминки:
   - Mantis#0000515: Две ANSI кириллицы в списке кодировок;
   - работает F8;
   - работает сохранение в BE-юникоде;
   - правильно работает ShiftF2;
   - BOM пишется только если он уже был в файле или файл создан с нуля.

2. Установка атрибутов:
   - передвинул чекбоксы "как в 1.71";
   - после введения структуры ImportedFunctions отвалилось шифрование;
   - некорректная перерисовка при перемещении диалога.

3. Продолжение исправлений проблем в работе UnicodeString с реестром.

t-rex 28.11.2008 15:24:43 +0200 - build 613

1. Мелкая оптимизация UnicodeString.

2. Исправление проблемы в работе UnicodeString и функциях для работы с реестром.
   Тут в общем надо довольно сильно переделать но на пока сойдёт.

3. Наконецто сделал чтоб gcc мэйк собирал всё одним ходом даже с нуля, а также dependancies
   генерятся теперь также как и для VC (mkdep.gcc.awk) что намного быстрей чем было.

4. mkdep.awk неправильно обрабатывал мена файлов с больше чем одной точкой в имени.

t-rex 27.11.2008 20:30:15 +0200 - build 612

1. Пару мелких копи-паст глюков в 609.
   Кто уже успел заюзать настройку размеров в расскраске, сорри :)

t-rex 27.11.2008 19:46:21 +0200 - build 611

1. Полез было переделывать поиск (AltF7) но перехотелось :)
   По дороге "исправил" пару мелочей.

svs 27.11.2008 19:49:36 +0300 - build 610

1. Mantis#0000061: Listbox с границами и без 

2. Убираем варнинг в hilight.cpp

t-rex 27.11.2008 15:32:32 +0200 - build 609

Портирование изменений в фильтрах из 1.71:

1. Mantis#260: "динамический фильтр по дате".
   Относительная дата вносится в днях, часах, минутах и секундах (дней хоть 9999).
   От месяцев и годов отказался ибо это не точные числа.
   Считывание текущего времени для работы с относительными временем в фильтрах
   происходит один раз в начале "атомической" операции а не для каждого сравнения.
   Для операций которые происходят после диалога (копир, поиск и т.п.)
   текущее время считывается сразу после закрытия диалога.

2. Конктрено упростил фильтры (и чего я сразу так не придумал :),
   больше нету этих ужасно не интуитивных D?/D-/D+ в заголовке меню фильтров
   и теперь логика фильтрации такова (как мне кажется это очень интуитивно):
   Если папка не попала ни под какой exclude фильтр то самое логичное
   будет сделать ей include если небыло дугих include фильтров на папки.
   кроме как в Select где логичней всего работать чисто по заданному фильтру.

3. Логика фильтра доделана (вроде бы :).
   Вернём старое поведение фильтра - проверяем до первого совпадения, так более интуитивно.
   По запросам добавлены действия "X" и "I" - StrongExclude и StrongInclude,
   которые имеют первенство над "-" и "+" даже если они дальше в списке.
   !!! Пометка фильтров (+ и -) слетела, надобно перенастроить !!!

4. Был удалён комбо бокс для выбора типа размера, теперь тип размера задаётся суффиксами [BKMGT],
   такое же изменение произошло в Alt-F7->Advanced Options.
   !!! Если вы пользовались этими настройками размеров то вам придётся всё перенастроить заново !!!

5. Немного оптимизации в фильтре и добавил комментарии чтоб не путаться :)

6. Авто хоткеи для авто-фильтров.

7. Mantis#0000569: Улучшения в диалоге фильтров.
   Теперь диалог раскраски влазит в 80x25 и вообще визуально диалог фильтров вроде как лучше выглядит.

8. Удалил неиспользуемую FileList::UpdateColorItems().

drkns 27.11.2008 00:58:19 +0200 - build 608

1. С целью сокращения писанины введён IsSlash() и все места типа if(c==L'\\'||c==L'/') заменены на оный.

2. В config.cpp убраны суффиксы 'W' у переменных NKey*.

drkns 26.11.2008 19:48:28 +0200 - build 607

1. Уточнение поведения прокрутки в редакторе.

drkns 26.11.2008 18:38:33 +0200 - build 606

1. После 538 полоса прокрутки в QView, конечно, рисовалась как положено,
   но клики мышью по прежнему ожидались чёрт знает где.

2. Полоса прокрутки в панелях не захватывала мышь.

3. Полоса прокрутки добавлена в редактор.

zeroes 26.11.2008 18:28:51 +0200 - build 605

1. фикс вьювера - при вызове диалога поиска под окном диалога
рисовалось окошко

 +- Поиск -+
 |  Поиск  |
 |   ""    |
 +---------+

drkns 25.11.2008 19:13:48 +0200 - build 604

1. Коррекция lng и hlf на предмет ссылок/связей/копира и т.п.

t-rex 24.11.2008 01:40:21 +0200 - build 603

1. Косметика и оптимизация в использовании UnicodeString в нескольких местах.
   Вроде как все "лёгкие" места поправил. Теперь надо будет занятся более "тяжелыми".

2. UnicodeString.LShift теперь умеет выкидывать символы с лобого места в строке.

t-rex 23.11.2008 23:16:45 +0200 - build 602

1. Косметика и оптимизация в использовании UnicodeString в нескольких местах.

2. Исправлено несколько багов замеченых по дороге.

t-rex 23.11.2008 17:29:32 +0200 - build 601

1. Функция ReplaceSlashToBSlash(string &), есть у меня такое ощущение что такая уже есть
   но не нашел и в каждом месте в коде это почему то делается руками.

2. Добавление в UnicodeString:
   - PosI ~= StrStrI
   - Lower и Upper умеют работать над куском строки.

3. Косметика и оптимизация в использовании UnicodeString в нескольких местах.

t-rex 23.11.2008 00:26:56 +0200 - build 600

1. Косметика и оптимизация в использовании UnicodeString в нескольких местах.

t-rex 22.11.2008 20:05:52 +0200 - build 599

1. Оптимизация UnicodeString.RPos, так как мы знаем длину строки

2. Исправил пару BUGBUG.

3. Косметика и оптимизация в использовании UnicodeString в нескольких местах.

drkns 22.11.2008 16:17:52 +0200 - build 598

1. Mantis#0000595: FSF.PasteFromClipboard и FSF.DeleteBuffer: несоответствие типов

t-rex 22.11.2008 13:26:11 +0200

1. Создал папочку contrib и положил туда первую добавку, проект для Code::Blocks из Mantis#594 от Slimfast2000.

t-rex 22.11.2008 12:50:52 +0200 - build 597

1. from chupakabra: Дополнения к Mantis#636
   1. Изменения в PointToName():
      - Исправил поведение для путей вида "\path"
      - Проверка на ':' теперь производится не в цикле, а один раз в начале функции.
   2. При сортировке панели плагина Far постоянно пытается вызвать плагиновскую Compare
      (даже если её нет), из-за неверной проверки кода возврата.

drkns 21.11.2008 18:17:31 +0200 - build 596

1. Продолжение 2457: не работал копир (а может и ещё что-то) если отсутствовал доступ
   к одному из надкаталогов источника или приёмника.
   Посему apiGetFindDataEx теперь при неудачном apiFindFirstFile пойдёт другим путём
   и заполнит pFindData самостоятельно.

2. Ещё одна мелкая правка в диалоге перезаписи.

t-rex 21.11.2008 18:12:38 +0200 - build 595

1. from DiRTy_GaRRy: Mantis#495: Поиск файлов по содержимому значительно медленней, чем в 1.7.x.

t-rex 21.11.2008 17:58:57 +0200 - build 594

1. Mantis#641: креш по CtrlIns/AltShiftIns.
   Раньше не падало потому что был lstrlenW вместо wcslen в StrLength и он видимо проверял
   bad ptr так что такого рода баги ещё ожидаются.

drkns 20.11.2008 19:38:33 +0200 - build 593

1. AltF9 не работало в пустом меню.

drkns 20.11.2008 19:21:07 +0200

1. localOEM.cpp добавлен в проект.

t-rex 20.11.2008 15:47:13 +0200 - build 592

1. Взял из 1.71 функции для работы со строками в OEM что очень улучшает
   производительность плагинов работающих через враппер которые юзают эти функи.
   Это также решает Mantis#442 и Mantis#443.

drkns 19.11.2008 20:16:11 +0200 - build 591

1. В меню работает AltF9.

svs 19.11.2008 21:13:37 +0300 - build 590

1. Mantis#0000634: Не сохраняется состояние флага "Искать в символических связях" 
   Теперь опция в поисковике не зависит от системной опции "Scan symbolic links"


drkns 19.11.2008 19:24:02 +0200 - build 589

1. В диалоге перезаписи криво работал просмотр нового файла.

drkns 19.11.2008 18:35:52 +0200

1. TPreRedrawFunc.?pp добавлены в проект.

t-rex 19.11.2008 17:07:15 +0200 - build 588

1. from chupakabra: исправление проблемы внесённой в 583 билде (filelist.cpp).

2. Исправил gcc сборку.

3. Варнинги и т.п.

svs 19.11.2008 14:26:32 +0300 - build 587

1. PreRedrawFunction. Смысл изменений в следующем.

   SetPreRedrawFunc() и комплект переменных служит для того, чтобы корректно
   отрисовывать экран после разнообразных диалогов, например, во время
   копирования нажали Esc, а потом снова Esc - здесь срабатывает сабж, чтобы
   отрисовать прогрессбар.

   Но т.к. глобальные PreRedrawFunc и PreRedrawParam существуют в
   единственном варианте, то вызов SetPreRedrawFunc(NULL) в очередном месте
   киляет предыдущее состояние. Из-за чего лезут глюки (если дебажную версию
   запускать с /do)

   Я постарался убрать сей недочет. Правда такие "рисунки" так и остались
   "рисунками"
   (желающие могут переделать в нормальные диалоги :-)). Начал как обычно с копира,
   но получилось везде, т.к. произошла переделка сабжа.

   На счет копира - здесь добавлена реакция на "разворот консоли".
   В копире начать копирование.
   Жмем Esc - появился диалог-прерыватель
   Пытаемся развернуть окно (дважды кликнуть на заголовке).
   Получилось, но экран полность не прорисовался.
   Теперь Esc и видим лабуду на экране.

   Внимание! Необходимо добавить новые файлы TPreRedrawFunc.?pp в проекты!

drkns 18.11.2008 21:50:15 +0200 - build 586

1. "Оптимизация" предыдущего патча :)

drkns 18.11.2008 18:37:20 +0200 - build 585

1. Продолжим ломать копир. Теперь до начала копирования, помимо [ ] Only newer file(s),
   можно выбрать "перезаписать всё"/"пропустить всё"/"дописать всё" и указать, надо ли
   запрашивать подтверждение для файлов с аттрибутом R/O.

2. В диалоге подтверждения перезаписи фокус передвинут на чекбокс.

3. Продолжение Mantis#0000638: неправильно отображался prompt.

drkns 18.11.2008 01:05:36 +0200 - build 584

1. Немного пощупал диалог подтверждения перезаписи файла. Итого:
   - свершилось то, о чём так долго говорили большевики: кнопок "Overwrite all", "Skip all", "Append all" больше нет,
     есть один чекбокс "Remember choice". Диалог стал меньше, места стало больше.
   - на строках "New" и "Existing" можно нажимать F3 и наглядно сравнивать новое с существующим.

2. Mantis#0000638: Некорректно обрабатывается переход на папки с именем "C:", "E:", находящиеся в корне плагина

3. Нельзя было установить UNC-путь на панели через параметры командной строки.

t-rex 17.11.2008 21:53:10 +0200 - build 583

from chupakabra

1. Mantis#636: Предложение по оптимизации обработки больших списков файлов.
   1. В filelist.cpp::SortList() вызываем PointToName() только тогда когда это реально нужно, т.е. при сортировке по имени файла.
   2. Там же используем новую функцию PointToExt() для поиска расширения файла.
   3. PointToName() изменена таким образом, чтобы работать более эффективно для длинных путей.
   4. В local.cpp::StrLength() вызов lstrlenW() заменен на wcslen().
   5. При компиляции с помощью cl.exe используется флаг /O2 вместо /O1.

t-rex 16.11.2008 16:37:32 +0200 - build 582

1. Тупой ворнинг в предыдущем патче.

t-rex 16.11.2008 16:05:59 +0200 - build 581

1. from Ariman: Mantis#580: Некоректный перебор расширений при запуске команды.

2. Убрал пару мелких ворнингов.

svs 06.11.2008 21:20:54 +0300 - build 580

1. Mantis#0000308: Рисовать по умолчанию тень для диалогов с FDLG_SMALLDIALOG 


drkns 05.11.2008 22:57:11 +0200 - build 579

1. Обработка мультимедийной клавиши Sleep: макроклавиша "Sleep" + константа KEY_SLEEP.

svs 05.11.2008 17:24:48 +0300 - build 578

1. Mantis#0000622: После ACTL_SETCURRENTWINDOW (или ACTL_COMMIT?) не посылается EE_KILLFOCUS
   From dolzenko
   Добавка моя: Запретим переключение фрэймов, если находимся в хелпе или диалоге

2. Mantis#0000187: Нельзя выйти из диалога с сообщением об ошибке
   не обрабатывался код ошибки COPY_FAILURE


Zeroes 03.11.2008 00:23:45 +0200 - build 577
1. Падение FAR с exception

например в случае, когда есть макрос:

[HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\Esc]
"Sequence"="$If (!APanel.Visible) F9 End Left Enter Down Enter Enter CtrlO $Else CtrlO F9 End Left Enter Down Enter Enter $End"

и пытаемся зайти в архив RAR с зашифрованным заголовком (-hp) после запроса
пароля жмем ESC несколько раз (примерно на 7й раз 100% FAR падает)

svs 24.10.2008 10:11:19 +0300 - build 576

1. Mantis#0000621: Макрос из плагина не отрабатывает, если тот вызван через функцию eval 
    1. запускается макрос, код помещается в рабочую зону
    2. срабатывает eval, делает новое рабочее окружение (push) и помещает новый код
    3. доходит дело до плагина - добавляется новый код "%%AltHistoryDialogActive=1;" в туже зону
    4. помещенный eval`ом код говорит "end" и происходит восстановление (pop) предыдущей рабочей зоны, несмотря на то, что в текущей зоне еще остался макрокод от плагина.
    5. завершается основной код и...
    ...и все.
    В общем не стояла проверка для п.4, т.е. теперь смотрим, что если что-то в рабочей зоне осталось, то не делаем pop, а пытаемся завершить все дела в этой текущей зоне.


drkns 16.10.2008 16:48:25 +0200 - build 575

1. Mantis#0000619: Просмотрщик начиная с некоторого билда не показывает полный путь файла.

drkns 06.10.2008 00:05:30 +0200

1. Ветка для IA64 в vcproj. Работоспособность не проверялась.

drkns 03.10.2008 18:27:50 +0200 - build 574

1. Mantis#0000614: Копирование не работает при задании директория без \ в конце. (регрессия)

drkns 03.10.2008 01:24:28 +0200 - build 573

1. В обработчике MCODE_F_MENU_SELECT в VMProcess не передавался tmpMode, как результат -
   макрос Menu.Select всегда работал в режиме 0 (полное совпадение).

drkns 01.10.2008 20:50:03 +0200 - без билда

1. Mantis#0000613: Поиск не находит файлы и папки в подпапках при установке опции "Искать в символических связях"

  В отличие от 1.71 здесь ничего делать не надо - всё уже работает.
  Просто в справку добавлено, что операция может потребовать больше времени, чем обычно.

thims 01.10.2008 13:00:00 +0200 - без билда

1. Перелопачен far18.VS2008.vcproj на предмет более правильных зависимостей и по мелочам фиксы.
2. Добавил себя в maintainers по Viewer'у

Zuz 26.09.2008 23:07:08 +0500 - build 572

1. Первые шаги в сторону IA64
2. deb64_ud2.asm теперь не нужен
3. SetErrorMode теперь вызывается один раз при старте FAR'a, почему вызовы SetErrorMode были размазаны по коду
   сейчас никто не помнит. Начнут выскакивать виндовые диалоги об ошибах доступа типа "файл не найден", обращаться
   ко мне.
4. Новый #Techinfo (временный):

   [HKEY_CURRENT_USER\Software\Far18\System]
   "IgnoreDataAlignmentFaults":REG_DWORD
   Параметр  "System/IgnoreDataAlignmentFaults"  с  типом  DWORD   позволяет
   подавлять ошибки выравнивания на платформе IA64.
   Может принимать следующие значения:
   0 - не подавлять ошибки выравнивания;
   1 - подавлять ошибки выравнивания.
   По умолчанию значение = 0 (не подавлять ошибки выравнивания).

drkns 26.09.2008 08:13:14 +0200 - build 571

1. Бантики:
   - UMSG -> MSG
   - к ещё оставшимся winapi ansi функциям и структурам явно дописан суффикс 'A', + юникод определён по умолчанию.
   - Тип параметра у UnicodeString.[Get|Release]Buffer - size_t.

2. В WaitKey Sleep теперь не на 50 мс, а на одну - так и процессор не греет, и побочных эффектов (http://forum.farmanager.com/viewtopic.php?t=3492) нет.

3. Добавлен #undef DefDlgProc - в WinUser.h уже есть одноимённое определение, а в far.map потом появляются чудеса вида ?DefDlgProcA@Dialog@

drkns 24.09.2008 19:04:47 +0200 - build 570

1. Поддержка создания вистовских ссылок по AltF6.
   Диалог слегка переделан, поведение оставлено максимально совместимым со старым:
    - если источник==файл(ы) - по умолчанию выбран hardlink
    - если источник==каталог(и) - junction.
   Новые виды ссылок надо выбирать ручками :)
   В справке всё это пока не отражено.

   Здесь же: при создании ссылок отключены проверки файловых систем, типов носителя, и т.п. для источника и приёмника, ибо работают они далеко не всегда адекватно.
   Логика проста - фар не должен включать режим телепата и строить догадки, сможет ли ОС создать ту или иную ссылку - ей в любом случае виднее.

2. API: FSF.MkLink знает о новых флагах:

     FLINK_SYMLINKFILE - символическая ссылка-файл (NT>=6)
     FLINK_SYMLINKDIR  - символическая ссылка-каталог (NT>=6)

     FLINK_SYMLINK переименован в FLINK_JUNCTION, в pluginold.hpp старое имя оставлено для совместимости.

3. Отображение ссылок в диалоге атрибутов и quickview:
   - скорректирована длина выводимого текста;
   - связи, указывающие на \\?\Volume{GUID}\some_path, считались монтированными томами.

4. ConvertNameToReal правильно обрабатывает символические ссылки-файлы.

5. При копировании/переносе ссылки фар блюдёт её тип и больше не превращает symlink в junction.

6. Mantis#0000607: "Лишний" бэкслеш в переменной пути окружения FAR.

yjh 16.09.2008 20:46:04 +0300 - build 569

1. 64bit warnings

drkns 16.09.2008 15:50:14 +0200 - build 568

1. Добавлена отсутствующая в старых SDK константа SYMBOLIC_LINK_FLAG_DIRECTORY.

2. GCC warnings.

drkns 14.09.2008 14:20:12 +0200 - build 567

1. GetJunctionPointInfo требовала слишком много прав для открытия симлинка, в результате чего она
   обламывалась на симлинках с Everyone:(DENY)(special access:) FILE_READ_DATA (в Висте таких полно).
   Сама функция переименована в GetReparsePointInfo (ибо этим по сути и является).

2. [Create|Delete]JunctionPoint теперь умеют [создавать|удалять] вистовские симлинки и переименованы в [Create|Delete]ReparsePoint.

3. В ряде мест убраны проверки на CheckFolder()==CHKFLD_NOTACCESS, т.к. из-за них нельзя было зайти в каталог,
   где можно "traverse folder", но нельзя "list folder" (в Висте, опять же, таких полно, и cmd зайти позволяет).
   А BugZ#743, ради которого они вводились, похоже, уже починился где-то раньше.

4. apiFindFirstFile при неудаче пытается развернуть симлинк и попробовать ещё раз для реального пути.
   Также в коде одиночные вызовы apiFindFirstFile заменены на apiGetFindDataEx + для симметрии добавленa apiFindClose.

5. Умеем различать обычные симлинки (aka связь/junction) и вистовские (aka ссылка/symlink) в диалоге атрибутов,
   быстром просмотре и столбце панели. lng и hlf ещё надо кое-где уточнить.

6. В IsModulePlugin2 добавлена проверка IMAGE_FILE_HEADER.Machine, дабы 32-битный фар не пытался грузить 64-битные плагины (и наоборот).

7. wcsncmp=>StrCmpN, StrCmpN=>StrCmpNI в некоторых местах.

8. Криво работала команда cd \\.\pipe :)

9. Некоторая поддержка относительных вистовских симлинков, по мотивам 1.71.2226.


drkns 12.09.2008 11:46:27 +0200 - build 566

1. Не работала Message c флагом FMSG_ERRORTYPE для неизвестных FAR'у кодов ошибок.

drkns 10.09.2008 01:18:40 +0200 - build 565

1. WindowInfo.TypeName и WindowInfo.Name теперь имеют тип const wchar_t*.
   Структуру WindowInfo, заполненную по ACTL_GETWINDOWINFO, нужно освобождать командой ACTL_FREEWINDOWINFO.
   Как обычно: если кто использовал это в плагинах - надо править.

2. В паре мест при вызове UnicodeToAnsi размер приемника передавался на 1 байт меньше возможного.

drkns 07.09.2008 14:21:22 +0200 - build 564

1. FCTL_GET[ANOTHER]PANELSHORTINFO для ansi-плагинов должна работать по прежнему. 

drkns 07.09.2008 13:21:42 +0200 - build 563

1. FCTL_FREEPANELINFO всегда возвращала FALSE;

2. FCTL_GETPANELSHORTINFO теперь НЕ ЗАПОЛНЯЕТ поля lpwszColumnTypes, lpwszColumnWidths
   и lpwszCurDir структуры PanelInfo. Освобождать заполненную этой командой структуру не надо.

yjh 06.09.2008 22:45:30 +0300 - build 562

1. Убираем warning в 64хбитовой компиляции


drkns 06.09.2008 16:56:32 +0200 - build 561

1. Утечки памяти в SortList и FileListToPluginItem.

drkns 05.09.2008 22:27:29 +0200 - build 560

1. From Alexey Samlyukov: уточнения в oldfar::FCTL_GET[ANOTHER]PANEL[SHORT]INFO.

drkns 05.09.2008 21:33:06 +0200 - build 559

1. И ещё одна поправка к 557.

drkns 05.09.2008 14:34:30 +0200 - build 558

1. Поправка к предыдущему билду.

drkns 04.09.2008 22:16:09 +0200 - build 557

1. Mantis#0000582: memleak при FCTL_GETPANELINFO(FCTL_GETPANELSHORTINFO)
   Тут дело не в утечках во враппере, а в недоделанном api :)
   Теперь в юникодных плагинах _НАДО_ делать FCTL_FREEPANELINFO после всякого FCTL_GETPANEL[SHORT]INFO.

2. Работает FCTL_SETSELECTION для ansi-плагинов.

2. Очередные изменения в api: PanelInfo.SelectedItems теперь массив указателей на соответствующие выделенные элементы
   массива PanelInfo.PanelItems, а не массив копий оных. Плагины, использующие это, надо править.

3. FCTL_GETCMDLINE[SELECTEDTEXT]: если в Param передан NULL, функция вернёт необходимый
   размер буфера (в символах) без учёта 0. 

4. Дополнение к 551: PrepareDiskPath возвращала ерунду, если ей подсунуть корткое имя.

svs 04.09.2008 17:08:57 +0300 - build 556

1. В Editor::SetCacheParams, FileEditor::LoadFromCache и FileEditor::SaveToCache 
   восстановлен баланс сил - запоминание/восстановление шорткатов, позиций, etc. как в 1.7.

2. Mantis#0000603: не работает StartChar в Editor()
   В FileEditor::LoadFile функцию Editor::SetCacheParams вызываем всегда.


svs 04.09.2008 01:30:32 +0300 - build 555

1. Bug. Открыть файл во вьювере, перейти в конец/середину/etc., нажать F6.
   В редакторе оказываемся в самом начале файла.
   Сравнить с поведением 1.7x.
   Hint (для АПИ :-). Если в Info.Editor в качестве StartLine указать -2, то
   параметр StartChar ФАР будет воспринимать как смещение в байтах от начала 
   файла и постарается встать в начало строки, подходящее под это смещение.

svs 03.09.2008 18:33:52 +0300 - build 554

1. Mantis#0000600: Поведение DIF_SELECTONENTRY при создании диалога 
   Поломалось в 2257 билде.

2. Небольшие уточнения для FileEditor...
   В FileList::ProcessKey исключаем "лишний" просчет NamesList
   В FarEditor при EF_NONMODAL редактор пытался запускаться при XC_LOADING_INTERRUPTED.

3. Избавляемся от варнингов в macro.cpp

drkns 31.08.2008 19:06:01 +0200 - build 553

1. В 361 билде сломалось назначение макросов на клавиши !@#$%^&*()_+|.

2. В 481 билде сломались хоткеи с Shift.

3. Косметика: в диалоге назначения макроклавиши клавиша приводится к верхнему регистру.

drkns 31.08.2008 13:37:57 +0200 - build 552

1. Mantis#0000588: размер буфера в MakeDirectory()

   Но NM - зло, его надо искоренять :)

   MakeDirectory теперь выглядит так:
     int WINAPI MakeDirectory(HANDLE hPlugin,const wchar_t **Name,int OpMode);

   Плагин должен передать Фару через Name указатель на свой буфер, содержащий имя каталога.
   Буфер должны быть валиден после возвращения из функции.

   Аналогичные изменения в GetFiles:
     int WINAPI GetFiles(HANDLE hPlugin,struct PluginPanelItem *PanelItem,int ItemsNumber,int Move,wchar_t **DestPath,int OpMode);

     DestPath изначально указывает на путь назначения, если плагин его меняет - DestPath должен
     указывать на буфер плагина, содержащий новый путь. Буфер должны быть валиден после возвращения из функции.

   Соответственно, плагины, использующие эти функции, надо переделать.

drkns 29.08.2008 23:47:36 +0200 - build 551

1. Mantis#0000475: Отображение заголовка панели ЗАГЛАВНЫМИ буквами даже когда директорий не заглавный
   Mantis#0000599: Невозможно ходить по сетевым дискам подключенным через WebDAV
   
   Оба тикета - следствие использования коротких имён в определении правильного регистра пути.
   PrepareDiskPath слегка переписана, короткие имена теперь там не задействуются вообще.

svs 20.08.2008 17:21:30 +0300 - build 550

1. Mantis#0000592: Сбрасывается состояние IClip при использовании функции eval

drkns 14.08.2008 10:53:21 +0200 - build 549

1. Продолжение 547 - при выводе копирайта прокручиваем экран только если в этом есть необходимость.

drkns 12.08.2008 16:29:00 +0200 - build 548

1. Пляски с OpenPluginInfo во враппере (b539) получились не совсем удачными, попробуем иначе.
   Как следствие, Mantis#587: entering '..' inside an archive exits archive instead of going up 1 level

2. В UnicodeString::SetData добавлен NullToEmpty, дабы не писать его в куче других мест.

drkns 11.08.2008 00:19:22 +0200 - build 547

1. Цвет пользовательского буфера теперь настраивается.
   В палитру добавлен COL_COMMANDLINEUSERSCREEN.

2. При выходе из FAR восстанавливаются цвета текста/фона, использовавшиеся в консоли до его запуска.

3. При старте FAR некорректно прокручивался предыдущий output и копирайт рисовался поверх него, а не после.

svs 10.08.2008 23:29:07 +0300 - build 546

1. Mantis#0000577: Сбрасывается позиция в строке при Undo после XLat
   в Editor:XLat в AddUndo в качестве параметра savepos юзался 0 :-(
   возможно вместо CurPtr->GetCurPos() нужно преобразование с учетом табов (?)

2. Mantis#0000554: В списке Hotplug-устройств отсутствует диалог об ошибке извлечения устройства

3. Mantis#0000579: Неполадки при операциях фара (таких как копирование), запущенных из макроса
   Если "DisableOutput=0" и в процессе копирования, например, мы нажали Esc и отменили процесс и (!) 
   если логика макроса не поняла, что ее "кинули" (макрос не отследил факта появления "левого" 
   диалога), то...


svs 08.08.2008 20:10:03 +0300 - build 545

1. Mantis#0000571: некорректно отрисовывается соседняя панель

drkns 06.08.2008 22:28:53 +0200 - build 544

1. Криво обрабатывалось кнопкосочетание CtrlAltShiftPause.

2. Раз уж движок позволяет обрабатывать сочетания c CtrlAltShift, зарезервируем для CtrlAltShiftF1-F12 место в lng.
   Также зарезервировано место для CtrlAlt-, AltShift- и CtrlShiftF1-F12 в областях Help, Info, QView и Tree.

svs 06.08.2008 12:50:15 +0300 - build 543

1. Macro: добавлена функция "s=trim(s[,n])" - удаляет все пробельные символы (пробелы, табуляции, 
   переводы строк и возвраты каретки) из строки s снаружи (n=0 или не указан), слева (n=1) 
   или справа (n=2)

2. Macro: уточнение для substr. Теперь работает верно.

3. Macro: уточнение функций msgbox, prompt, panelsetpath там где в параметрах используется строка.
   Например, 
     msgbox(1,2) выдаст диалог с заголовком "1", текстом "2" и кнопкой "Ок".
     msgbox(0,2) выдаст диалог с пустым заголовком, текстом "2" и кнопкой "Ок".
     msgbox("0",2) выдаст диалог с заголовком "0", текстом "2" и кнопкой "Ок".
     т.е. если нужно явно указать "0" - заключаем этот ноль в кавычки.

4. Macro: После 542 отвалился msgbox (где в качестве кол-ва необязательных указано значение, равное количеству 
   параметров и больше 1). Починили.

5. Bug: неправильное определение позиции клика мыши во вьювере в статусной строке.
   Viewer работает со своей системой координат.
   Так же из-за этого VCTL_GETINFO возвращал WindowSizeY на 1 меньше реального значения.

svs 05.08.2008 14:38:06 +0300 - build 542

1. Mantis#0000581: Добавить возможность прервать выполнение макроса
   CtrlBreak прерывает выполнение макроса. Назначать макросы на CtrlBreak тоже можно

2. Mantis#0000564: Не работает ключ фара /ma
   Проблемы с логикой :-)
   MDOL_ALL теперь равен 0x80000000

3. Macro: изменения в substr(). Если N2 = 0, то вернется пустая строка.
   Для варианта "от сюда и до конца строки" нужно указать N2 < 0

4. Macro: уточнение msgbox. Теперь все параметры можно не указывать.


drkns 05.08.2008 11:32:24 +0200 - без билда

1. Косметика в far.mak + в догонку к одному из предыдущих билдов: замена int на DWORD в паре мест, связанных с обработкой аттрибутов.

drkns 04.08.2008 00:50:56 +0200 - build 541

1. Обновил .vcproj + мелкие правки в хидерах.

warp 04.08.2008 00:20:00 +0300 - build 540

1. Очередной бессмысленный подвиг. Перенес загрузку всех импортируемых функций в одно место. 
   Надо обновить .vcproj, mak'и вроде обновил. Проверяем, чтобы ничего не отвалилось.

drkns 03.08.2008 22:11:48 +0200 - build 539

1. Для ansi-плагинов портилось содержимое OpenPluginInfo при повторном вызове фаром GetOpenPluginInfo().
   Пока что сделано дёшево и сердито. Возможно, надо менять сам способ хранения этой информации.
   
2. К строкам, добавляемым ansi-плагинами к меню плагинов, меню дисков и меню конфигурации,
   насильно дописывается суффикс " [A]", дабы оные были видны издалека.

3. GetFileOwner для плагинов.

warp 03.08.2008 21:58:00 +0300 - build 538

1. Теперь полоса прокрутки в QView рисуется как положено на рамке панели, а не черт знает где.

drkns 02.08.2008 19:59:42 +0200 - build 537

1. В диалогах и ещё паре мест знаковые переменные использовались вперемешку с беззнаковыми.

drkns 31.07.2008 21:03:09 +0200 - build 536

1. Немного почистил код:
    - Все структуры и константы, отсутствующие в поддерживаемых SDK, вынесены в sdkpatches.hpp.
      Просьба при необходимости дописывать именно туда;
    - Убраны некоторые анахронизмы;
    - прочая косметика.

drkns 29.07.2008 19:30:20 +0200 - build 535

1. Поправлена сборка с vc 2005 и gcc.

drkns 29.07.2008 10:15:52 +0500 - build 534

1. Начальная поддержка NTFS sparse-файлов:
    - "умное" копирование (только ненулевые сегменты);
    - Корректный подсчет размера в панелях и QuickInfo.

2. Добавлена функция apiSetFilePointerEx - обертка вокруг SetFilePointer[Ex].

3. Ещё немного именованных констант.

4. В SendDlgMessage и DefDlgProc проверка нулевого значения hDlg была не там, где надо.

Zuz 22.07.2008 21:12:52 +0500 - build 533

1. Mantis#0000576 Некорректная прорисовка в связи с ограничением функции WriteConsoleOutput, пока правка в лоб.

svs 21.07.2008 15:07:54 +0300 - build 532

1. Macro: gethotkey - параметр можно не указывать.

drkns 09.07.2008 19:48:58 +0200 - build 531

1. Не работало снятие выделения в редакторе по EditorSelect.BlockStartPos=-1.

2. Mantis#0000572: некорректное отрисовывание меню настроек плагинов.

drkns 06.07.2008 22:15:34 +0200 - build 530

1. Отголоски #462: вернём плагинам старое поведение ConvertNameToReal, с разврорачиванием до \\?\Volume{...}.

drkns 04.07.2008 20:18:48 +0200 - без билда

1. min|max заменены на "правильные" Min|Max.

svs 04.07.2008 17:57:25 +0300 - build 529

1. Mantis#0000570: Вычисление текущего каталога для плагина с OPIF_REALNAMES

drkns 25.06.2008 09:15:36 +0200 - build 528

1. В 521 не учёл операции с относительными путями.

t-rex 29.06.2008 14:06:55 +0200 - build 527

1. С форума: http://forum.farmanager.com/viewtopic.php?f=9&p=33805#p33805
   Как минимум в Win таблице символы с кодом меньше 128 не должны перекодироватся.
   Для 1.80 это не особо актуально но так как GetTable всё ещё в пару мест используется решил исправить и тут.

t-rex 29.06.2008 01:12:09 +0200 - build 526

1. Mantis#0000529 Не восстанавливается текущая позиция в командной строке

2. Mantis#0000568 Сбивается командная строка при скрытии/показе/обновлении файловой панели (в т.ч. автоматическом)

drkns 28.06.2008 22:16:11 +0200 - build 525

1. Починим сломанное в 523 и немного косметики в коде.

t-rex 28.06.2008 19:35:48 +0200 - build 524

1. Исправил неожиданные сдвиги экрана (LeftPos) в редакторе при скролирование.
   Вообще главная причина глюка это то что у нас почти все параметры редактора они реальное не
   параметры редактора а каждой строки в редакторе. Кто то хочет это переделать? :)

drkns 27.06.2008 22:56:28 +0200 - build 523

1. Баги с историей строк ввода во враппере.

t-rex 25.06.2008 22:48:27 +0200 - build 522 Турция vs. Россия :)

1. Оптимизация открытия файлов с очень длинными строками в редакторе.
   До оптимизации файл со строкой в 64MB открывался примерно минуту, теперь секунду.
   Само собой наличие колорера оптимизацию немного губит :)
  
drkns 25.06.2008 21:37:14 +0200 - build 521

1. Добавка к 517: в операции переноса файла между сетевыми дисками уточнёна
   проверка принадлежности источника и приёмника к одному устройству.

2. Не работали операции с UNC-путями (CtrlAltIns, CtrlAltF и иже с ними). 
   
svs 25.06.2008 17:16:20 +0300 - build  520

1. Mantis#0000567: Поиске в длинном фалей с попыткой отмены поиска
   Действуем так же как и при загрузке (см. build 493) - "развернем" функцию CheckForEsc() as is.

svs 23.06.2008 19:33:54 +0300 - build 519

1. Mantis#0000564: Не работает ключ фара /ma
   Кроме /ma так же "улучшены" остальные ключи

drkns 23.06.2008 18:02:51 +0200 - build 518

1. Mantis#0000082: Добавить "Пропустить все" в диалог.

2. Уточнения в блокировании чекбоксов, соответствующих NTFS-атрибутам, для
   монтированных не-NTFS томов и файлов на этих томах.
   
3. Не работала кнопка "Skip all" для атрибутов при копировании.

4. Косметика: "магические числа", возвращаемые ESetFile*(), заменены константами.

drkns 21.06.2008 01:50:16 +0200 - build 517

1. С форума: "Проблема при перемещении файлов на Hard-linked устройство".
   Некорректно работала _GetPathRoot() для монтированных дисков. 
   
svs 20.06.2008 11:46:31 +0300 - build 516

1. Доработка к 515-му - забыл вернуть -1 (ошибку)

svs 20.06.2008 11:11:21 +0300 - build 515

1. Macro: breaking change.
   Dlg.ItemType отдает все то же самое, что возвращает Dlg.GetValue(XXX,1), плюс изменения:
    * -1 - ошибка, например, Dlg.ItemType вызван не в диалоге
    * 0x8004 - Выбор из истории поля ввода
    * 0x800A - Выбор из комбинированного списка

svs 19.06.2008 19:33:11 +0300 - build 514

1. Mantis#0000560: Стирание текста в окошках поиска/замены

svs 18.06.2008 19:28:55 +0300 - build 513

1. From bitomaxsp:
   Mantis#0000559: Попытка убрать RAVE и BUGBUG при поиске и замене
   Сделал чтобы в Edit передавалось string при поиске вместо wchar_t. 
   Убрал "отливание в сторонку" строки поиска и строки замены. 
   Теперь просто используются string вместо указателей на wchar_t.


svs 17.06.2008 22:00:18 +0300 - build 512

1. Усиливаем build 2387 - при смене фокуса this ставим правильный :-)
   + добавка в АПИ: VE_GOTFOCUS & VE_KILLFOCUS

2. Mantis#0000556: Menu.Select: неверно работает назначение хоткеев и пр.
   Здесь проблема в том.... что ReadInput должен вызываться до получения позиции в меню, т.к.... :-) 
   ReadInput вызывает мкародвиг, который и меняет данные.

3. plugin.pas в порядок бы привести... :-(


svs 17.06.2008 18:44:24 +0300 - build 511

1. Mantis#0000558: Булево состояние DisableOutput всегда ложно

2. Mantis#0000547: Выделение найденных фрагментов при поиске
   From bitomaxsp.
   Значение опции не запоминалось.

zg 16.06.2008 20:32:26 +0200 - build 510

1. если открыть один просмотр, в нём переключится в hex, 
   потом второй просмотр (без переключения в hex), и потом вернутся 
   в первый просмотр, то для плагинов активным останется второй просмотр.
   например s&r будет искать во втором просмотре.

svs 16.06.2008 16:21:02 +0300 - build 

1. без билда. Поправил CONTRIBUTORS

warp 15.06.2008 05:54:00 +0300 - 509

1. Уточнение в парсере колонок во враппере. Хотя, видимо, тоже не до конца корректный вариант,
   но больше не падает на "N, N, N,". 

warp 14.06.2008 01:03:00 +0300 - 508

1. В API добавлен макрос PANEL_NONE, значит то же, что и INVALID_HANDLE_VALUE.

2. CURRENT_PANEL/ANOTHER_PANEL переименованы в PANEL_ACTIVE/PANEL_PASSIVE.

3. Добавлен FCTL_ISACTIVEPANEL.

t-rex 13.06.2008 17:26:33 +0200 - 507

1. hook_wow64.c теперь собирается с GCC.
   Работоспособность проверялась в GCC 4.3.0, в 3.4.5 нет поддержки TLS
   и поэтому фича там задисэйблена.

zg 12.06.2008 11:58:39 +0200 - build 506

1. про поиске файлов например по маске "makefile" зачем-то находились Makefile.svn-base.

yjh 12.06.2008 02:46:56 +0300 - build 505

1. Очередная ошибка в wow_hook - "спешка нужна при ловле блох"(С) :(.
   А вот то что оно всё равно работало, очередной раз доказывает, что
   то что программа запускается ещё не значит что она работает ;-)


yjh 10.06.2008 21:29:41 +0300 - build 504

1. "Экономия" в хуке для wow64. Раз уж из-за ошибки в последнем SP (к слову - 
   в ms её признали и обещали исправить :), приходится в ручную выдавать 
   VirtualProtect, то не нужен лишний syscal WriteProcessMemory

svs 10.06.2008 19:30:46 +0300 - build 503

1. Mantis#0000550: Падение в dialogs.cpp - Dialog::ProcessCenterGroup()

yjh 10.06.2008 18:43:57 +0300 - build 502

1. Mantis#0000551: отрицательный фильтр с атрибутом каталога в подсчёте
   'total' при копировании.
   From: Ariman

yjh 09.06.2008 23:01:41 +0300 - build 501

1. Обход в очередлной раз повторенной MS ошибки в WriteProcessMemory, на сей
   раз в 32хбитной версии kernel32.dll от 64хбитового 2003 :)

drkns 09.06.2008 21:14:59 +0200 - build 500

1. Mantis#0000535: курсор за пределами строки.

yjh 09.06.2008 22:00:37 +0300 - build 499

1, Классический паример "чётного числа ошибок" :) - хук, конечно, работал
   но вот преврка была не корректной и если бы ntdll изменился...

svs 09.06.2008 16:56:48 +0300 - build 498

From bitomaxsp:

1. Mantis#0000547: Выделение найденных фрагментов при поиске


yjh 09.06.2008 07:15:42 +0300 - build 497

1. Адаптация makesystem для сборки vc9 (VS2008) - пока не по умолчанию. 
   Помимо изменения путей в custom.vc.xxx следует добавить в NMAKE_OPTS 
   параметр USE_VC9=1.
   После того как все садаптируются :) сделаем дефолтным


t-rex 08.06.2008 14:45:36 +0200 - build 496

1. Сделаем plugin.hpp RC friednly.

yjh 08.06.2008 00:53:42 +0300 - build 495

1. В PluginsPanelInfo Reserved теперь не 2 DWORD'а а 2 DWORD_PTR.

drkns 06.06.2008 11:04:18 +0200 - без билда

1. Проект для VS2008.

svs 05.06.2008 00:50:59 +0300 - build 494

3. 'VMenu::GetTitle(char *,int)' и 'Frame::GetTitle(char *,int,int)' 
   получились разными функциями и в макросах для менюх непонятно что вызывается...
   Привел к одному знаменателю.

svs 04.06.2008 22:51:51 +0300 - build 493

From Denis:

1. Mantis#0000539: Новая фича в редакторе
   В редакторе добавлена обработка Alt-F7

2. Mantis#0000545: В процессе загрузки большого файла в редактор не появляется фоновое окно загрузки

Небольшая добавка от меня (добавка для Mantis#0000545)  :-)  (в 1.7x тоже есть такое)

3. Открываем большой файл...
    - пытаемся открыть большой файл 
    - появляется месаг загрузки
    - Esc -появляется приглашение прервать это безобразие
    - Esc - отказываемся, т.е. пусть дальше грузиться и... месаг процесса загрузки не появляется
   Для лечения "развернем" функцию CheckForEsc() as is.

svs 04.06.2008 13:36:30 +0300 - build 492

1. Mantis#0000543: Не освобождается память при прерывании операции открытия файла в редакторе
   From: Denis

t-rex + zg 30.05.2008 17:54:32 +0200 - build 491

1. В сборке GCC не осталось предупреждений (не считая -Wno-missing-braces -Wno-unknown-pragmas -Wno-switch).

2. За одно решились (некоторые?) проблемы с выравниванием влияющие на IA64 (FILETIME to __int64).

t-rex 30.05.2008 15:32:02 +0200 - build 490

1. fixed vc build.

zg 30.05.2008 13:40:30 +0200 - build 489

1. убрана ненужная переменная.

2. warnings.

yjh 28.05.2008 21:29:46 +0300 - build 488

1. При копировании с разрешённым созданием symlink'ов и включенным
   Total индикатором - не подсчитывать размер находящегося внутри 
   symlink


drkns 25.05.2008 21:39:36 +0200 - build 487

1. Mantis#0000533 ещё даёт о себе знать.

svs 23.05.2008 20:31:18 +0300 - build 486

1. Mantis#0000537: Menu.Select не позиционирует на Folders в меню фильтров
   добавлен 3-й режим, итого:
     0 - полное совпадение
     1 - совпадение с началом строки
     2 - совпадение с концом строки
     3 - совпадение подстроки в любом месте строки


svs 21.05.2008 20:19:51 +0300 - build 485

1. Mantis#0000527: Сделать необязательным параметр функции WaitKey
   Нашлась бага в парсере... Нужно тестировать!!!
   Если что, не откатываемся, а пытаемся понять причину ;-)

2. Mantis#0000526: Сделать необязательным второй параметр функции clip

3. Mantis#0000532: Недостающие состояния в Редакторе и Просмотрщике
   Для Editor.State и Viewer.State:
     0x08000000 - режим "редактор/вьювер" (FAR запущен с ключами /e /v)
     0x00000800 - модальный редактор/вьювер


drkns 16.05.2008 01:46:34 +0200 - build 484

1. В обработке BOM в юзерменю, добавленной в #480, не учёл, что функция может вызываться рекурсивно,
   в результате разбор вложенного меню зацикливался, а реестр забивался мусором :(

drkns 15.05.2008 19:52:55 +0200 - build 483

1. В некоторых экзотических случаях неправильно работала PartCmdLine - строка делилась на пустую команду с непустым параметром.

2. В некоторых не менее экзотических случаях Фар пытался записать отрицательное количество байт в виртуальный буфер (c предсказуемым результатом).

3. В enum FarDialogSettings добавлены недостающие константы:

   FDIS_DELREMOVESBLOCKS:              "Del удаляет блоки в строках ввода"
   FDIS_MOUSECLICKOUTSIDECLOSESDIALOG: "Клик мыши вне диалога закрывает диалог"

4. Mantis#0000533: Far calculates wrong folder size.

t-rex 12.05.2008 00:41:48 +0200 - build 482

1. Уже виден конец ворнингов.

t-rex 11.05.2008 21:06:17 +0200 - build 481

1. Собираем с GCC 4.3.0 с -Wall (минус пару ворнингов на покамест).
   Уменьшил количество ворнингов с "до хренища" до "до хрена".

2. Mantis#531: hotplug.cpp - два вхождения #pragma hdrstop.

drkns 11.05.2008 20:03:36 +0200 - без билда

1. Прекомпилированные заголовочные файлы для VC.

drkns 03.05.2008 15:35:46 +0200 - build 480

1. Mantis#0000524: При использовании !?<title>?<init>! в диалог запроса параметров попадает мусор.

2. При обработке farmenu.ini byte order mark воспринимался как хоткей 1-го пункта меню.

3. Лишний realloc для DialogItemEx при формировании диалога для !?<title>?<init>!. Падало.

drkns 23.04.2008 19:25:04 +0200 - build 479

1. Древний баг: если при перемещении диалога мышью резко увести её к краю экрана, то диалог до этого края не доедет.

t-rex 19.04.2008 21:05:28 +0200 - build 478

1. Текст из клипборда, содержащий юниксовые окончания строк, пастился в редакторе как одна строка.

drkns 15.04.2008 07:23:53 +0200 - build 477

1. Продолжение эпопеи о дополнительной клавиатуре и включенном по умолчанию TechInfo#48,
   теперь на тему AltShiftIns/AltShiftNum0 в панелях.

drkns 14.04.2008 20:26:46 +0200 - build 476

1. При удалении общего макроса неправильно формировалось имя ключа в реестре,
   вследствие чего удаление макроса работало только в пределах текущей сессии.

2. При назначении макроса на клавишу, которой уже был сопоставлен общий макрос,
   запрашивалось подтверждение удаления общего макроса.

3. Продолжение 441: еще немного соответствия основных и дополнительных курсорных
   клавиш в диалоге результатов поиска, на этот раз home/end/pgup/pgdn.

4. Меню плагинов (F11) уничтожалось позже, чем нужно, вследствие чего оно могло
   отрисовываться и после вызова плагина.

5. Убрано шаманство с DN_EDITCHANGE во враппере - после 464 уже не актуально.

drkns 08.04.2008 23:37:32 +0200 - build 475

1. "Юникодизация" strftime.

2. Mantis#0000506: Когда в данном режиме перемещаешься во второй понели по каталогам - Far часто перерисовывает панели

3. С форума: "Переход к найденному по Alt+F7 файлу не меняет заголовок"

4. Mantis#0000280: Move/Rename папки с заблокированным файлом.
   Самое смешное - в 1.70 beta 4 это так и работало.

5. Не работала макрофункция N=Menu.Select(S[,N]).

t-rex 05.04.2008 23:00:28 +0200 - build 474

1. Ещё раз Mantis#395: Crash in UnicodeString::Format().

svs 03.04.2008 01:30:26 +0300 - build 473

1. Macro: добавлены функции работы с закладками
     N=BM.Del([Idx]) 
       удаляет закладку с указанным индексом (1...), 
       Idx=0 или параметр Idx не указан - удаляет текущую закладку
     N=BM.Get(Idx,M)
       возвращает параметры закладки с индексом (Idx=1...), Idx=0 - текущая закладка
       M=0 - координаты строки (начиная с 1)
       M=1 - координаты колонки (начиная с 1)
       M=2 - позиция, соответствующая первому видимому символу текста на экране слева
       M=3 - номер строки, соответствующей первой видимой строке текста на экране
     N=BM.Stat([M]) 
       возвращает информацию о закладках
       M=0 - текущее количество закладок
       На сейчас параметр роли не играет, можно указывать любое число или не указывать
       параметр совсем. Функция не обозвана как BM.Count так, как предполагается,
       что, если стековые букмарки распространить на вьювер или панели или... то может
       понадобится еще какая нибудь информация.

2. Кое-где, в классах верхнего уровня не передавались параметры vParam и iParam 
   в функции VMProcess низлежащих классов.


ts 01.04.2008 23:31:05 +0200 - build 472

1. Проверка на запись в ECTL_GETSTACKBOOKMARKS

2. Подготовка функций для макросов

svs 01.04.2008 16:23:57 +0300 - build 471

1. Mantis#0000518: Search does not honor Hex mode

svs 31.03.2008 12:31:56 +0300 - build 470

1. Mantis#0000517: перестал работать 'panel.SetPos'
   (from Denis Kosy)

ts 30.03.2008 18:27:35 +0200 - build 469

1. Изменена навигация в начальной и конечной позициях.

2. Исправлен алгоритм добавления позиции навигации.

ts 30.03.2008 14:20:08 +0200 - build 468

1. Теперь нельзя добавить две и более позиций навигации подряд на ту же позицию.

2. ECTL_STATSTACKBOOKMARK переименовано в ECTL_GETSTACKBOOKMARKS.

3. Закончено апи редактора управления позициями навигации: доработаны  комманды
   ECTL_DELETESTACKBOOKMARK (при Param равном -1 удаляет текущую позицию
   навигации, при 0 и более - позицию с указанным индексом) и
   ECTL_GETSTACKBOOKMARKS (Param указывает на заполняемую структуру
   EditorBookMarks или равен NULL, возвращает общее количество позиций).
   Описание всех комманд в Энц.

zeroes 29.03.2008 18:33:17 +0200 - build 467

1. Не срабатывали некоторые макросы (например повешенный на CtrlLeft)
проблема была из-за того что использовался KEY_MASKF вместо KEY_FKEY_BEGIN

ts 29.03.2008 17:21:57 +0200 - build 466

1. Добавлена коррекция позиций в стековых закладках при удалении и вставке строк.
   При удалении строки в позиции закладки происходит удаление этой закладки.

2. В апи редактора добавлены новые команды управления позициями навигации:
   ECTL_DELETESTACKBOOKMARK, ECTL_STATSTACKBOOKMARK для удаления указанной
   (пока что только текущей) закладки и получения информации о закладках
   (пока что заглушка).

t-rex 29.03.2008 09:26:14 +0200 - build 465

1. Panel API: Флаги PFLAGS_PANELLEFT и PFLAGS_PANELRIGHT.

t-rex 28.03.2008 13:10:48 +0200 - build 464

1. При GETDLGITEM возвращалась начальная а не текущая строка для эдитов.

2. От Alexey Samlyukov: В настройках неправильно читалось время для screen saver.

svs 27.03.2008 18:03:22 +0300 - build 463

1. Macro: добавлена макрообласть "Consts" для хранения именованных констант.
   Константы располагать в ветке реестра "KeyMacros\Consts". Синтаксис аналогичен "Vars", т.е.
   Код:
   KeyMacros\Consts
     "StringName":REG_SZ
     "IntName":REG_DWORD
   Имена констант произвольные, начинающиеся с буквы...
   Константы аля "ShiftIns" не имеют право на жизнь (хотя "ShiftIns1" допустим для имени)

   Вот вполне работоспособный макрос с использование константы FIB_PASSWORD.

   [HKEY_CURRENT_USER\Software\Far\KeyMacros\Consts]
   "FIB_PASSWORD"=dword:00000002
   [HKEY_CURRENT_USER\Software\Far\KeyMacros\Editor\CtrlP]
   "Sequence"="%s=prompt(\"Password\",\"Input password:\",FIB_PASSWORD); $Text %s"
   "DisableOutput"=dword:00000001

   Константы ФАР считывает из реестра при старте и хранит в таблице glbConstTable
   Т.к. это константа, то ее наличие можно только проверить функцией checkMacroConst()

2. Переделаем функцию varLook. Было так, что она всегда добавляла переменную, даже если
   параметр ins = 0. В ней тек же удален параметр error. Вместо этого функция возвращает
   ссылку или NULL. В связи с этим переделки в макроисполняторе.


drkns 26.03.2008 10:19:23 +0200 - build 462

1. Mantis#0000510: Тип FarDialogEvent.Result должен быть PLONG_PTR, а не LONG_PTR
   Result оставлен LONG_PTR, но теперь содержит само значение, а не указатель на него.
   Вроде бы ещё никто не успел использовать это в плагинах :)

t-rex 25.03.2008 23:41:53 +0200 - build 461

1. Оптимизация Editor::GoToLine ибо уж полный ужас был.

t-rex 25.03.2008 21:25:42 +0200 - build 460

1. Mantis#499: Invalid file handle used in ShellCopy::ShellCopyFile().

2. Mantis#395: Crash in UnicodeString::Format().

3. Мешанина пробелов и табов в panel.cpp.

4. От Denis Kosy Mantis#505: Необрезание строк в некоторых VMenu.

5. syntax.cpp: не собирался (как минимум) в VC8.

svs 25.03.2008 21:51:35 +0300 - build 459

1. Macro: добавлен Editor.RealPos - текущая поз. в редакторе без привязки к размеру табуляции

2. Macro: функция S=prompt("Title"[,"Prompt"[,flags[, "Src"[, "History"]]]])
   Mantis#0000512: N = prompt(Title, Text, Flags)
   Описание в Энц.

svs 25.03.2008 18:34:01 +0300 - build 458

1. Уточнения в panel.SetPath и опциональных параметров

svs 25.03.2008 16:54:07 +0300 - build 457

1. XXX::SetCurDir - функция возвращает BOOL - удачно или неудачно сделан переход

2. Macro: Добавилась функция -  N=panel.SetPath(panelType,pathName[,fileName])
   установить на панели каталог pathName, опционально можно указать имя файлового объекта (для курсора, как в panel.SetPos)

3. Макродвижок приведен к функционалу 1.7x:
   a) добавлены недостающие функции и операторы
       N=Menu.Select(S[,N])
       N=mod(a,b) == a %  b
       S=replace(sS,sF,sR[,Count])

   б) выставлена приоритизация операций:

       Унарные (R->L):          !  ~  -
       Бинарные арифметические: * /
       Бинарные арифметические: + -
       Сдвиг:                   << >>
       Сравнение:               < <= > >=
       Сравнение:               == !=
       Битовая:                 &
       Битовая:                 ^
       Битовая:                 |
       Логическая:              &&
       Логическая:              ||


4. Некоторые макро-функции могут иметь опциональные параметры
     S=itoa(N[,radix]) - здесь, если radix не указан, подразумевается 10
     N=Menu.Select(S[,N]) - здесь N подразумевается = 0
     N=panel.SetPath(panelType,pathName[,fileName]) - здесб пустая строка
     S=replace(Str,Find,Replace[,Cnt]) - Cnt=0 => до бесконечности
     S=substr(S,N1[,N2]) - до конца строки
     + msgbox - последний параметр (флаги) могут быть опущены, подразумевается 0

   Для этого в структуре __TMacroFunction добавлен параметр oParam.
   В интерфейсе параметры можно опускать, в коде они добиваются PushInt(0)


drkns 25.03.2008 07:15:18 +0200 - build 456

1. Mantis#0000004: DI_EDIT в Message для полей с именами файлов.
   Message теперь "умный": если строка длиннее, чем влезает - она кладётся в DI_EDIT, иначе - как раньше.
   Соотвественно, при вызовах Message убраны TruncPathStr.

2. Mantis#0000080: Перемещение символической связи на другой диск.

zg 25.03.2008 02:15:01 +0200 - build 455

1. при TabSize=1 ShiftTab вначале строки приводил к отрицательной текущей колонке.

t-rex 22.03.2008 21:33:34 +0200 - build 454

1. DM_LISTINSERT возвращал не то что в енц. описано.

2. Ещё заметил один глюк и потенциальный глюк рядом.

svs 20.03.2008 18:22:21 +0300 - build 453

1. Добавлен Disable цвет для пред. билда и изменены наименования пунктов меню в настройке цвета
   Итого размер палитры ФАРа = 0x7F байт

2. В History/Combobox стрелки отображались цветом меню - жлбавим флаг VMENU_COMBOBOX


svs 17.03.2008 20:23:22 +0300 - build 452

1. Mantis#0000498 - Screen scrolling arrows colors for Menu/Listbox/Combobox
   Добавлены цвета, связанные со стрелками:
     COL_DIALOGLISTARROWS,
     COL_DIALOGLISTARROWSSELECTED,
     COL_DIALOGCOMBOARROWS,
     COL_DIALOGCOMBOARROWSSELECTED,
     COL_WARNDIALOGLISTARROWS,
     COL_WARNDIALOGLISTARROWSSELECTED,
     COL_WARNDIALOGCOMBOARROWS,
     COL_WARNDIALOGCOMBOARROWSSELECTED,
     COL_MENUARROWS,
     COL_MENUARROWSSELECTED,

2. Добьем '>' - выкинут лишний кусок по расчету новой длины строки, немного оптимизации.

3. Макросы зависили от раскладки клавиатуры

drkns 17.03.2008 07:36:28 +0200 - build 451

1. Уточнение в отрисовке '>' при прокрутке строк VMenu.

t-rex 16.03.2008 23:39:26 +0200 - build 450

От Denis Kosy:

1. Mantis#497: Строки с масками файлов обрезаются на 60/78 символах.
   Поскольку теперь постоянно включен режим прокрутки (ex-CtrlN), строку уже можно не резать.

t-rex 15.03.2008 19:49:48 +0200 - build 449

От Alexey Samlyukov:

1. Ошибка в математике при отрисовке '>' (для длинных пунктов) в меню.

t-rex 15.03.2008 17:47:09 +0200 - build 448

1. Mantis#87: Копирование и жёсткие связи.

svs 15.03.2008 17:48:39 +0300 - build  447

1. Ctrl-N в списках убираем (http://forum.farmanager.com/viewtopic.php?f=3&t=3130)

drkns 15.03.2008 15:53:04 +0200 - build 446

1. Mantis#0000222: Не вполне корректная работа (или не работа) с потоками, привязанным к директориям.
   Тут потоки в общем не при чём, дело в обработке путей "\\?\c:\" и "\\?\Volume{GUID}\".
   Заодно поправил еще пару мест c этими путями.

t-rex 15.03.2008 13:41:32 +0200 - build 445

1. Mantis#467: Не пускает на плагинную панель; неправильные элемены панели.
   Исправил, но нифига не понимаю :)

t-rex 14.03.2008 19:16:30 +0200 - build 666-666/3

1. Mantis#458: Из истории папок запускается плагин с 1-буквенным префиксом.

t-rex 14.03.2008 17:23:28 +0200 - build 443

1. Mantis#463: Текущая папка процесса не меняется из юзер меню и отличается от активной панели.
   Во первых юзер меню сам переходил по папкам хотя это там нафиг не надо было,
   а во вторых был совершенно не нужный AI с восстановлением пути.
   Просто всё удалил (и ещё мусор который под руку попался).

2. От Denis Kosy: Mantis#493: Execute поломалась.

3. От Alexey Samlyukov: "" -> L"" в hilight.cpp.

svs 14.03.2008 00:18:12 +0300 - build 442

1. Bug в UserMenu.
   а) UserMenu пустое.
      - F2
      - AltF4
      - в редакторе вставляем из клипборда/набираем пункты руками.
      - F2
      - Esc
      Меню по прежнему пустое
   б) В UserMenu есть пункты.
      - F2
      - AltF4
      - в редакторе видим аля "неправильный юникод"
   Решение.
   При открытии UserMenu во встроенном редакторе в качестве кодовой страницы
   выставляем принудительно Unicode и никакого автоопределения.

2. При выставленном TTF-шрифте для консоли симолы указывающие на подменю в UserMenu
   представлены квадратами.
   usermenu.cpp::SubMenuSymbol[1] ==> Unicode символ 0x25BA.

drkns 13.03.2008 19:18:08 +0200 - build 441

1. Mantis#0000462: !=\ изменила поведение

2. Mantis#0000469: Ошибочное сообщение "Длина имени файла превышает системные ограничения"

3. Переполнение буфера в ConvertNameToReal()

4. Macro: в [panel.]fattr|fexist не работала подстановка * и ?.

5. В UserMenu, MainMenu и окне поиска по-разному вели себя курсорные клавиши на основной и доп. клавиатуре.

t-rex 13.03.2008 15:00:43 +0200 - build 440

От Denis Kosy:

1. Mantis#492: FindFile results window теряет информацию.

svs 13.03.2008 14:20:19 +0300 - build 439

1. От Denis Kosy: Mantis#0000491: макро panel.fexist не работает.

t-rex 12.03.2008 23:55:03 +0200 - build 438

1. От Alexey Samlyukov: wrapper: FarInputBoxA в отличии от 1.7х выставлял DestText даже если отменили диалог.

2. Не работало копирование (и т.п. операции) в плагины c выставленным OPIF_REALNAMES (TmpPanel например).

t-rex 12.03.2008 15:24:39 +0200 - build 437

От Andrey Kuznetsov:

1. Mantis#459: Невозможно войти в каталог, если имя состоит из одной буквы.
   Специфичный баг Win2K SP4.

svs 12.03.2008 14:24:00 +0300 - build 436

1. В диалоге фильтров нажать Reset - в комбобоксах размера и даты видим символ '&'
   Введем Edit::SetHiString(), аналог HiText2Str.

t-rex 12.03.2008 11:28:17 +0200 - build 435

1. Mantis#489: Crash in ConvertPanelItemA()
   pItemsNumber посланый плагину в GetFindData не обнулялся а некоторые
   плагины (network) возвращают TRUE ничего не выставив (типа пустая папка).

svs 12.03.2008 11:42:45 +0300 - build 434

1. После 431 "сломалась" навигация по раскраске в диалоге FileFilterConfig

2. Если в при вызове диалога фильтра/раскраски/сортировки второй параметр ColorConfig равен true
   то меняем заголовок диалога и подставляем нужный топик хелпа, относящийся не к фильтрам, а к раскраске.

t-rex 12.03.2008 00:36:38 +0200 - build 433

1. Расширяем UnicodeString:
   bool Pos(size_t &nPos, wchar_t Ch, size_t nStartPos=0)
   bool Pos(size_t &nPos, const wchar_t *lpwszFind, size_t nStartPos=0)
   bool RPos(size_t &nPos, wchar_t Ch, size_t nStartPos=0)
   bool Contains(wchar_t Ch, size_t nStartPos=0)
   bool Contains(const wchar_t *lpwszFind, size_t nStartPos=0)

2. Выставил const для ещё пару методов в UnicodeString.

3. Заюзал новый Pos в одном месте и ещё пару мелочей.

t-rex 11.03.2008 22:51:56 +0200 - build 432

1. Небольшая оптимизация HiText2Str().

svs 11.03.2008 21:01:02 +0300 - build 431

1. Macro: клавиша вызова наследуется из основного макроса при вызове eval()
   для этого у функции KeyMacro::PostNewMacro() добавлен новый параметр - клавиша вызова.
   например ('y' - клавиша назначения),
     y=eval("< $AKey >")
   теперь печатает "<y>" (было '<>')

2. Macro: V=akey(N) - функция возвращает имя или код клавиши, инициировавшей макрос.

3. Macro: Bug: если в макропоследовательности есть только 1 "клавиша", отличная от набираемых на клавиатуре
   (например, $AKey), то такой макрос ничего не делает (точнее может делать все, что угодно).
   Это остатки (недопеределки) предыдущих изысканий из области сокращения объемов памяти
   (было - если клавиша одна, то память не выделяется, а Buffer считается не как указатель на массив DWORD`ов,
   а как значение DWORD).

4. Dialog: bug: когда в комбобоксах применяются хоткеи, в строку редактирования символ '&' тоже попадает.

5. Фильтры: в конце filefilterparams.cpp::MenuString() сделаем обрезание концевых пробелов.

6. API: добавлены флаги: FMENU_TRUNCPATH, FMENU_TRUNCSTR, FMENU_TRUNCSTREND.
   Показывают как нужно обрезать выводимый на экран пункт меню. Оригинальный текст пункта не изменяется.

7. В любом объекте, основанном на VMenu действуют клавиши
     Ctr-N - включить/выключить режим обрезания выводимых итемов списка
     Alt-Home/Alt-End - прокрутка всех элементов списка по горизонтали в начало/конец
     Alt-Left/Alt-Right - прокрутка всех элементов списка по горизонтали влево/вправо на 1 символ
     Alt-Shift-Left/Alt-Shift-Right - прокрутка текущего элемента списка по горизонтали влево/вправо на 1 символ

    TODO: ОТКРЫТЫЙ ВОПРОС ПРО Ctrl-N !!!

8. Mantis#0000264: Недочёты диалога редактирования группы раскраски
    1. изменен tab-ордер задаваемых цветов
    2. добавлены горячие клавиши в комбобоксах Size и Data/Time.

9. Добавлены функции
     wchar_t* WINAPI TruncStrFromEnd(wchar_t *Str,int MaxLength)
      (по аналогии с TruncStr и TruncPathStr)
   и
     string& HiText2Str(string& strDest, const wchar_t *Str)
      (аналог HiText(), но вывод в строку)

10. Возможно с LIF_USETEXTPTR перебор вышел...
    возможно этот флаг ненужно было тянуть из 1.7x


t-rex 11.03.2008 11:17:36 +0200 - build 430

1. Mantis#488: Crash in GetRegKey()
   в общем просто неправельный вызов из PrepareTable().

2. Mantis#468: Закрытие быстрого просмотра папок вызывает VE_CLOSE (без VE_READ)
   Тут типа 2 бага:
   1. То что qview вообще создаёт объект въювера при просмотре папки.
   2. То что в деструкторе посылается VE_CLOSE хотя никакого файла открыто небыло.

t-rex 10.03.2008 22:39:06 +0200 - build 429

1. Mantis#487: Memory under FAR_FIND_DATA is removed twice
   Тока там всё хуже было, фар нагло освобождал плагиновую память и свою подсовывал.

t-rex 10.03.2008 21:47:59 +0200 - build 428

1. От Alexey Samlyukov: Mantis#486: Баг в Dialog::ProcessLastHistory - не подставлялось значение из истории.

2. В связи с 1 нашелся ещё баг в UnicodeString, если в кратце то возможное чтение из недоступной памяти при
   str = (const wchar_t *)str;
   str += str;

3. Заодно ещё немного форматирования табами.

4. Обновил немного "readme".

t-rex 09.03.2008 23:11:42 +0200 - build 427

from Alexander Mitin

1. Mantis#484: Memory corruption in GetPathRootOne().

t-rex 09.03.2008 14:35:11 +0200 - build 426

1. Грузились все плагины подряд даже когда не надо.
   К примеру колорер загружался при открытии въювера, диалогов и архивов :)

2. Кэш всех плагинов читался тока из первой записи кэша из за чего плагины
   могли тупо не грузится пока их не вызвать из меню плагинов, а в некоторых
   случаях не грузится вообще (особенно с фиксом 1 :).

drkns 09.03.2008 12:28:26 +0200 - build 425

1. Обнаружены чудеса: wcsncat(dst,src,sizeof(dst)-1)
   На всякий случай: 3-й параметр в wcsncat - это "сколько дописываем", а не "сколько влезает".
   Во всех подобных местах wcsncat заменена на xwcsncat, где 3-й параметр уже таки размер приёмника-1.

2. Комбобокс, открытый по Alt-Hotkey, при закрытии получал DN_EDITCHANGE
   с параметрами предыдущего фокусного элемента.

3. В открытый комбобокс не приходили события от мыши.

4. Мелкий баг в диалоге задания макрокоманды.

t-rex 09.03.2008 12:23:43 +0200

1. Конфликты хоткеев в диалоге фильтров (анг).

t-rex 09.03.2008 11:38:53 +0200 - build 424

От Dmitry Ovdienko:

1. Mantis#483: Undefined behavior in Search window.

t-rex 08.03.2008 19:21:05 +0200 - build 423

От Alexey Samlyukov:

1. Mantis#439: Cancel after Ctrl+G should not update the panels.

t-rex 08.03.2008 15:51:50 +0200 - build 422

От George Yohng:
1. Mantis#475: Отображение заголовка панели ЗАГЛАВНЫМИ буквами даже когда директорий не заглавный.

warp 02.03.2008 17:50:00 +0300 - build 421

1. Так, постебаться. Исправил недопоказ плагинов в меню дисков.

t-rex 25.02.2008 01:28:29 +0200 - build 420

От Stanislav Vinokurov:

1. Mantis#436: PrepareExecuteModule() bug(s)

zg 20.02.2008 19:27:59 +0200 - build 419

1. hotplug devices list. при удалении подряд нескольких устройств - визуальные глюки.

drkns 12.02.2008 22:41:34 +0200 - build 418

1. Mantis#0000464: В панелях F10 F1... появляется "Requested help topic not found:"

2. Для плагинов не вызывался ExitFAR при выходе.

3. Уточение в отрисовке открытого комбобокса.

4. Мелкие правки во враппере.

svs 30.01.2008 01:38:39 +0300 - build 417

1. В headers.hpp закомменчен "#include <crtdbg.h>" - кому надо - ставьте "#if"
   в зависимости от компилятора. MSVC (по крайней мере у меня) и без этого
   компилит.

2. Mantis#0000460: Add support of FILE_ATTRIBUTE_VIRTUAL
   "временно" патч принимается.
   "временно" - потому, что диалог фильтра не вмещается в 25 строк.
   нужен редизайн диалога фильтра - это отдельная песня.

3. Букмарки в редакторе... перенесены в макросы:
     N=BM.Add()
     N=BM.Clear()
     N=BM.Next()
     N=BM.Prev()
     N=BM.Stat()
   Причем...
   а) нужно доработать математику "BM.Stat()" (что-то типа StatStackBookmark())
   б) "BM.XXX" в принципе может быть не только "редактор" :-)
   d) Хмм... индикацию, опять же... стекового букмарка...

4. Хмм... трабла? откуда?
   В панелях F10 F1... появляется "Requested help topic not found:"
   Таки Хто?

Zuz 25.01.2008 23:11:21 +0500 - build 416

1. Mantis#000337, Mantis#0000176 refix
2. Двойное обновление панели после CTRL-Z.

ts 23.01.2008 15:32:27 +0200 - build 415

1. Добавлена поддержка навигации а-ля браузер в редакторе: Ctrl-<Gray Enter> сохраняет
   позицию навигации, Ctrl-<Gray -> и Ctrl-<Gray +> переход на следующую и предыдущую
   позиции навигации.
2. В апи редактора добавлены команды управления позициями навигации: ECTL_ADDSTACKBOOKMARK,
   ECTL_PREVSTACKBOOKMARK, ECTL_NEXTSTACKBOOKMARK, ECTL_CLEARSTACKBOOKMARKS для добавления
   позиции навигации, переход к предыдущей, следующей позициям навигации и очистка списка
   навигаций.

drkns 18.01.2008 23:48:39 +0200 - build 414

1. Враппер:
   - Изменена логика хранения массивов структур FarDialogItem и oldfar::FarDialogItem,
     а также конветрирования одного в другой. Теперь (по идее) корректно и без утечек
     обрабатываются DM_GETDLGITEM и прочие сообщения, передающие плагину FarDialogItem.

   - в макросы EXECUTE_FUNCTION/EXECUTE_FUNCTION_EX (pluginA.cpp) добавлена SetFileApisToOEM();

   - добавлен "режим совместимости" - возможность задать версию FAR, возвращаемую в
     ACTL_GETFARVERSION - как оказалось, не все плагины понимают, что 1.80 > 1.70 :-)
     Берётся из \software\far18\wrapper\version, REG_DWORD, формат - как в MAKEFARVERSION.
     Скручивать можно только в меньшую сторону, от текущей версии до 1.70.1.

2. Язык интерфейса периодически сбрасывался на английский.

3. Уточнение в plugin.hpp.

drkns 15.01.2008 19:50:26 +0200 - build 413

1. Враппер:
   - уточнения в DM_LISTGETCURPOS и DM_GETSELECTION;
   - MB_USEGLYPHCHARS был нужен не везде;
   - прочие мелкие правки.

2. В DialogItemEx инициализировались не все поля (в 1.7x это делал memset),
   что при определенных обстоятельствах было чревато падениями.

3. Лишний инкремент количества строк в редакторе при вставке новой строки.

4. gcc warnings.

svs 15.01.2008 14:44:11 +0300 - build 412

1. Mantis#0000425: Add support of FILE_ATTRIBUTE_OFFLINE attribute

2. Добавлен FILE_ATTRIBUTE_VIRTUAL
   Пока что для отображения. Если "нада" - делать изменения по аналогии c FILE_ATTRIBUTE_OFFLINE...
   ..типа ID_FF_VIRTUAL и еже с ним...
   ...если кто объяснит как ЭТО УВИДЕТЬ!

3. Немного добавок в syslog.cpp
   + IO_REPARSE_TAG_* в headers.hpp

4. Не работают хоткеи при русской раскладке (с альтом работают).
   See Dialog::IsKeyHighlighted()

drkns 14.01.2008 19:43:11 +0200 - build 411

1. Враппер:
   - от Tim Sobolev: правильная обработка DI_USERCONTROL;
   - более корректная обработка нескольких одновременно открытых диалогов;
   - не работал DM_LISTDELETE;
   - при преобразовании OEM->Unicode используется флаг MB_USEGLYPHCHARS.
   - прочие мелкие правки.

Zuz 12.01.2008 01:52:26 +0500 - build 410
1. Ещё немного снижены требования к правам (Mantis#0000453).

2. В FindFiles::LookForString замена libc API для файловых операций на WIN32 API.


drkns 11.01.2008 11:12:03 +0200 - build 409

1. Враппер:
   - добавлена ConvertNameToRealA.
   - уточнения в ConvertKeyBarTitlesA, FarMenuFnA и FCTL_GET[ANOTHER]PANEL[SHORT]INFO.
   - DN_* -> oldfar:DN_.
2. Не работал QuickView на плагиновой панели.

svs 11.01.2008 11:48:41 +0300 - build 408

1. Mantis#0000456: Функция ConvertNameToReal не работает для симлинков
   уточнение

svs 09.01.2008 20:53:11 +0300 - build 407

1. Mantis#0000447: Buffer overrun in Edit:ProcessKey()
   "патч на патч"

svs 09.01.2008 19:54:42 +0300 - build 406

1. Mantis#0000456: Функция ConvertNameToReal не работает для симлинков
     Функция ConvertNameToReal не работает для симлинков, т.е. вместо полного пути с
     развёрнутыми симлинками (в случае их наличия) возвращает мусор.

     Что сделано:
     1. В функции ConvertNameToReal исправлена работа с симлинками (ошибки портирования);
     2. Функция ConvertNameToReal не учитывала возможность существования вложенных симлинков,
        т.е. она завершала свою работу после нахождения первого с конца пути симлинка
        (насколько я понимаю, ошибка перетянута из линейки 1.7x, так что неплохо было бы
        фикс портировать и туда).

   От себя добавил приведение к int (у GetBuffer параметр = int)

2. Mantis#0000455: Fix in GetWindowText

ts 07.01.2008 12:25:13 +0200 - build 405

1. В OpenPluginInfo теперь передается полная информация из старых плагинов, во
   враппер добавлены сопутсвующие функции.
2. Во враппер добавлена функция ArrayAnsiToUnicode для преобразования в юникод
   массива строк, конец массива помечается элементом-маркером, при удалении созданного
   массива с помощью FreeArrayUnicode не нужно указывать его размер.
   Рекомендуется использовать эту функцию во всех встречающихся местах.
3. Поправлено отладочный билд, сломанный в 402

ts 07.01.2008 21:02:07 +0200 - build 404

1. Во wrap.cpp добавлены функции OldKeyToKey и KeyToOldKey для перевода внутренних
   кодов клавиш FAR со старого формата в новый и обратно.
2. В KeyNameToKeyA и FarKeyToNameA добавлено коррекцию кода клавиши.
3. Доработаны (возможно) ECTL_PROCESSINPUT, ECTL_PROCESSKEY, ECTL_READINPUT.
4. Добавлена заглушка FarCharTableA.

t-rex 07.01.2008 08:31:08 +0200

1. Правки индентации во врапере, без билда.

ts 07.01.2008 06:45:38 +0200 - build 403

1. Поправлена передача флагов во враппере для FarStandardFunctions:
   a. FarRecursiveSearchA
   b. ProcessNameA
2. Во враппер добавлена функция AnsiToUnicodeBin для преобразования в юникод
   символов из буфера заданной длины (см. UnicodeToAnsiBin).
3. В функции UnicodeToAnsiBin увеличено размер выделяемой под результирующую
   строку памяти на байт для нормальной работы старых плагинов, считающих что
   строка всегда завершается нулем (например в EditorGetString.StringText).
4. Изменена логика обработки команд доступа к АПИ редактора во враппере
   (функция FarEditorControlA), заменена обработка команд:
   a. ECTL_SAVEFILE, ECTL_SETKEYBAR, ECTL_SETTITLE - полностью.
   b. ECTL_PROCESSINPUT, ECTL_PROCESSKEY, ECTL_READINPUT - временно, в работе.
   d. ECTL_SETPARAM - полностью, кроме заглушки на команду ESPT_CHARTABLE в
                      силу отсутствия обработки в самом фаре.
                      А для команды ESPT_GETWORDDIV в самом фаре пора бы
                      использовать Reserved2 для передачи длины принимающего
                      буфера.
   e. ECTL_SETSTRING - непонятно что подразумевалось под "Помещаемая строка
                       должна быть в кодировке редактора", считаем что строка
                       была в ОЕМ (как результат ECTL_GETSTRING).

   Теперь работают все АПИ вызовы редактора кроме ECTL_EDITORTOOEM и ECTL_OEMTOEDITOR

   Не забываем во враппере правильно передавать флаги, в юникодовой ветке у них часто
   другие значения!

drkns 06.01.2008 14:57:04 +0200 - build 402

1. Новые псевдоклавиши MsWheelLeft и MsWheelRight - горизонтальная прокрутка колеса мыши (для Vista и выше).
   В TI#33 добавлены параметры MsHWheelDelta*.

svs 05.01.2008 19:19:19 +0300 - build 401

1. По аналогии с Mantis#0000414 "починем" хэндлы файлов в поисковике и вьювере

2. Mantis#0000453: При поиске файлов с учетом содержимого файлы открываются с запросом прав на изменение
   (тянет еще аж с 1.65...)

3. Небольшое уточнение в registry.cpp::MkKeyName - RegMon`у не нравится... например, такое: "HKCU\\Console"


ts 05.01.2008 11:39:30 +0200 - build 400

1. Changes in wrapper messages handling for listbox and combobox.

t-rex 04.01.2008 18:07:50 +0200 - build 399

1. From Hannes Eder (and some changes from me): remove redundant definition of GetFileDateAndTime from setattr.cpp.

2. Mantis#445: Makefiles have no -mno-cygwin switch.

drkns 31.12.2007 20:03:57 +0200 - build 398

1. Некорректная работа GetPathRoot() для относительного пути внутри симлинка.

2. При вызове меню плагинов из диалогов не выставлялась соответствующая макрообласть.

3. В диалог подтверждения перезаписи файла добавлена кнопка "Append all".

4. Mantis#0000023: ConsoleAlias. Работает в комстроке и меню пользователя.
   Поддерживается стандартный спецсимвол $*. Управлять этим делом можно с помощью doskey.

5. Из 1.7 перетащено наследование от региональных настоек системы разделителей
   групп разрядов и целой/дробной части чисел.

6. TechInfo #78:
   [HKEY_CURRENT_USER\Software\Far\Interface]
   "FormatNumberSeparators":REG_DWORD
   Параметр  "Interface/FormatNumberSeparators"  с  типом  DWORD  позволяет
   определять символы,  используемые в качестве разделителей групп разрядов
   и целой/дробной части чисел.
   Старшее слово - код символа для разделителя групп разрядов.
   Младшее слово - код символа для разделителя целой и дробной части.
   По умолчанию значение - 0 (использовать региональные настройки ОС).

7. Добавлена команда ACTL_REDRAWALL - перерисовка всех фреймов фара.

svs 28.12.2007 13:39:19 +0300 - build 397

1. Mantis#0000452: Bug, doubling code and improvements in hotplug.cpp

svs 23.12.2007 16:14:14 +0300 - build 396

from Alexey Samlyukov:

1. memcpy()/wmemcpy() + прочая уникодная мелочь + убраны анахронизмы (#if defined(FAR_ANSI)), может и зря..

svs 23.12.2007 15:54:37 +0300 - build 395

1. Mantis#0000447: Buffer overrun in Edit:ProcessKey()

2. Mantis#0000446: Wrong function to free memory in TreeList::SaveState()

3. Mantis#0000449: Handle leak in History::ReadHistory()

4. Mantis#0000444: Bugs and memory leaks in class History

5. Mantis#0000441: Cannot delete file "Descript.ion"
   Здесь в panel.hpp было неправильное определение виртуальной функции GetDizName().
   Поэтому в ShellDelete() конструкция SrcPanel->GetDizName(strDizName); возвращала...
   да ничего она не возвращала!

yjh 15.12.2007 00:54:56 +0300 - build 394

1. Доделка фильтров "исключения" при поиске (Alt-F7) в отношении каталогов.
   Теперь поведение фильтров такое же как в копировании, т.е. если включена
   фильтрации и в списке есть "запрещающий" (-) фильтр, то когда под его
   действие попадает каталог пропускается не только сам каталог, но и всё
   что находится в нём (и его подкаталогах). Разумеется, это верно только при
   выключенном D+ :)


svs 15.12.2007 00:35:38 +0300 - build 393

1. Неправильно сохранялись макросы, содержащие буквы, оличные от латиницы.
   По этому поводу:
   а) уточнение в KeyNameToKey и KeyToText;
   б) в KeyMacro::ReadMacros юзалась не та функция GetRegKey().

drkns 14.12.2007 21:59:01 +0200 - build 392

1. Меню плагинов можно вызывать по F11 из диалогов.
   Чтобы попасть в это меню, плагин должен установить флаг PF_DIALOG в PluginInfo.Flags.
   Вызванный плагин получает следующие параметры в OpenPlugin():
   - OpenFrom: OPEN_DIALOG
   - Item: указатель на структуру OpenDlgPluginData:
     struct OpenDlgPluginData
     {
      int ItemNumber; //номер выбранного пункта в меню из зарегистрированных плагином пунктов
      HANDLE hDlg;    //хэндл диалога, из которого вызван плагин
     };

2. Плагин может экспортировать ProcessDialogEvent для обработки поступающих в диалог событий:
   int ProcessDialogEvent(int Event, void* Param)
   Event:
    DE_DLGPROCINIT - событие поступает в обработчик
    DE_DEFDLGPROCINIT - событие поступает в стандартный обработчик
    DE_DLGPROCEND - событие уже обработано

   Param - указатель на структуру FarDialogEvent:
   struct FarDialogEvent
   {
    HANDLE hDlg;
    int Msg;
    int Param1;
    LONG_PTR Param2;
    LONG_PTR Result;
   };

   return:
   - TRUE - событие обработали сами, не продолжать обработку.
     FarDialogEvent.Result - указатель на переменную, используемую обработчиком
     в качестве возвращаемого значения.
   - FALSE - продолжить обработку события.

svs 14.12.2007 13:45:16 +0300 - build 391

from Alexander Mitin

1. Mantis#0000432: Assertion while creating a submenu in User Menu

2. Mantis#0000431: Crash when deleting the File Highlighting entry

3. Mantis#0000430: Crash in "Системные параметры"


svs 13.12.2007 20:31:34 +0300 - build 390

1. Mantis#0000433: Updated operator new in new.cpp

2. Mantis#408: Memory leak in struct MacroState.
    тыкс... перебор вышел с Work.locVarTable :-(
    Сам "Work.locVarTable" нужно удалять только в деструкторе.
    В остальных случаях - только содержимое таблицы.

3. API: Команда MCMD_GETSTATE для ACTL_KEYMACRO,
    возвращает одно из значений (перечисление FARMACROSTATE):
      enum FARMACROSTATE {
        MACROSTATE_NOMACRO          =0,  // не в режиме макро
        MACROSTATE_EXECUTING        =1,  // исполнение: без передачи плагину пимп
        MACROSTATE_EXECUTING_COMMON =2,  // исполнение: с передачей плагину пимп
        MACROSTATE_RECORDING        =3,  // запись: без передачи плагину пимп
        MACROSTATE_RECORDING_COMMON =4,  // запись: с передачей плагину пимп
      };

4. Попытка исправить
   Mantis#0000432: Assertion while creating a submenu in User Menu
   Mantis#0000430: Crash in "Системные параметры"

svs 10.12.2007 21:22:18 +0300 - build 389

1. Mantis#0000428: Вновь DI_COMBOBOX
   Отсутствовала проверка на тип элемента.

2. Mantis#0000429: Не очищается и не сохраняется кеш директорий

3. Macro: BOF, EOF, EMPTY и SELECTED не обрабатывались в ком.строке

4. Mantis#0000415: произошли какие-то непонятные изменения в DI_COMBOBOX
   (сломалось в 306)

5. API: пусть OPEN_FILEPANEL будет официальным, а не спрятанным.

t-rex 08.12.2007 23:40:46 +0200 - build 388

От Stanislav Vinokurov:

1. Mantis#411: Batch files are executed in the external window.

t-rex 08.12.2007 17:55:02 +0200 - build 387

1. Mantis#416: Crash while deleting folders
   Это в общем более глубокая проблема была, глюк был в UnicodeString,
   размер буффера рос при операциях для которых его рост был не нужен и при многих
   операциях над одной и той же строкой буффер вырастал до нереальных значений.

2. Mantis#408: Memory leak in struct MacroState.

3. Коррупция хипа при удаление несуществующих макросов.

4. Некорректное сохранение REG_MULTI_SZ макросов.

5. From Hannes Eder: StrLength in clipboard.cpp.

6. Потенциальные коррупции хипа и за неправильного не/использование sizeof(wchar_t) в паре мест.

7. От Alexey Samlyukov: wmem* вместо mem* в strmix.cpp.

t-rex 07.12.2007 16:36:54 +0200 - build 386

1. Mantis#421: Memory leak caused by using memset() to initialize values of structures.

svs 06.12.2007 18:45:06 +0300 - build 385

1. 2 новых эвента для панельного плагина: FE_GOTFOCUS и FE_KILLFOCUS
   Параметр Param для ProcessEvent равен NULL.
   В соответствии с этим переделан механизм (очередность) посыла событий - сначала Gotfocus, а потом остальное.
   Для этого в SetPluginMode() добавлен параметр SendOnFocus

2. В диалогах, сразу после DN_INITDIALOG приходит DN_GOTFOCUS для того элемента, который Focus=1

3. 2 новых эвента для редакторного плагина: EE_GOTFOCUS и EE_KILLFOCUS
   Параметр Param для ProcessEditorEvent равен EditorID.
   Для этого в класс FileEditor добавлена virtual функция OnChangeFocus.


svs 06.12.2007 13:31:33 +0300 - build 384

1. Mantis#0000417: Memory leak in Viewer::ProcessKey()

2. Mantis#0000418: Wrong memory copy function used in TArray<Object>::Pack()

3. Mantis#0000419: Wrong memory copy function used in ScreenBuf::Scroll(int Num)

4. Mantis#0000420: INVALID_HANDLE_VALUE used in FindClose() in ScanTree::GetNextName()


svs 05.12.2007 17:29:24 +0300 - build 383

1. Mantis#0000414: Handle leak in FileEditor::LoadFile()

2. Mantis#0000412: Wrong delete type in Language::Init()

3. Mantis#0000413: Wrong delete type in FileEditor::SaveFile()


t-rex 04.12.2007 23:41:54 +0200 - build 382

1. Различные глюки - по большому кривое использование sizeof в связи с wchar_t.

drkns 04.12.2007 19:55:33 +0200 - build 381

1. Мелкий глюк в 379.

svs 04.12.2007 20:25:07 +0300 - build 380

1. Mantis#0000410: Memory leak in class History

drkns 04.12.2007 18:51:36 +0200 - build 379

1. Mantis#0000409: User Menu (F2) doesn't handle process INS key when Opt.UseNumPad == 1
   Также поправлено в истории строк ввода, ссылках на папки, фильтрах и ассоциациях.

svs 04.12.2007 09:26:51 +0300 - build 378

1. Mantis#0000354: Goto dialog in editor
   Здесь сделано не так, как хотелка звучит.
   Добавлен флаг DIF_NOAUTOCOMPLETE, но т.к. код в dialog.cpp закомменчен, то
   просто обозначено место в коде...

2. Mantis#0000331: ...
   про комбобокс; уточнение:
   - корректировка Top`а
   - динамическое изменение открытого выпадающего списка (Hide+Show)


t-rex 04.12.2007 08:18:31 +0200 - build 377

1. Mantis#406: Memory corruption and crash in Editor::AddUndoData().

2. Mantis#407: Memory leak in CommandLine class.

t-rex 03.12.2007 23:19:20 +0200 - build 376

1. Mantis#367: Не загружаются плагины, когда FAR запущен из папки которая сама или одина из её папок более высокого уровня являются связью.

2. Mantis#401: Handle leak in ProcessGlobalFileTypes().

3. Mantis#402: Handle leak in History::SaveHistory().

4. Mantis#403: Not initialized variable used in MessageRemoveConnection().

5. Mantis#404: Handle leak in CopyKeyTree().

6. Mantis#400: Function xf_wcsdup() should replace wcsdup().

drkns 03.12.2007 20:20:28 +0200 - build 375

1. Mantis#0000364: Maximize button doesn't work as expected
   Попробуем с другой стороны :-)
   Теперь работает "as expected" (кнопка, даблклик по заголовку, Maximize/Restore в системном меню и т. п.)
   Также учитывается состояние окна консоли при старте (start /max, настройка в lnk и т. п.)

drkns 03.12.2007 07:54:40 +0200 - build 374

1. Mantis#0000399: Memory leak in add_sid_cache()

2. Не работал DM_SETDLGITEM

t-rex 03.12.2007 00:01:04 +0200 - build 373

1. По наводке от Sten, Mantis#398: Patches to fix crashes after adding file to archive by pressing Shift+F1/Enter.

2. One of the memory leaks fixed in 372 was not a memory leak at all :), it was a perfectly correct code.

t-rex 02.12.2007 23:06:15 +0200 - build 372

1. From Hannes Eder: removed unused variables and corrected a condition in macro processing.

2. Fixed two memory leaks found along the way.

t-rex 02.12.2007 20:05:17 +0200 - build 371

1. От Stanislav Vinokurov: Mantis#397: Неправильная обработка oldfar::DM_GETTEXTPTR в FarSendDlgMessageA()

2. Тоже самое для oldfar::DM_GETTEXT.

t-rex 02.12.2007 13:59:53 +0200 - build 370

1. Из Mantis#396, неверная проверка при реалоке в TreeList::ReadTreeFile.

t-rex 02.12.2007 00:15:59 +0200 - build 369

1. Mantis#394: В OpenFilePlugin() должен передаваться в Name полный путь, а не имя файла.

t-rex 01.12.2007 19:47:22 +0200 - build 368

1. Memory leak в DeletePluginItemList.

2. Mantis#314: поле Description в PluginPanelItem находится мусор при вызове GetFilesW.
   И дупликат, Mantis#393.

3. Mantis#380: Memory leak in ConvertWildcards().

t-rex 01.12.2007 15:54:34 +0200 - build 367

от Stanislav Vinokurov (Sten):

1. Mantis#391: Wrapper: Реализация FarRecursiveSearchA.

2. Mantis#392: Wrapper: Некорректная обработка DI_EDIT и DI_FIXEDIT в AnsiDialogItemToUnicode().

t-rex 30.11.2007 16:28:14 +0200 - build 366

от Alexey Samlyukov:

1. Mantis#388: фиксы инициализации диалогов File/Folder descriptions.

t-rex 30.11.2007 16:12:41 +0200 - build 365

от Alexandr Zamaraev:

1. Mantis#387: copy.cpp, цикл подсчёта количества вместо вызова функции.

t-rex 30.11.2007 16:02:33 +0200 - build 364

от Alexey Samlyukov:

1. Mantis#389: удалим ConvertOldSettings().

t-rex 30.11.2007 15:30:14 +0200 - build 363

1. UnicodeString: Удалил RShift, глюкодром полный и оно не нужно.

2. UnicodeString: Исправил LShift, не выставлялась длина строки после изменения.

3. По наводке от Sten, неправильно работал цикл в PluginManager::OpenFilePlugin.

drkns 27.11.2007 21:20:14 +0200 - build 362

1. Обновление DialogAPI: FarListItem.Text теперь const wchar_t*.
   Плагины c DI_LISTBOX/DI_COMBOBOX надо править.

2. Криво работал DM_LISTGETITEM.

svs 27.11.2007 09:46:25 +0300 - build 361

1. TechInfo#48 по умолчанию делаем 1, а для Numpad5 TechInfo#48 игнорируем.

2. Mantis#0000360: Неверное отображение назначаемой клавиши
   Здесь есть вопросы...
   а) Не отработан код (в InitKeysArray), когда TechInfo#21 == 0
   б) проверял под двумя локалями - 409 и 419: проверить бы на остальных.
   с) замечено (кстати, в 1.7x тоже самое) в русской раскладке 2 правых
      нижних клавиши '.' и '/' выдают один и тот же код ==> '.', т.к.
      нажали <.> ==> LocalKeyToKey(0x44E) ==> 0x2E
      нажали </> ==> LocalKeyToKey(0x02E) ==> 0x2E
      В принципе, на работоспособность это не влияет, но визуально...

3. Уточнения в SysLogDump()

svs 26.11.2007 12:49:47 +0300 - build 360

From Alexander Mitin (alexmitin):
1. Mantis#0000379: Memory corruption in QuickView::DisplayObject()

В остальном - в keyboard.cpp local.cpp macro.cpp отмечены спорные моменты для Mantis#360

t-rex 25.11.2007 21:15:46 +0200

Без билда.

1. Не нужный "wchar_t *m_lpwszBuffer" в UnicodeString.hpp.

2. Обновления в HACKING-*.

t-rex 25.11.2007 20:39:14 +0200 - build 359

от Alexey Samlyukov:

1. Mantis#376: Фикс диалога Viewer settings.

drkns 24.11.2007 18:24:58 +0200 - build 358

1. Не обрабатывались макросы, содержащие макрокоманды $If, $Else и т. п.

2. Не работала макрофункция Date().


t-rex 24.11.2007 18:03:42 +0200 - build 357

1. Mantis#375: Не вызывался Network плагин при ChangeUp из сетевого ресурса. По наводке Redart.

t-rex 24.11.2007 17:30:03 +0200 - build 356

1. Вернул поиск в редакторе.

2. При поиске в редакторе мог пропадать курсор.

drkns 22.11.2007 19:33:01 +0200 - build 355

1. Mantis#0000365: Падение при вводе любого символа в поле "Опциональный символ пометки" в диалоге фильтра раскраски файлов

2. Mantis#0000366: В диалоге раскраски файлов и групп сортировки не всегда корректно показываются опциональные символы пометки


svs 19.11.2007 11:57:58 +0300 - build 354

1. Mantis#0000358: Для элемента "точки" PluginPanelItem.UserData всегда 0

t-rex 18.11.2007 23:23:43 +0200 - build 353

1. Доделал DN_EDITCHANGE и DN_DRAWDLGITEM на предмет передачи FarDialogItem.

2. Юзаем правильные xf_(free|malloc|realloc) во всём коде.

drkns 18.11.2007 12:11:21 +0200 - build 352

1. для меню пользователя выставлялась макрообласть Menu, a не UserMenu.


t-rex 18.11.2007 02:19:42 +0200 - build 351

1. Mantis#357 По наводке от Oleg Bekhter: Удар по памяти при удаление блока в редакторе.

t-rex 18.11.2007 01:33:22 +0200 - build 350

1. Мешанина new и malloc при работе с Clipboard.
   Заодно убраны пару мем ликов и около того.

2. Юзаем правильные xf_(free|malloc|realloc) во врапере.

t-rex 16.11.2007 22:52:36 +0200 - build 349

1. Снова обновление DialogAPI, теперь вроде бы с ним удобно работать
   (нету больше аллокатора и выходных данных).
   Плагины которые используют DialogAPI надо переделывать!
-----------------------------------------
   Описание нового API:
   Теперь есть 3 функции: (Dialog и DialogEx больше нету)
   а. HANDLE DialogInit(те же параметры что и были у DialogEx), возвращает
      описатель диалога или INVALID_HANDLE_VALUE в случае ошибки.
   б. int DialogRun(HANDLE hDlg), запускает диалог, возвращает то что раньше
      возвращал DialogEx.
   с. void DialogFree(HANDLE hDlg), освобождает всю память связанную с диалогом.

   FarDialogItem уже не имеет DataIn и DataOut а только const wchar_t *PtrData.
   Этот PtrData является начальным текстом для элемента.

   Главное отличие от старого DialogAPI это то что массив структур FarDialogItem
   является только входным, в него не пишутся ни какие изменения при закрытии
   диалога.

   Система работы с новым API такова:
   DialogInit()
   DialogRun()
   *** различные вызовы SendDlgMessage()                ***
   *** для получения нужных выходных данных из диалога. ***
   DialogFree()

   Также появились дополнительные DM_* и изменён один старый:
   а. DM_GETDLGITEM - изменён, Param2 должен быть 0, а поинтер на нужный
                      элемент возвращается самой функцией (NULL если ошибка).
                      Фар сам аллоцирует память под элемент, его нельзя
                      изменять и в конце использования его надо освободить с
                      помощью DM_FREEDLGITEM.
   б. DM_FREEDLGITEM - освобождает элемент полученый с помощью DM_GETDLGITEM.
                       Param1=0, Param2 = поинтер полученый от DM_GETDLGITEM.
   с. DM_GETCONSTTEXTPTR - возвращает (const wchar_t *) поинтер на внутренний
                           буффер фара связаный со строкой элемента. Не в коем
                           случае нельзя изменять, а также нельзя сохранять сам
                           поинтер так как он меняется при изменениях в строке
                           элемента. Добавлен для удобства работы после
                           закрытия диалога (DialogRun) и до DialogFree, но
                           можно конечно использовать и в обработчике, только
                           аккуратно :). Param1 = ID элемента, Param2 = 0.
-----------------------------------------

yjh 16.11.2007 07:20:48 +0300 - build 348

1. В операции Move при включенной фильтрации не удалялся полностью
   скопированный каталог

2. В операции Move при включенной фильтрации пустые каталоги не копировались
   даже если они соотвествуют фильту


yjh 16.11.2007 00:17:38 +0300 - build 347

1. В правке фильтров исключений не учитывался запрет на фильтрацию каталогов



drkns 15.11.2007 20:04:49 +0200 - build 346

1. Ещё одна небольшая правка с овнерами.


yjh 15.11.2007 04:10:08 +0300 - build 345

1. Доделка фильтров "исключения" при копировании в отношении каталогов.
   Если при копировании включена фильтраци, то в отношении "разрещающих"
   фильтров всё работает как раньше. В отношении же "запрещающих" (-) фильтров,
   если встречается каталог подпадающий под действие фильтра, то пропускается
   и он и всё его содержимое

2. Убрана пара BUGBUG в копировании при включенных фильтрах. Теперь работает :)


drkns 14.11.2007 22:22:05 +0200 - build 344

1. Мелкий глюк в 343.

drkns 14.11.2007 21:22:05 +0200 - build 343

1. Не обрабатывалась маска %pathext% в раскраске файлов.

2. В режиме отображения овнеров не работало кеширование и не освобождалась память.

3. К типу колонки "владелец файла" можно добавлять флаг 'L' - отображать домен.

4. Можно вводить юникодные символы по Alt-NumX :)


yjh 14.11.2007 22:04:42 +0300 - build 342

1. В FarMkTempEx игнорировлася параметр WithPath, что далеко не всегда допустимо

2. В FarMkTempEx убран потенциальный infinite loop. При ошибке возвращается
   "пустая" строка (при референсах по другому не получится)

3. В WipeDirectory переименование сделано именно переименованием (inplace)
   вместо "перемещения". Это дешевле, исчезает ошибка "восстановления" (при
   невозможности удаления и ответе Skip оставались частично переименованные
   каталоги, да ещё и не всегда на своём месте :), меньше вероятность нарваться
   на "забитость" каталога (при генерации имени временного файла).
   Кроме того. в старой логие оно вооще не могло работать, когда  Opt.TempPath
   на другом диске - MoveFile не позволяет перемещать каталоги между дисками



drkns 13.11.2007 22:45:17 +0200 - build 341

1. Падение в режиме панели "File owners".

2. В панелях не работал быстрый поиск по неанглийским символам.

3. Правки на предмет юникода в меню выбора принтера.


yjh 13.11.2007 09:44:34 +0300

1. Возможность компилировать хук vc7 (для извращенцев :). Очень рекомендую
   в этом случае омпилировать определив -DLINK_WITH_ULINK и компоновать
   ulink'ом. В противном случае, работать-то будет, но меньше степень
   защиты :). О чём будет сообщение при компиляции :)


yjh 13.11.2007 07:06:56 +0300 - build 340

1. FarNameToKey для плугинов


yjh 13.11.2007 03:04:15 +0300 - build 339

1. Hook позволяющий 32хбитовому Far'у корректно работать с FS в Win64
   (отключение WOW64-fs redirection). По умолчанию оно отключено и
   включается только на моменты загрузки DLL/запуска задач (для "штатной"
   работы 32хбитовых процессов).
   При желании собрать Far без этого кода следует определить (для make)
   DISABLE_WOW64_HOOK.
   Корректно это будет компоноваться (и, как следствие, работать) либо
   ms-link не ниже чем от vc8, либо ulink версии >= 1.05 build 3.9 (лучше
   использовать build >= 3.11 - иначе будет ненужное информационное сообщение).


t-rex 12.11.2007 22:58:42 +0200 - build 338

1. Пару глюков в открытие хэлпа в фаре и в АПЙ.

drkns 12.11.2007 21:59:08 +0200 - build 337

1. Мелкие правки во враппере

2. При записи макроса руками по Ctrl. запоминалась только последняя нажатая клавиша.

3. Цикличный перевод фокуса с первого элемента диалога на последний приводил к зависанию.

4. В меню дисков нельзя было одновременно включить показ метки и файловой системы.

svs 12.11.2007 19:09:32 +0300 - build 336

1. Mantis#0000352: Undo, вызываемое CTRL+Z не работает если открыть существующий файл на редактирование
   Продолжаем...
   ...слишком мало данных сохранялось :-(

svs 12.11.2007 14:51:46 +0300 - build 335

1. Падает FAR в следующих ситуациях:

   a) Запущен FAR без макросов в реестре
   b) Запущен FAR с макросами в реестре но запущен как Far.exe /m
   c) Запущен FAR с макросами но их удалили во время сеанса FAR и вызвали плагин UpdateMacros.dll

   когда падает:

   Ctrl. Ctrl. Любая_допустимая_клавиша Enter
   FAR упал

2. Пусть у нас есть 2 макроса:
   [HKEY_CURRENT_USER\Software\Far\KeyMacros\Shell\F10]
   "Sequence"="F5"
   [HKEY_CURRENT_USER\Software\Far\KeyMacros\Common\F10]
   "Sequence"="F4"

   запускаем FAR
   находясь на панели жмем Ctrl. Ctrl. F10
   выбираем "ДА"

   ещё раз делаем Ctrl. Ctrl. F10
   выбираем "ДА"

   жмем F10 и видим макрос не снялся если ещё раз сделать Ctrl. Ctrl. F10
   нам опять предлагает удалить...

   те макрос (общий) в такой ситуации не снимается



yjh 11.11.2007 22:33:53 +0300 - build 334

1. plugin.hpp скорректирован для работы с .c (не .cpp) файлами


t-rex 10.11.2007 23:26:42 +0200 - build 333

1. Правки во врапере по теме нового DialogAPI и около.

2. ViewerInfoW -> ViewerInfo.

yjh 10.11.2007 20:39:24 +0300 - build 332

1. Убран memory leak в GETDLGITEM

2. Добавлен DM_GETREALLOC (для враппера и DialogManager)

3. ВНИМАНИЕ: при получении Item с динамическим буфером
             (IsEdit(Type) && MaxLen==0)
             выделенный буфер (DataOut) должен особождаться плагином


t-rex 10.11.2007 19:11:17 +0200 - build 331

1. Напутал с CutToSlash в 326.

yjh 10.11.2007 18:41:37 +0300 - build 330

1. Изменения в DialogAPI (для нормальной работы с памятью редактируемых
   строк).
   !!!ВНИМАНИЕ!!! почти все (уже "готовые" плугины надо править)
***
   Краткое описание нового API:
    В FarDialogItem есть 3 поля
      const wchar_t* DataIn;
      wchar_t* DataOut;
      size_t MaxLen;
    DataIn - задаёт все ВХОДНЫЕ строковые данные (было в DataPtr)
    DataOut - для полей с редактируемоей строкой (см. IsEdit() в pluging.hpp)
              здесь находится указатель на возвращаемые данные.
              для всех остальных типов полей всегда возвращается NULL (см. ниже)
    MaxLen имеет двойное назначение:
       if(MaxLen != 0), то это максимальный размер (включая закрывающий 0)
       ЗАРАНЕЕ выделенного (плугином) буфера указатель на который должен
       передаваться через DataOut.
       Кроме того, это ограничитель размера для строки ввода (currently not implemented)

       Если же MaxLen==0, то подразумевается, что работа(редактирование) идёт
       со строками с НЕ лимитированным размером. В этом случае в DataOut
       попадает указатель на динамически выделяемую память (см. ниже) которую
       плугин должен особождать сам.

    В ф-циях FSF.Dialog и FSF.DialogEx добавил ещё один параметр - указатель
    на ф-цию ReAlloc. которая используется Far'ом для аллокации "неограниченных"
    возвращаемых "неограниченных" строк (и освобождения памяти - см. ниже).
    В случае отсуствия в диалоге IsEdit полей, можно передавать NULL.

    При обработке Dialog/DialoEx осуществляется дополнительная проверка
    параметра DataOut - если MaxLen!=0, то
       IsBadWritePtr(DataOut,MaxLen*sizeof(wchar_t))
    если же MaxLen==0, то ReAlloc не может быть NULL.
        IsBadReadDataIn должен быть valid read ptr, а DataOut (если Ь

    Если параметр (одного из Item) невалиден, до возвращается -1 БЕЗ исполнения
    диалога.

    Если после "отработки" диалога, при возвращении строк ReAlloc вернёт NULL,
    то будет освобождена вся ранее захваченная им память (через ReAlloc(ptr, 0);)
    и так же возвращена -1.

    При нормальном же завершении Dialog/DialogEx плугин должен сам освободить
    память (все OutPtr) если, конечно, выделял её динамически :)

***

2. Выкинута ф-ция FSF.FreeDialogAnsStr - она теперь не нужна

3. Некоторое (попавшееся по пути :) убирание знаковых целых там где им
   сoвсем не место. По хорошему, надо бы тормознуть все правки и сначала
   навести порядок с этим...

4. Пара ошибок предыдущих патчей обнаруженная в посиках отавшейся ошибки
   в использовании CutToSlash :)


t-rex 09.11.2007 21:34:19 +0200 - build 329

1. Исправил ещё одни недочёт в АПЙ для x64 версии. Надеюсь что это последний.

t-rex 09.11.2007 18:12:56 +0200 - build 328

1. В UnicodeString::GetBuffer nLength переименован в nSize.

от Alex Alabuzhev:

2. API 1.7:
   a) Control: всё, кроме:
      - в FCTL_GET[ANOTHER]PANELINFO не заполняются поля PanelItems и SelectedItems;
      - не реализован FCTL_SET[ANOTHER]SELECTION, т. к. зависит от предыдущего.
   b) MkLink
   c) GetNumberOfLinks
   d) правильно работает DM_KEY
   e) пропущен break после VCTL_GETINFO в ViewerControl

svs 09.11.2007 15:54:24 +0300 - build 327

1. Mantis#0000352: Undo, вызываемое CTRL+Z не работает если открыть существующий файл на редактирование
   Проблема в том, что в 1.7x Editor::FreeAllocatedData вызывалась только из деструктора класса Editor.
   В 1.8x эта же функция так же вызывается из FileEditor::LoadFile, при этом массив UndoData удаляется.
   В общем, сделал очередную затычку - новый параметр у Editor::FreeAllocatedData - удалять или очищать
   массив UndoData.
   Для номальной работы (в т.ч. и для реализации Redo) необходимо отказаться от массива в пользу
   двусвязанного списка (или еще чего...)

t-rex 09.11.2007 13:18:53 +0200 - build 326

1. Различные фиксы и улучшения связанные с string.GetBuffer().

2. Немного правок на предмет табы-пробелы в коде.

svs 09.11.2007 11:57:41 +0300 - build 325

1. TVar вынесен в отдельный модуль tvar.?pp + компилятор из macro.cpp в syntax.cpp

2. KeyNameToKey теперь для макроязыка возвращает -1.

3. GetMacroParseError - теперь функция класса Macro.

4. После 2280 пункт 6 отвалился $MMode.
   Теперь $MMode будет компилится по правилам...
   т.е. если раньше было для "$MMode 1":
     0: MCODE_OP_MACROMODE
     1: '1'
   то теперь все встало на свои места:
     0: MCODE_OP_PUSHINT
     1: HIDWORD(1)
     2: LODWORD(1)
     3: MCODE_OP_MACROMODE

5. Mantis#0000351: ACTL_POSTKEYSEQUENCE: пауза при выполнении и лишняя перерисовка


t-rex 07.11.2007 17:47:14 +0200 - build 324

1. Пару мелких BUGBUG и немного правок на предмет табы-пробелы в коде.

zg 05.11.2007 12:04:08 +0200 - build 323

1. Траблы с...
     > есть 2 макроса
     > а) в области shell Ctrl-CapsLock=CtrlShiftTab flock(1,2)
     > б) в области редактора Ctrl-CapsLock=CtrlShiftTab flock(1,2)
     >
     > 0. в shell открыли файл в редаторе, переключились снова в shell
     > 1. нажали Ctrl-CapsLock, у нас таки есть макрос, макрос запускается
     > 2. макрос отработал, в конце саданул в очередь Up-Down для VK_CAPITAL (тот самый flock(1,2))
     > 3. макрос закончился, но:
     > 3.1 состояние Ctrl - в "нажато"
     > 3.2 на подходе Up-Down для капслоск
     > 4. ФАР видит в очереди CtrlCapsLock, проверяет, что мы в редакторе, а там такой же макрос тоже есть - начинает работать макрос
     > 5. goto п.2
     >
     > Помогает только кнопка на морде системного блока

   исправлено зависание. но так как во время физического нажатия *Lock программно изменить состояние этого самого *Lock нельзя, то макросы надо чуть доработать:
   CtrlCapsLock="CtrlShiftTab %a=flock(1,-1)&1; $while((flock(1,-1)&1)==%a) sleep(50) flock(1,2) $end"

yjh 05.11.2007 05:01:40 +0300 - build 322

1. Для возможности обхода недоделок в API добавлена FSF.FreeDialogAnsStr
   (освобождение памяти аллоцированной ядром для ответа в DI_EDIT).
   Пример использования можно посмотреть в MacroView


t-rex 04.11.2007 22:41:29 +0200 - build 321

1. Исправил пару мелких BUGBUG, в ком строке и запускаторе.

yjh 04.11.2007 22:21:28 +0300 - build 320

1. В FarKeyToName параметр Size и возвращаемое значение в символах, а не
   байтах.

yjh 04.11.2007 21:33:24 +0300 - build 319

1. Добавлена нормальная имплементация FarKeyToName. Изменения в API:
   typedef size_t  (WINAPI *FARSTDKEYTOKEYNAME)(int Key,wchar_t *KeyText,size_t Size);
   Возвращает общий размер (с финальным нулём) скопированный в KeyText.
   Если Size == 0, то возвращает необходимый размер

t-rex 01.11.2007 23:37:35 +0200 - build 318

от chupakabra:

1. При отрисовке рамки вывода информации о панели плагина (Ctrl+L) не используется BoxSymbols[].

t-rex 01.11.2007 22:42:35 +0200 - build 317

от Alex Alabuzhev:

1. API 1.7:
   - ViewerControl
   - еще несколько сообщений Dialog API
   - Text: рекурсия при Str = NULL

svs 01.11.2007 16:57:56 +0300 - build 316

1. Mantis#0000344: Ключи для отключения при запуске макросов / автостартующих макросов
   [+] Добавлены параметры командной строки:
       /m - при старте FAR не будет загружать макросы из реестра
       /ma - при старте ФАР не будет исполнять автостартующие макросы.

2. Падение, если в поисковике файлов в качестве маски указать "*.*, ,*.*"

3. В Хелпе FarEng.hlf.m4 есть русские буковки!
   В очередном патче кто-нить исправьте сей недостаток :-)


t-rex 30.10.2007 20:55:12 +0200 - build 315

от Alex Alabuzhev (с долей исправлений от меня :):
Вообще всё это надо очень хорошо потом протестировать.

1. API 1.7:
   - более-менее рабочий DialogEx.
   - AdvControl.
   - в FARKEYSEQUENCEFLAGS пропущен флаг KSFLAGS_REG_MULTI_SZ

svs 29.10.2007 09:52:31 +0300 - build 314

от _anton_ (?)

1. в plugin.hpp второй параметр у функции MakeDirectoryW char* вместо
   wchar_t*.

t-rex 28.10.2007 21:10:05 +0200

1. Мелкое исправление в EXCEPTION лицензии, неправельный набор слов
   приводил к тому что плагины должны были использовать один или все хидеры
   плагинов а не любой чтоб не попадать под лицензию фара.
   Но полюбому в самих хедерах и так написано что их можно юзать, в LICENSE это
   написано для суммирования.

t-rex 28.10.2007 20:04:06 +0200 - build 313

от Alexandr Zamaraev:

1. Улучшение GCC сборки.

t-rex 28.10.2007 17:59:38 +0200 - build 312

1. По наводке Yurij, в истории редактора\въювера теперь нет ограничения на размер строки,
   ну и за одно падать перестало :).

t-rex 28.10.2007 17:31:13 +0200 - build 311

от Alexandr Zamaraev (Tonal):

1. Сборка под GCC 4.2.1

t-rex 28.10.2007 16:37:51 +0200 - build 310

от Alex Alabuzhev:

1. API 1.7:
   a) Dialog (вроде всё), DialogEx (пока без обработчика) (wrap.cpp)
   b) Menu: пользовательская метка выбора (FarMenuItem.Checked>1) во враппере не перекодировалась
      в юникод (wrap.cpp), глубже тоже были грабли - приводилось к char (vmenu.cpp)

svs 28.10.2007 17:00:58 +0300 - build

1. Добавлен файл SYSLOG-RU, описывающий элементы логирования в FAR`е

svs 28.10.2007 01:54:39 +0300 - build 309

1. Macro: Падение при записи последовательности с клавиатуры.

2. Вернем обратно KEY_MACRO_BASE в разряд "клавиш".
   Есть проблемы.


svs 28.10.2007 01:15:53 +0300 - build 308

from DrKnS (Alex Alabuzhev):

1. при выводе плагинового диалога в заголовке консоли был мусор

2. при закрытии некоторых диалогов фар падал из-за неинициализированных переменных.

3. поправлена рамка внизу панели (flshow.cpp).

4. Editor: падала дебажная версия на выходе из редактора после сохранения

5. Editor: неправильно отрезался путь сохр. файла

6. Editor: если новый файл и вышли без сохр - UpdateFileList() не вызываем


t-rex 27.10.2007 22:08:48 +0200 - build 307

1. После 301 всплыл глюк с не вытеранием FEDITLINE_CLEARFLAG у Edit контролев.

t-rex 27.10.2007 20:05:33 +0200 - build 306

1. Оптимизация вывода строк редактора на экран, очень ощутимо на очень длинных строках.

2. Убрал SHITHAPPENS за ненадобностью.

t-rex 27.10.2007 17:05:41 +0200 - build 305

от chupakabra:

1. Вход в бесконечный цикл в FarMkTempEx().

2. DeleteFileWithFolder() удаляет только файл и оставляет каталог.

svs 27.10.2007 15:37:28 +0300 - build 304

1. Добавлен MCODE_OP_NOP

2. Уточнения кода по поводу падения во время удаления макроса
   и/или воспроизведенния...


t-rex 27.10.2007 14:18:57 +0200 - build 303

1. Исправил Debug и GCC сборку, и ещё пару варнингов.

svs 27.10.2007 13:15:23 +0300 - build 302

1. Уточнение в KeyMacro::MkTextSequence.

svs 26.10.2007 19:09:24 +0300 - build 301

Поехали....

1. MCODE_OP_EXPR и MCODE_OP_DOIT удалены как класс.

2. KEY_MACRO_BASE ... KEY_MACRO_ENDBASE ужО не "клавиши"!
   Остались только KEY_OP_*, кторые являются "клавишами"

3. В логирование добавлен _MOUSE_EVENT_RECORD_Dump()

4. Изменена SetFLockState
   GetKeyboardState отстой, работает только в дебажной версии (вот ить!)
   вместо нее юзаем нашу GetKeyState()

5. Хмм... а, ну да, оп-коды макросов теперь навинаются с 0
   (небольшое приближение к...)

6. В парсере макросов.
   между MCODE_OP_KEYS и MCODE_OP_ENDKEYS находятся настоящие клавиши!
   сейчас можем наблюдать фигню типа когда parseMacroString() каждую
   "настояшую клавишу" обрамляет этими кода (избыток!), но
   это промежуточный этап....
   В конце будет отдельный DLL, который ФАРу будет отдавать только байткод.

7. В PostNewMacro() добавлен новый параметр...
   предполагается (сейчас!), что плагины "пидалят" макросы с чистыми
   кодами клавиш!
   Но т.к. эта функция испльзуется не только для плагинов, то...
   ...нужно отличать "где мы".

9. Траблы с...
     есть 2 макроса
     а) в области shell Ctrl-CapsLock=CtrlShiftTab flock(1,2)
     б) в области редактора Ctrl-CapsLock=CtrlShiftTab flock(1,2)

     0. в shell открыли файл в редаторе, переключились снова в shell
     1. нажали Ctrl-CapsLock, у нас таки есть макрос, макрос запускается
     2. макрос отработал, в конце саданул в очередь Up-Down для VK_CAPITAL (тот самый flock(1,2))
     3. макрос закончился, но:
     3.1 состояние Ctrl - в "нажато"
     3.2 на подходе Up-Down для капслоск
     4. ФАР видит в очереди CtrlCapsLock, проверяет, что мы в редакторе, а там такой же макрос тоже есть - начинает работать макрос
     5. goto п.2

     Помогает только кнопка на морде системного блока


t-rex 26.10.2007 14:34:01 +0200 build 300

1. Все готовы? Are you ready? :)
