drkns 02.02.2011 08:36:12 +0200 - build 1807

1. Уточнение 1804.1.

svs 01.02.2011 18:10:02 +0300 - build 1806

1. Mantis#0001418: Реакция VMenu на RClick аналогично диалогам

2. В файлы помощи добавлен раздел, содержащий списки установленных макросов.


svs 01.02.2011 16:07:38 +0300 - build 1805

1. Mantis#0001690: FDLG_NODTITLE - не менять заголовок консоли по заголовку диалога
   (from samlyukov)
   Вместо предлагаемого FDLG_NODTITLE добавлен флаг диалога FDLG_KEEPCONSOLETITLE, 
   позволяющий отключить установку заголовка консоли по нулевому элементу диалога.
   2samlyukov: с тебя корректировка Писания :-)

2. Macro: коррекция build 1791

3. Mantis#0001684: Падение FileList:GetCurName во время чтения сетевой папки
   (from Maximus)
   Падает из-за того, что из CheckForEscSilent вызывается ProcessSynchroEvent. 
   А плагин зовет ACTL_GETWINDOWINFO.
   Фар еще не закончил чтение каталога и CurFile больше чем FileCount.
   Что приводит к падению.

4. Mantis#0001677: При запуске макроса через MCMD_POSTMACROSTRING задавать код "запускающей" клавиши
   Траблы с AKey...
   Надо протестировать!

5. Mantis#0001480: Расширить substr() для того, чтоб она могла возвращать подстроку начиная с конца строки
     если start  >= 0, то вернётся подстрока, начиная со start-символа от начала строки.
     если start  <  0, то вернётся подстрока, начиная со start-символа от конца строки.
     если length >  0, то возвращаемая подстрока будет состоять максимум из length символов исходной строки начиная с start
     если length <  0, то в возвращаемой подстроке будет отсутствовать length символов от конца исходной строки, при том, что она будет начинаться с символа start.

     пустая строка возвращается:
       если length = 0
       если ... (уточнить!)


drkns 01.02.2011 14:02:14 +0200 - build 1804

1. Поиск в режиме "На всех несъёмных дисках"/"На всех локальных дисках" учитывает непримонтированные диски тоже. 

2. Mantis#0001693: Incorrect settings in File descriptions dialog

drkns 29.01.2011 12:31:15 +0200 - build 1803

1. Уточнение поиска альтернативных потоков в папках.

svs 27.01.2011 13:30:39 +0300 - build 1802

1. Macro: Уточнение кода возврата для callplugin
   Функция callplugin возвращает 0, если вызываемого плагина нет или плагин вернул 0. 
   В других случаях функция возвращает значение, отличное от 0.
   Функция callplugin

svs 25.01.2011 18:35:03 +0300 - build 1801

1. Macro: Уточнение кода возврата для callplugin

svs 25.01.2011 16:53:18 +0300 - build 1800

1. Mantis#0001673: Добавить флаг OPEN_FROMMACROSTRING к существующему OPEN_FROMMACRO
   Тестим...

   <АХТУНГ>

     Замечание для OpenPluginW:
       Если в параметре OpenFrom выставлен флаг OPEN_FROMMACRO, то значения в младшем слове 
       содержат не идентификатор из перечисления OPENPLUGIN_OPENFROM, а номер текущей макрообласти, 
       определенной в перечислении FARMACROAREA.
       
   </АХТУНГ>


2. Mantis#0001677: При запуске макроса через MCMD_POSTMACROSTRING задавать код "запускающей" клавиши
   В структуру ActlKeyMacro::Param::PlainText добавлено поле "AKey".
   

drkns 23.01.2011 13:02:35 +0200 - build 1799

1. Ошибка в FCTL_SETSORTMODE.

2. Ещё раз #0001670.

drkns 22.01.2011 18:31:13 +0200 - build 1798

1. Ещё раз #0001670.

drkns 20.01.2011 20:18:54 +0200 - build 1797

1. Уточнение разделения прав доступа на "read"/"modification" в apiCreateFile.

drkns 20.01.2011 00:52:42 +0200 - build 1796

1. В некоторых случаях не работало копирование/перенос ссылок.

drkns 19.01.2011 21:21:30 +0200 - build 1795

1. Ещё немного паранойи в elevation:
     - имя канала = GUID;
     - проверка PID.

drkns 18.01.2011 14:47:00 +0200 - build 1794

1. Там же:
     - уточнение 1793;
     - paranoia mode on: именованный канал теперь доступен только для привилегированных процессов.

drkns 18.01.2011 00:53:26 +0200 - build 1793

1. Изменения в elevation по мотивам Mantis#0001670.

drkns 17.01.2011 13:27:27 +0200 - build 1792

1. Mantis#0001667: can't paste hex numbers

svs 16.01.2011 18:02:14 +0300 - build 1791

1. Mantis#0001660: Оператор XOR для булевых выражений
   Добавлен условный оператор "^^" - XOR, исключающее ИЛИ

drkns 16.01.2011 00:20:57 +0200 - build 1790

1. Переключатель "[x] File processing (OpenFilePlugin)" в настройках менеджера плагинов теперь 3-позиционный:
     [ ] - не показывать меню;
     [?] - показывать меню везде, кроме ситуаций "вход в архив по Enter" и "поиск в архивах";
     [x] - показывать меню везде.

2. GCC warnings.

svs 14.01.2011 17:39:03 +0300 - build 1789

1. Mantis#0001631: добавка в PluginsControl() - PCTL_FORCEDLOADPLUGIN
   (from: samlyukov)
   Добавка к АПИ: PCTL_FORCEDLOADPLUGIN - грузит плагин не в кэш, а сразу в память, что позволят 
                  использовать сторонние плагины при межплагиновом взаимодействии.

svs 14.01.2011 17:11:42 +0300 - build 1788

1. Macro: уточнение для iif в части проверки на строку (см. build 1786 п.3)

2. Macro: уточнение для $if(строка) в части проверки на строку (см. build 1786 п.3)

drkns 13.01.2011 22:33:26 +0200 - build 1787

1. Неофициальный тестовый режим запускателя - "не мерцаем панелями при запуске неконсольных приложений".
   Включается при System\Executor\SilentExternal=dword:1.

svs 13.01.2011 11:43:12 +0300 - build 1786

1. Mantis#0001655: Неверное сообщение об ошибке при разборе макроса

2. Mantis#0001642: При проверке макропоследовательности возвращается неправильная позиция ошибки

3. Macro: изменения в поведении проверки условий для $if/$while
   Строка в условии проверяется на пусто и не пусто.
     
     %a="";
     $if (%a) не исполняем $else будет исполнено $end
     $if ("") не исполняем $else будет исполнено $end
     
     %a="все что угодно, в т.ч. просто 0";
     $if (%a) будет исполнено $else не исполняем $end
     $if ("все что угодно") будет исполнено $else не исполняем $end
     $if ("0") будет исполнено $else не исполняем $end

   + подсократим код :-)

4. Macro: введенная в build 1773 в строй функция Scr.Scroll переименована в Window.Scroll

5. Mantis#0001656: Отладочная версия валится в TruncStr

drkns 12.01.2011 16:15:14 +0200 - build 1785

1. И ещё.

drkns 12.01.2011 13:14:15 +0200 - build 1784

1. Ещё пара уточнений в запускателе.

drkns 11.01.2011 21:49:13 +0200 - build 1783

1. Уточнение 1782.2.

drkns 11.01.2011 21:38:40 +0200 - build 1782

1. Ключ /rc удалён - исходное состояние консоли восстанавливается всегда.

2. Поддержка запуска команд с повышением привилегий (aka "Run as administrator") в панелях, комстроке и истории. Хоткей - CtrlAltEnter.

3. Перетрях запускателя, в связи с п. 2. Вроде бы ничего не отвалилось, но соблюдаем осторожность.

drkns 10.01.2011 21:27:48 +0200 - build 1781

1. Вернём отображение количества обработанных файлов в диалог копирования.

2. Общий индикатор копирования теперь работает и при переносе в пределах одного диска.

drkns 10.01.2011 14:20:32 +0200 - build 1780

1. Немного оптимизации: если отсутствуют плагины, экспортирующие OpenFilePlugin/Analyse, то и лишних действий (открытия/чтения/закрытия файла)
   при попытке "входа" в файл не выполняется.

2. Пара мелочей.

drkns 09.01.2011 12:50:26 +0200 - build 1779

1. При установке заведомо неправильной даты файла эта дата могла заменяться случайными значениями.

2. Более корректная интерпретация 2-значных годов.

drkns 08.01.2011 22:48:50 +0200 - build 1778

1. Не игнорируются попытки запуска файлов, тип которых неизвестен ОС.

drkns 07.01.2011 22:34:21 +0200 - build 1777

1. Mantis#0001644: Падение после "Cannot load language data".

drkns 05.01.2011 19:21:38 +0200 - build 1776

1. Уточнение 1775.

drkns 05.01.2011 10:50:10 +0200 - build 1775

1. Mantis#0001640: Необходимость сохранения строк между вызовами DialogInit и DialogFree
   Теперь Far копирует себе FarDialogItem.History и FarDialogItem.Mask, хранить их в плагине постоянно больше не нужно.

drkns 02.01.2011 12:57:22 +0200 - build 1774

1. Уточнение вывода дат в формате yyyy-MM-dd.

2. Немного почищен interf.cpp.

svs 29.12.2010 16:09:28 +0300 - build 1773

1. Mantis#0001538: Обновление панели при выполнении некоторых макрокоманд

2. Macro: добавлена функция N=Scr.Scroll(Lines[,Axis])
      Lines - Положительное число - вперёд (вниз/вправо), отрицательное - назад (вверх/влево).
      Axis - Необязательный параметр, 0 - вертикаль (по умолчанию), 1 - горизонталь.

      Функция возвращает 0 - перемотка не состоялась (например, Lines был равен 0), иначе 1

drkns 29.12.2010 11:30:42 +0200 - build 1772

1. В 1741 погнулась работа с шарами SharePoint.
   Похоже, в Microsoft кладут на собственное API.

drkns 28.12.2010 12:55:27 +0200 - build 1771

1. Продолжение 1763 - годы отображаются без ведущего нуля.

2. Изменения в DIF_MASKEDIT: Del/BS не сдвигают оставшийся текст.

3. Во время работы PrepareDiskPath() Elevation отключается.

svs 28.12.2010 09:49:18 +0300 - build 1770

1. Коррекция build 1769

2. Mantis#0001594: FAR запущеный как редактор или вьювер загружает макросы для UserMenu
   Временно отключим юзерменю в редакторовьювере...

3. Mantis#0001614: Построчный скроллинг в режиме far.exe /w
   (from DAtaMan)
   Построчное скроллирование консольного буфера клавишами Ctrl-Alt-Up/Down

   <АХТУНГ>

     После появления макро-функции scroll (http://forum.farmanager.com/viewtopic.php?f=15&t=5409)
     из менеджера будет удалена всякая обработка клавиш для скроллинга экранного буфера.

   </АХТУНГ>

4. В диалоге SetAttr дублируются хоткеии для "&Hidden" и "C&hange time:".
   Для "Change time:" хоткей будет "g".

svs 27.12.2010 12:45:54 +0300 - build 1769

1. Mantis#0001634: Иногда функция panel.item возвращает для файла пустое описание
   (from DAtaMan)
   panel.item(0,0,11) возвращает пустое значение, если не включён режим с отображением описаний или не было вызова CtrlZ

drkns 24.12.2010 10:37:23 +0200 - build 1768

1. Продолжение 1764 - время записи тоже берём у источника.

zg 20.12.2010 13:46:31 +0200 - build 1767

1. с форума:
   набираем в командной строке macro:post panel.setpath(1, "C:/") (меняем путь в пассивной панели) 
   и нажимаем F5 Enter на любом файле или папке в активной панели. 
   Получаем ошибку "Can not find the file".

drkns 19.12.2010 23:49:18 +0200 - build 1766

1. Уточнение 1763.

svs 19.12.2010 22:52:53 +0300 - build 1765

1. Mantis#0001623: Новая команда в FARMACROCOMMAND - MCMD_GETAREA - Получить текущую макрообласть
   (from Yegor)

drkns 18.12.2010 20:59:54 +0200 - build 1764

1. При "[x] Copy contents of symbolic links" в диалоге подтверждения перезаписи для симлинков отображается размер источника.

drkns 18.12.2010 18:20:53 +0200 - build 1763

1. Уточнение 1762.1 для дат в формате "Year-Month-Day".

drkns 17.12.2010 18:58:27 +0200 - build 1762

1. Поступили слухи, что в диалоге атрибутов некорректно отображались пятизначные года.

drkns 15.12.2010 22:05:28 +0200 - build 1761

1. Диалоги больше не центрируются при изменении размера консоли.

drkns 14.12.2010 16:13:10 +0200 - build 1760

1. Уточнение 1757.4.

drkns 13.12.2010 18:12:58 +0200 - build 1759

1. Откат 1756.

drkns 12.12.2010 20:01:39 +0200 - build 1758

1. Уточнение 1757.2.

drkns 12.12.2010 19:43:37 +0200 - build 1757

1. Mantis#0001618: Числовая сортировка и по остальным колонкам.

2. "Регистрозависимость" сортировки - теперь не свойство режима панели, а свойство самой панели (по аналогии с числовой сортировкой).
   Соответствующая опция переехала из диалога настройки режима панели в меню критерия сортировки.

3. В API добавлены PFLAGS_CASESENSITIVESORT и FCTL_SETCASESENSITIVESORT.

4. В debug-сборку добавлена проверка соответствия пар malloc()/free(), new/delete, new[]/delete[] для выявления ошибок типа "int* a=new int[10]; delete a;"

drkns 12.12.2010 14:30:26 +0200 - build 1756

1. В редактор не приходили некоторые мышиные события.

chupakabra 11.12.2010 16:02:00 +0200 - build 1755

1. В Editor::Block2Text выделялся слишком большой блок памяти (вплоть до полного размера файла).

drkns 10.12.2010 22:36:15 +0200 - build 1754

1. Уточнение внутренней реализации FindFirstStream.

drkns 10.12.2010 20:02:21 +0200 - build 1753

1. "[x] Automatic update of environment variables" -> "[ ] Automatic update of environment variables".

2. Уточнение console::Write().

drkns 10.12.2010 10:51:32 +0200 - build 1752

1. Опция "[x] Automatic update of environment variables".

t-rex 10.12.2010 00:06:20 +0200 - build 1751

1. Ctrl-Ins больше не копирует файлы в клипбоард, теперь этим занимается Ctrl-C.
   Ctrl-C - Поместить помеченные файлы в Буфер Обмена (без учёта состояния командной строки).

drkns 08.12.2010 23:50:39 +0200 - build 1750

1. В диалоге атрибутов опция "[ ] Обрабатывать вложенные папки" для файлов не отображается.

2. Сломалось блокирование кнопки "[ Панель ]" в результатах поиска при отсутствии соответствующих плагинов.

drkns 08.12.2010 19:07:03 +0200 - build 1749

1. С форума: В меню выбора режимов сортировки пункт Show selected first — это на самом деле Show directories first, а последний вообще не работает, даже галка не ставится.

2. С форума: Глюк при переходе в "C:\Documents and Setting\All Users"

3. С форума: Фар падает при нажатии Ctrl+Shift+End в поле ввода фиксированного размера (например, Options - Editor settings - Tab size)

drkns 07.12.2010 18:09:12 +0200 - build 1748

1. Handle leak в предыдушем билде.

drkns 07.12.2010 12:41:41 +0200 - build 1747

1. Mantis#0001615: Возможность зайти в панелях в несуществующий на диске или в сети путь

drkns 07.12.2010 11:29:41 +0200 - build 1746

1. Уточнение 1741.

drkns 07.12.2010 08:45:22 +0200 - build 1745

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

drkns 07.12.2010 01:02:52 +0200 - build 1744

1. Mantis#0001408: Paste в автодополняемое поле иногда оставляет текст "серым".

drkns 07.12.2010 00:04:33 +0200 - build 1743

1. Mantis#0001612: Установка текущего времени в диалоге изменения файловых атрибутов

drkns 06.12.2010 20:09:35 +0200 - build 1742

1. При чтении файлов местных меню от Far 1.x учитывается, что раньше разделитель задавался иначе.

drkns 06.12.2010 19:42:33 +0200 - build 1741

1. Поддержка четвёртого времени файла - "Change Time", время изменения.
   Отличие от Last Write Time в том, что Change Time обновляется при любых манипуляциях с файлом, а не только при изменении содержимого.

2. Коррекция hlf/lng - "дата/время модификации" -> "дата/время последней записи".

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

4. gcc warnings.

drkns 04.12.2010 11:11:27 +0200 - build 1740

1. From Tim Sobolev: коррекция заголовка окна редактора.

2. Уточнение 1738.2.

svs 03.12.2010 17:01:42 +0300 - build 1739

1. From Alexey Samlyukov: для режима far.exe /w добавлены клавиши: Ctrl-Alt-Home/End листают окно в начало/конец буфера

drkns 02.12.2010 20:06:35 +0200 - build 1738

1. Mantis№0001608: Мелкий баг при поиске дубликатов кодовых страниц

2. Коррекция типов.

drkns 01.12.2010 16:08:46 +0200 - build 1737

1. Уточнение 1729.1.

drkns 26.11.2010 23:25:10 +0200 - build 1736

1. Неправильно обрабатывался список масок, разделенный ';' и содержащий "%pathext%".

drkns 26.11.2010 20:44:41 +0200 - build 1735

1. Mantis#0001591: Добавка в FileFilterControl: Custom-фильтры

2. Не показываем ненужные элементы в диалоге создания ссылки.

yjh 26.11.2010 11:00:23 +0300 - build 1734

1. Коррекция ошибки внесённой в 1732

drkns 25.11.2010 21:15:37 +0200 - build 1733

1. From Alexey Samlyukov: флаги PFLAGS_USECRC32/OPIF_USECRC32, явно определяющие, что у элементов плагиновой панели заполнено поле CRC32.

drkns 25.11.2010 15:07:10 +0200 - build 1732

1. Уточнение 1730.1 - В Windows 7 и выше "App Paths" один.

drkns 25.11.2010 13:52:52 +0200 - build 1731

1. Не работала опция "[x] use additional privileges"

yjh 25.11.2010 14:50:16 +0300 - build 1730

1. В win64 'App Paths' в регистри надо просматривать в "двух версиях" - для
   32х и 64х битовых процессов (оне разные :)

drkns 25.11.2010 10:30:48 +0200 - build 1729

1. При переименовании/переносе опция "[ ] Обрабатывать несколько имён файлов" отключена и не используется.

yjh 25.11.2010 08:55:14 +0300 - build 1728

1. def-файл ulink'а был закоммичен в "отладочном" виде

yjh 25.11.2010 04:42:51 +0300 - build 1727

1. Редизайн vc10.asm так, что он занимает чуть меньше места :).

2. В случае компоновки ulink'ом не используем vc10 - вместо этого делаем
   эти 2 процедуры в режиме delayload и "подменяем" их только в ситуации
   когда они не проимпортировались.
     Такой разнице в поведении 3 причины: этот вариант более корректный,
   ulink запрещает "прямое использование" __imp_ префиксов у имён (это 
   редкостная экзотика, а вот ошибки такие случаются), ну и, наконец,
   ms-link не поддерживает partial delyay load.

drkns 23.11.2010 20:39:55 +0200 - build 1726

1. From Alexey Samlyukov: не работал FreePluginDirList.

2. From Alexey Samlyukov: GetPluginDirList умеет работать с пассивной панелью.

drkns 22.11.2010 22:20:00 +0200 - build 1725

1. Для VC2010-билда минимальные системные требования теперь не XP SP3, а 2k SP4 + KB816542.

drkns 22.11.2010 14:27:37 +0200 - build 1724

1. Mantis#0001600: Не входит в 'C:\Users\<User>\Application Data'

2. Пара мелочей.

drkns 17.11.2010 00:12:50 +0200 - build 1723

1. Опечатка в 1722.

drkns 16.11.2010 19:14:24 +0200 - build 1722

1. Убираем из копира поддержку переименования файла в своё SFN - реализация приводит к глюкам при обычном переименовании.

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

3. SFN в панелях отображаются в правильном регистре.

4. По просьбам телезрителей - FarRecursiveSearch не ищет по SFN.

5. Оптимизация некоторых api*-обёрток.

drkns 15.11.2010 13:47:00 +0200 - build 1721

1. С форума: "Проблема при записи макроса".

t-rex 12.11.2010 21:32:19 +0200 - build 1720

1. Mantis#1527: В истории ввода помеченные пункты не остаются вверху выпадающего списка и могут быть из него удалены как устаревшие.

drkns 12.11.2010 19:39:44 +0200 - build 1719

1. Уточнение 1718.

drkns 12.11.2010 13:47:00 +0200 - build 1718

1. Mantis#0001587: Поломался переход far:goto "c:\long path"

drkns 12.11.2010 07:53:51 +0200 - build 1717

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

drkns 11.11.2010 11:11:11 +0200 - build 1716

1. Продолжение 1715.3. Для gcc минимальная версия w32api теперь 3.15.

drkns 10.11.2010 20:50:52 +0200 - build 1715

1. Уточнение надписей в диалоге создания ссылок

2. Mantis#0000329: Изменить цвета по умолчанию для Неизмененного текста
   Ну и для единообразия в комстроке выделение теперь cyan, a не gray.

3. Выкинут мусор из headers.hpp.

ts 09.11.2010 22:43:29 +0200 - build 1714

1. Macro: BM.back() теперь выполняет функции, ранее принадлежавшие BM.prev()
   BM.prev() выполняет только ожидаемую функцию возврата на предшествующую закладку

svs 08.11.2010 18:07:58 +0300 - build 1713

1. Macro: Удалены BM.first() и BM.last(). Вносили избыточность функционала...

   <АХТУНГ>

     вместо BM.first использовать BM.goto(1) 
     вместо BM.last  использовать BM.goto(BM.stat(0))
   
   </АХТУНГ>

2. Macro: уточнение работы (точнее отсутствия онной) Menu.XXX в диалогах со списками.

drkns 08.11.2010 16:10:32 +0200 - build 1712

1. Обход идиотского бага древних Windows:
   Конструкция ExpandEnvironmentStringsW(L"%__CD__%", NULL, 0); вызывала AV в ntdll:RtlExpandEnvironmentStrings_U.
   Плюс немного оптимизации.

ts 06.11.2010 20:45:04 +0200 - build 1711

1. Уточнение 1710.

svs 05.11.2010 16:50:49 +0300 - build 1710

1. Macro: добавка к букмаркам (from: Tim Sobolev)
    N=BM.first() - переход на первую закладку
    N=BM.last() - переход на последнюю закладку
    N=BM.goto([pos]) - переход на закладку с указанным индексом (pos=0 или не указан --> текущую)
    N=BM.push() - сохранить текущую позицию в виде закладки в конце стека
    N=BM.pop() - восстановить текущую позицию из закладки в конце стека и удалить закладку

  Добавка к BM.stat(I) - для I=1 возвращается индекс текущей закладки (0 если закладок нет)

  Примечание для BM.add() и BM.prev()

  Если была выполнена операция BM.add() и после неё BM.prev(), произойдёт
  следующее:

  а) Если текущая позиция в редакторе соответствует позиции, сохранённой в
  BM.add(), то произойдёт переход на предшествующую, созданной BM.add(),
  закладку.
  б) Если текущая позиция в редакторе не соответствует позиции, сохранённой в
  BM.add(), то текущая позиция будет сохранена и произойдёт переход на закладку,
  созданную BM.add().


drkns 03.11.2010 10:15:20 +0200 - build 1709

1. Уточнение 1708.

drkns 31.10.2010 22:24:07 +0200 - build 1708

1. Экспериментально:
   - дополнение умеет работать не с начала строки ("cd c:\wi" и т.п.).

drkns 30.10.2010 20:37:40 +0200 - build 1707

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

drkns 28.10.2010 16:48:32 +0200 - build 1706

1. Mantis#0001559: Ошибка Cannot find the file после смены папки из истории папок

svs 27.10.2010 13:23:28 +0300 - build 1705

1. Macro: коррекция поведения Selected, Bof, Eof, Empty.
   Теперь работают, как заявлено в Писании.

zg 27.10.2010 12:47:55 +0200 - build 1704

1. gcc build.

svs 26.10.2010 12:25:02 +0300 - build 1703

1. Первое приближение Mantis#0000466. Временно обернуто в PROCPLUGINMACROFUNC (в обычной сборке недоступно)

2. Перетасовка коде между macro.cpp и syntax.cpp
   Введено (внутренне) понятие "регистрация функции".

drkns 26.10.2010 00:45:47 +0200 - build 1702

1. По просьбам телезрителей: откат отката.
   Вернём назад опцию про привилегии, + теперь она по умолчанию выключена.

drkns 25.10.2010 21:39:28 +0200 - build 1701

1. Откат 1699.

drkns 25.10.2010 11:56:14 +0200 - build 1700

1. При VCTL_GETINFO возвращалось некорректное значение ViewerInfo::WindowSizeY.

drkns 24.10.2010 20:35:03 +0200 - build 1699

1. Отдельная опция для управления использованием дополнительных привилегий.

drkns 23.10.2010 00:21:14 +0200 - build 1698

1. При запуске bat-файла вида:

@echo off
cls
echo 1
echo 2
echo 3

- не отображались первые два пункта.

drkns 21.10.2010 11:57:27 +0200 - build 1697

1. Вайп симлинка портил файл, на который он ссылался.

drkns 20.10.2010 11:42:42 +0200 - build 1696

1. Включение/выключение запросов повышения прав вынесено в интерфейс.

drkns 20.10.2010 10:45:45 +0200 - build 1695

1. Mantis#0001557: Неверный показ атрибутов symlink

2. Некорректное отображение диалога атрибутов для случая, когда элемент одновременно является и жесткой и символической ссылкой.

drkns 15.10.2010 13:23:23 +0200 - build 1694

1. PluginInfo::DiskMenuNumbers -> PluginInfo::Reserved0.

drkns 15.10.2010 09:22:33 +0200 - build 1693

1. Уточнение 1692.

drkns 14.10.2010 20:01:32 +0200 - build 1692

1. Экспериментально:
   - горячие клавиши для плагинов в меню выбора диска теперь задаются не плагинами, а пользователем по F4.
   - в качестве горячей клавиши может выступать не только цифра, но и любой другой уникодный символ.

drkns 06.10.2010 19:59:59 +0200

1. ASLR.

drkns 03.10.2010 14:28:31 +0200 - build 1691

1. Уточнение 1683.

drkns 03.10.2010 00:28:13 +0200 - build 1690

1. Ошибка в обработке elevation-варианта SetFilePointerEx.

drkns 02.10.2010 23:36:23 +0200 - build 1689

1. Mantis#0001525: Copy folders with symbolic links (to other folders) inside

t-rex 01.10.2010 20:30:56 +0200 - build 1688

1. Mantis#1522: Лишний слеш в заголовке панели.
   Баг тут немного не в том. Мы конечно можем обрабатывать (удалять) эти слэши но этим как бы бессмысленно заниматься,
   и как раз то что часть из них удалилась это и есть баг.

t-rex 01.10.2010 08:21:10 +0200 - build 1687

1. Mantis#1520: crash on cd %tmp%
   Коррупция хипа в PrepareDiskPath(). За одно сделал мелкие оптимизации там же.

t-rex 01.10.2010 04:17:16 +0200 - build 1686

1. В случае "preloaded" плагина который требует более новый фар (GetMinFarVersion) сообщение об ошибке загрузки показывалось два раза.

chupakabra 30.09.2010 21:33:00 +0200 - build 1685

1. Поправка для 1684

chupakabra 30.09.2010 21:16:00 +0200 - build 1684

1. Mantis#0001514: Некорректная работа ConvertPath(CPM_REAL, ...) на DFS
   В internalNtQueryGetFinalPathNameByHandle() добавлена простая обработка сетевых путей.

drkns 28.09.2010 13:47:00 +0200 - build 1683

1. Хоткей для редактора F4 == "выход", по аналогии с вьювером.

2. Пара мелочей в elevation.

svs 27.09.2010 16:59:30 +0300 - build 1682

1. Mantis#0001512: Не срабатывают автостартующие макросы

2. Macro: mmode(2) - вернуть информацию (область и флаги) об условиях запуска "этой" макропоследовательности (исполняемой сейчас).
    Функция возвращает в младшем байте номер макрообласти, из которой стартовал макрос:

         0 - Other           -  Режим копирования текста с экрана, вертикальные меню
         1 - Shell           -  Файловые панели
         2 - Viewer          -  Внутренняя программа просмотра
         3 - Editor          -  Редактор
         4 - Dialog          -  Диалоги
         5 - Search          -  Быстрый поиск в панелях
         6 - Disks           -  Меню выбора дисков
         7 - MainMenu        -  Основное меню
         8 - Menu            -  Прочие меню
         9 - Help            -  Система помощи
        10 - Info            -  Информационная панель
        11 - QView           -  Панель быстрого просмотра
        12 - Tree            -  Панель дерева папок
        13 - FindFolder      -  Поиск папок
        14 - UserMenu        -  Меню пользователя
        15 - AutoCompletion  -  Список автодополнения
       255 - Common          -  Общая область

    остальные значения - флаги условий запуска (в т.ч. некоторые служебные флаги)

       Условия запуска:
         0x00000200 - НЕ передавать плагинам клавиши во время записи/воспроизведения макроса
         0x00000800 - этот макрос запускается при старте ФАРа
         0x00001000 - запускать, если командная линия пуста
         0x00002000 - запускать, если командная линия не пуста
         0x00004000 - запускать, если есть выделение в редакторе
         0x00008000 - запускать, если есть нет выделения в редакторе
         0x00010000 - активная:  запускать, если есть выделение
         0x00020000 - пассивная: запускать, если есть выделение
         0x00040000 - активная:  запускать, если есть нет выделения
         0x00080000 - пассивная: запускать, если есть нет выделения
         0x00100000 - активная:  запускать, если это плагиновая панель
         0x00200000 - пассивная: запускать, если это плагиновая панель
         0x00400000 - активная:  запускать, если это файловая панель
         0x00800000 - пассивная: запускать, если это файловая панель
         0x01000000 - активная:  запускать, если текущий объект "файл"
         0x02000000 - пассивная: запускать, если текущий объект "файл"
         0x04000000 - активная:  запускать, если текущий объект "папка"
         0x08000000 - пассивная: запускать, если текущий объект "папка"
                                                                                              
       Доп.инфа:
         0x00000100 - подавить обновление экрана во время выполнения макроса
         0x10000000 - текст макроса многострочный (REG_MULTI_SZ)
         0x40000000 - этот макрос необходимо запомнить при сохранении макросов
         0x80000000 - этот макрос отключен (помеченные этим флагом макросы не запускаются - ни с клавиатуры, ни из eval())

       TODO: последние 2 флага в принципе возможно сделать не ReadOnly

    Так же перетасовал значения MACROFLAGS_MFLAGS и удалил неиспользуемый MFLAGS_REUSEMACRO.

svs 23.09.2010 00:26:57 +0300 - build 1681

1. Mantis#0001508: Падение Far при выполнении макроса на медленно обновляемой панели
   Во время вызова макрофункций Panel.SetPos(), panel.SetPath() и Panel.SetPosIdx() макросы замораживаются
   до момента выполнения этих функций: на "больших" каталогах (например, сетевые, с большим количеством 
   файловых объектов и/или медленных каналах) эти функции могут выводить сообщения о процессе сбора 
   данных о файлах/каталогах, с возможностью отменить процесс по Esc.

   TODO: Сейчас в код добавлены куски кода, убирающие перед работой функций лочку экрана (и выставляющие 
         ее обратно, после исполнения) - см. между тэгами <Lock?> и </Lock?>.
         Это решение позволяет "увидеть" тот самый месаг о процессе сбора данных.
         Здесь "непонятки" - нужны ли эти куски?
         * если нужны, то возникает ситуация для случая, когда месаг появился и 
           юзер прервал сканирование... незаконченная транзакция
         * если не нужны, то ситуация обратная - пользователь для такого макроса 
           будет видеть не реагирующий ни на что Far (до момента завершения сканирования каталога)

drkns 21.09.2010 20:38:32 +0200

1. Очередная неполноценность gcc-хидеров.

warp 21.09.2010 00:30:00 +0100 build 1680

1. Случайно просочилось левое во враппер. Возвращаю.

warp 21.09.2010 00:15:00 +0100 build 1679

1. Экспериментально. Добавлена поддержка определения BD-ROM (раньше работало 
   плохо), BD-RW, HDDVD, HDDVD-RW.

2. Выкинул функцию определения типа привода по формату носителя. Это какое-то 
   уж слишком сильное колдунство.

drkns 18.09.2010 19:11:51 +0200 - build 1678

1. From svs:  По мотивам Mantis#0000928. У редактора и вьюверю в макросах состояние Modal так же выставляется.

2. From svs: неправильно позиционировалось меню по CtrlF12.

3. В plugin.hpp раскомментированы флаги XLAT_USEKEYBLAYOUTNAME и XLAT_CONVERTALLCMDLINE.

4. x64 warnings.

svs 17.09.2010 17:13:31 +0300 - build 1677

1. Mantis#0001502: Выделение элементов в меню режимов сортировки (Ctrl-F12)
     Клавиша #+# устанавливает прямую сортировку.
     Клавиша #-# устанавливает обратную сортировку.
     Клавиша #*# меняет сортировку на обратную.

t-rex 17.09.2010 12:49:19 +0200 - build 1676

1. Неправильная обработка oldfar::DM_GETTEXT при oldfar::FarDialogItemData.PtrLength==0.
   Надо удалить такое поведение в 2.0 API.

drkns 17.09.2010 10:53:53 +0200 - build 1675

1. Ошибка в логике расшифровки файлов при копировании.

drkns 16.09.2010 20:12:34 +0200 - build 1674

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

svs 16.09.2010 17:50:23 +0300 - build 1673

1. Mantis#0001504: Обеспечить возможность издавать звук в зависимости от раскладки
   Добавлены функции (macro):
	N=beep([N])
	  Здесь параметр (как у функции WinAPI MessageBeep):
		MB_ICONASTERISK = 0x00000040
			Звук Звездочка
		MB_ICONEXCLAMATION = 0x00000030
			Звук Восклицание
		MB_ICONHAND = 0x00000010
			Звук Критическая ошибка
		MB_ICONQUESTION = 0x00000020
			Звук Вопрос
		MB_OK = 0x0
			Стандартный звук
		SIMPLE_BEEP = 0xffffffff
			Встроенный динамик
	  Возвращает 1 или 0 (в случае неудачи)

	Прочие "извращения" со звуком - через плагины (после "решения" Mantis#0000466)

	N=kbdLayout([N])
	  Работа с раскладками клавиатуры
	  Параметр N:
		а) конкретика: 0x0409 или 0x0419 или...
		б) 1 - следующую системную (по кругу)
		в) -1 - предыдущую системную (по кругу)
		г) 0 или не указан - вернуть текущую раскладку.
 
	  Возвращает 0 в случае ошибки или предыдущую раскладку (для параметра N=0 - текущую)
	  Ошибки: не удалось определить имя текущей раскладки для консоли или не удалось получить хэндл консольного окна.

	  В случае указания конкретной НЕ существующей раскладки функция ошибку не выдаст и просто вернет текущую раскладку.

	Например,
	  print(itoa(kbdLayout(0x421),16))
	    При текущей русской раскладке просто вернет 4190419
	  print(itoa(kbdLayout(),16))
	    При текущей русской раскладке вернет 4190419
	  print(itoa(kbdLayout(0x409),16))
	    При текущей русской раскладке вернет 4190419 и переключит раскладку на английскую
	  print(itoa(kbdLayout(1),16))
	    При текущей русской раскладке вернет 4190419 и переключит на следующую раскладку (по кругу)

2. Macro: Удалена макрокоманда $KbdSwitch
   <АХТУНГ>

     Замените у себя $KbdSwitch на kbdLayout(1)
   
   </АХТУНГ>

3. Mantis#0001423 - Узнать состояние пункта меню
   Уточнение про состояние Checked.

   Теперь функция Menu.ItemStatus() возвращает в старшем слове символ пометки (U+XXXX)
   Если выставлен флаг 0x2 и старшее слово равно 0, то Far использует свой символ (0x221A)
   Если выставлен флаг 0x2 и старшее слово не равно 0, то Far использует символ пометки из старшего слова
   Если НЕ выставлен флаг 0x2 и старшее слово не равно 0, то это нишиша не обозначает

chupakabra 14.09.2010 21:33:00 +0200 - build 1672

1. Mantis#0000840: включаем Low-fragmentation Heap для CRT heap.

drkns 14.09.2010 09:58:33 +0200 - build 1671

1. Неправильно обрабатывались метасимволы вида !?$history$(!.!)?!

drkns 13.09.2010 11:30:02 +0200 - build 1670

1. Уточнение 1669 :)

drkns 13.09.2010 11:28:01 +0200 - build 1669

1. Потерялась строка в imports.cpp

warp 10.09.2010 23:39:00 +0300 - build 1668

1. Исправление в ProcessName(PN_GENERATENAME), теперь должен работать ProxyFTP через 
   враппер (при соответствующей версии враппера).

drkns 10.09.2010 19:45:44 +0200 - build 1667

1. Mantis#0001497: EditorControl (ECTL_GETBOOKMARKS) работает неправильно.

2. Mantis#0001498: Курсор не прячется при утаскивании диалога за пределы экрана.

drkns 09.09.2010 09:50:09 +0200 - build 1666

1. Mantis#0001495: Ошибка при поиске (AltF7) в %PATH%.

chupakabra 05.09.2010 14:33:00 +0200 - build 1665

1. При PutFilesW()=1 не устанавливаем курсор на каталоги.

chupakabra 02.09.2010 19:41:00 +0200 - build 1664

1. Откат 1661.

drkns 31.08.2010 12:40:01 +0200 - build 1663

1. Т.к. setupapi.dll есть везде - линкуем статически.
   Там же: несколько функций CM_* заменены на рекомендуемые SetupDi*-аналоги.

2. Коррекция lng.

zg 30.08.2010 01:25:01 +0200 - build 1662

1. добавлен гуид диалогу перемещения/переименования. раньше гуид совпадал с гуидом диалога копирования.

chupakabra 26.08.2010 22:54:00 +0200 - build 1661

1. Всегда передаем в GetFilesW полный путь.

chupakabra 26.08.2010 22:22:00 +0200 - build 1660

1. ACTL_PROGRESSNOTIFY - Far выполняет стандартное оповещение о завершении операции (мерцание кнопкой в таскбаре).

drkns 26.08.2010 21:02:33 +0200 - build 1659

1. Уточнение работы DN_GETDIALOGINFO.

2. Косметика в hotplug.cpp.

drkns 27.08.2010 09:50:32 +0200

1. Spanish translation (lng file) from Mauro72.

svs 26.08.2010 07:50:23 +0300 - build 

1. Mantis#0000986: Far 2 API - pascal
   Обновлен PluginW.pas

zg 25.08.2010 12:12:25 +0200 - build 1658

1. добавлены гуиды диалогам:
   - вопрос о перезаписи r/o файла. раньше гуид совпадал с гуидом обычного диалога перезаписи.
   - копирование файла.
   - создание жёстких связей

svs 25.08.2010 12:40:09 +0300 - build 1657

1. Panel API: добавлены FCTL_GETPANELFORMAT и FCTL_GETPANELHOSTFILE.
   (Mantis#0001472: Добавить FCTL_GETPANELFORMAT, FCTL_GETPANELHOSTFILE)

svs 25.08.2010 11:17:55 +0300 - build 1656

1. Mantis#0001471: QuickView в панели плагина показывает случайную информацию о каталогах
   Для плагинов уберем показ некоторых параметров папок (выводится нереальный мусор)

2. Первый этап перелопачивания FolderShortcuts
    - Функции GetShortcutFolder() и SaveFolderShortcut() понятия не имеют что такое "клавиша".
    - математика реагирования на RCtrl[Shift]-0..9 вынесена из FileList::ProcessKey() в class Panel в виде функций ExecShortcutFolder() и SaveShortcutFolder().
    - про функцию GetShortcutFolderSize() забыли - остатки роскоши былой.

zg 24.08.2010 20:38:59 +0200 - build 1655

1. добавлены гуиды диалогам:
   - открытие файла в редакторе.
   - сохранение файла в редакторе.
   - создание папки.
   - установка атрибутов.

drkns 23.08.2010 19:54:28 +0200 - build 1654

1. Автодополнение работает и для путей вида %env%\foo.

drkns 22.08.2010 08:30:54 +0200 - build 1653

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

svs 21.08.2010 23:18:55 +0300 - build 1652

1. Macro: добавлен термин "точная строка" ("verbatim string", как в C#)
   Точная строка начинается со знака @ и заключена в двойные кавычки.
   В ней escape-последовательности не обрабатывается, что позволяет использовать такую строку там, где
   последовательность формируется с применением метасимволов, например в UserMenu. Например, в пути заменяем все '\' на '/'
    print(replace(@"!\!.!", @"\", ""))
   Чтобы включить знак двойной кавычки в "точную строку", следует использовать знак кавычек дважды:
     @"""Слово!"" в двойных кавычках."

svs 21.08.2010 11:00:41 +0300 - build 1651

1. Macro: не работала функция mload()

zg 20.08.2010 18:10:13 +0200 - build 1650

1. Mantins#0001469: Editor Word Completion перестал понимать нажатие Right.

drkns 20.08.2010 15:08:21 +0200 - build 1649

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

drkns 19.08.2010 23:07:06 +0200 - build 1648

1. Кто-то внедрил хитрую оптимизацию: получать путь к временной папке при старте, сохранять в переменную и использовать в дальнейшем.
   В результате переопределение этого пути обходило нас стороной.

drkns 19.08.2010 20:21:57 +0200 - build 1647

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

drkns 19.08.2010 19:36:20 +0200 - build 1646

1. В меню смены диска опознаются виртуальные (VHD) жёсткие диски. Опционально отображается имя VHD-контейнера.
   Работает в Windows 7/Windows Server 2008 R2 и выше.

2. Несколько ненужных IsProcessAssignMacroKey и ещё по мелочи.

svs 19.08.2010 14:56:31 +0300 - build 1645

1. Macro: добавлена функция N=mload(S) 
     считать из реестра (область Vars) переменную S
     вернет 1 - есть такая переменная и она успешно считана в память
            0 - нет такой переменной в реестре, переменная не создается,
                если переменная была в памяти, а из реестра стерли, то значение в памяти не изменяется.
     функция понимает REG_SZ, REG_MULTI_SZ, REG_DWORD и REG_QWORD.

svs 18.08.2010 22:31:22 +0300 - build 1644

1. Mantins#0001305: wish: Show some cols of Find window
   Настройка колонок находится в диалоге "Find file advanced options" (в поисковике кнопка "Advanced")
   Синтаксис типов колонок - как у панелей.
   Отличия и ограничения - описаны в хелпе к диалогу "Find file advanced options".

   Про развитие:
     1. сделать, что бы список формировал строку вывода (сейчас списку готовую строку подсовывают)
     2. после этого добавить еще 9 режимов отображения и снять ограничение на имя ("всегда в конце")
     4. в итоге можем получить динамичное переключение режимов отображения результатов по Ctrl-цифра (как в панелях)
   
2. Попутно бага нашлась - в колонке "G" для ".." показывалась какая то ерунда.

3. ViewSettingsToText() и  TextToViewSettings() более не члены класса FileList

drkns 17.08.2010 20:15:03 +0200 - build 1643

1. При перемещении в корзину соответствующая кнопка диалога подтверждения подписывается как "move", а не "delete".

drkns 16.08.2010 18:27:26 +0200 - build 1642

1. Доработка меню для OpenFilePlugin:
   - "Even if only one plugin found" зависит от "Show standard association item";
   - отдельная настройка для ShiftF1;
   - для ShiftF1 пункт "standard association" не показывается.

drkns 09.08.2010 13:47:00 +0200 - build 1641

1. Mantis#0001459: проблема с Drag and Drop files

2. Уточнение работы NTPath. Больше не должно появляться ситуаций, подобных M#0001458. Также теперь работают пути вида "C:\\\\\Dir1////Dir2".

3. При считывании каталога перерисовка и опрос консоли производится как везде - каждые 200 мс, а не после каждых 64 файлов. Там же: убрано ненужное сообщение после отмены считывания.

drkns 09.08.2010 12:27:32 +0200 - build 1640

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

drkns 07.08.2010 00:20:54 +0200 - build 1639

1. Mantis#0001455: Очень большая задержка при отмене копирования на сетевой диск.

drkns 05.08.2010 23:30:53 +0200 - build 1638

1. Уточнение 1633.2.

svs 05.08.2010 15:50:06 +0300 - build 1637

1. Mantis#0001451: Странности MCMD_CHECKMACRO
   Виснет при старте для "пустышки"
     "Sequence"="\"\""

drkns 05.08.2010 14:15:16 +0200 - build 1636

1. При < сохранении файла встроенным редактором | обновлении файла описаний | редактировании локального меню > не теряются альтернативные потоки данных.

2. Mantis#0001443: Неудобная реакция на клик мышкой в окне поиска.

3. FindFirstFile -> FindFirstFileEx. В Windows 7/2008 R2 возможно некоторое ускорение просмотра папок.

svs 04.08.2010 11:45:04 +0300 - build 1635

1. Mantis#0001451: Странности MCMD_CHECKMACRO
   Доработаем UserDefinedList.

yjh 31.07.2010 07:09:58 +0300 - build 1634

1. Уж не знаю кто "боролся" с диагностикой приведения BOOL к bool после 
   тернарной операции, но, в результате и диагностика осталась и получился
   нерабочий конструкт.

drkns 30.07.2010 23:47:23 +0200 - build 1633

1. При копировании каталогов теперь сохраняются их альтернативные потоки данных.

2. Прибита логика "если копируем каталог и включён фильтр и файлы в фильтр не попали, то пустой каталог не нужен".

t-rex 30.07.2010 21:27:16 +0200 - build 1632

1. From Max Moysyuk: дополнительная правка для Mantis#1419: Очень длительный переход на локальный диск (AltF1/AltF2).

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

drkns 29.07.2010 21:09:20 +0200 - build 1631

1. Mantis#0001443: Неудобная реакция на клик мышкой в окне поиска.

2. Mantis#0001449: Сообщение об ошибке смены диска не влезает в консоль.

3. Кнопки "Go to", "View" и  "Panel" в диалоге поиска блокируются, если ничего не нашли.

4. Кнопка "Filter" в диалогах копирования и поиска блокируется, если не включена опция "[ ] Use filter"

drkns 28.07.2010 10:00:00 +0200 - build 1630

1. Изменения в usermenu.
   - разделителем теперь считается пункт с горячей клавишей "--" и любой меткой.
   - горячая клавиша "-" теперь всегда считается горячей клавишей "-".

2. Подсократим число восклицаний!!!111 в языковых файлах.

drkns 27.07.2010 17:44:36 +0200 - build 1629

1. Mantis#0001447: Виснем при переходе к файлу после поиска

svs 27.07.2010 14:18:55 +0300 - build 1628

1. Mantis#0001446: функция Date() возвращает 0

drkns 26.07.2010 21:21:04 +0200 - build 1627

1. Не работало создание символических ссылок из-под ограниченной учётной записи в 64-битных ОС.

drkns 26.07.2010 13:33:33 +0200 - build 1626

1. При CtrE/CtrlX/Up/Down/MsWheelUp/MsWheelDown в комстроке автодополнение больше не включается.

2. Mantis#0001443: Неудобная реакция на клик мышкой в окне поиска.

drkns 21.07.2010 16:41:47 +0200 - build 1625

1. Mantis#0001438: Far 2.0.1624: Изменение поведения редактора по сравнению с 1623 (и до).

drkns 20.07.2010 22:08:47 +0200 - build 1624

1. Mantis#0001437: Far 2.0.1623: Пример изменения поведения редактора.

2. Уточнение 1609.2: CF_HDROP используется только для "стандартного" CtrlIns, <CtrlShift|CtrlAlt|AltShift>Ins копируют только текст.

drkns 20.07.2010 01:21:33 +0200 - build 1623

1. Аттракцион невиданной щедрости. Цикличный вызов ECTL_GETSTRING работает в 100500 раз быстрее. Просто так, без ритуальных приседаний с ECTL_SETPOSITION + ECTL_GETSTRING(-1).

t-rex 16.07.2010 20:13:36 +0200 - build 1622

1. "Show total copy progress indicator" on by default.

svs 16.07.2010 10:03:22 +0300 - build 1621

1. Начало "Ахтунгов" в макросах (см. комментарий к 1454 и 1455).

   * удалена команда $Date
       заменить на print(Date(блаблабла_или_пусто))
   
   * удалена команда $MMode
       заменить на mmode(1,2)
   
   * удалено состояние IClip
       заменить на clip(5,-1) (при этом учесть, что clip() вернет 1 или 2)
   
   * удалена команда $IClip
       заменить на clip(5,0) или просто clip(5)

   * удалено состояние DisableOutput (не флаг макроса!)
       заменить на вызов функции mmode(1,-1)

drkns 15.07.2010 13:47:00 +0200 - build 1620

1. Перетасовка настроек:
   Диалог "Plugin selection" вырос до "Plugins manager", сюда же переехал "Path for personal plugins" и добавлена пара новых опций:
   "OEM plugins support" - глобальное включение/отключение поддержки старых плагинов;
   "Scan symbolic links" - загружать/не загружать плагины из ссылок.

2. Уточнение 1616.1.

drkns 15.07.2010 10:00:00 +0200 - build 1619

1. x64.

drkns 15.07.2010 10:00:00 +0200 - build 1618

1. Небольшая оптимизация ScreenBuf::MoveCursor()

drkns 14.07.2010 18:04:04 +0200 - build 1617

1. Уточнение алгоритма блочной записи/чтения консоли.

drkns 12.07.2010 19:38:29 +0200 - build 1616

1. Расширена функциональность диалога ошибки смены диска - теперь можно не отходя от кассы выбрать более другой диск.

t-rex 12.07.2010 10:45:46 +0200 - build 1615

1. Mantis#1432: проблемы сборки в gcc.

svs 12.07.2010 10:44:28 +0300 - build 1614

1. Mantis#0001412: F1 при просмотре *.hlf

drkns 09.07.2010 13:04:33 +0200 - build 1613

1. Переменная faradminmode наследовалась от родительского процесса.

t-rex 08.07.2010 20:10:14 +0200 - build 1612

1. Исправление 1607 (http://forum.farmanager.com/viewtopic.php?p=65440#p65440).

t-rex 08.07.2010 19:29:44 +0200 - build 1611

1. И ещё раз, Mantis#1429: Некоректная работа при открытии через "... | far.exe /v -"
   apiCreateFile() добавляет флаги (может это всё таки убрать а то не очевидно совсем?),
   а CONIN$ можно открывать только с очень определёнными флагами.

drkns 06.07.2010 16:47:23 +0200 - build 1610

1. Продолжение 1609: содержимое CF_HDROP-буфера может вставляться в редактор/строки ввода в виде текста.

drkns 06.07.2010 13:55:22 +0200 - build 1609

1. Пара багов в установке атрибутов.

2. В порядке эксперимента: при копировании с панели имён файлов в буфер обмена используется также формат CF_HDROP,
   что позволяет "вставлять" эти файлы из буфера в более других программах (проводник и т. п.).
   Обратная операция (копировать "там" и вставлять "здесь") пока не поддерживается, но всё возможно.

t-rex 08.07.2010 00:34:21 +0200 - build 1608

1. From Max Moysyuk: Mantis#1419: Очень длительный переход на локальный диск (AltF1/AltF2)

t-rex 08.07.2010 00:12:29 +0200 - build 1607

1. Mantis#1428: Падение при FCTL_SETNUMERICSORT.

drkns 06.07.2010 22:36:48 +0200 - build 1606

1. при определении типа CD-привод кроме чтения зачем-то открывался ещё на запись.

svs 06.07.2010 18:00:12 +0300 - build 1605

1. Mantis#0000986: Far 2 API - pascal
   Обновлены FarColorW.pas, FarKeysW.pas и PluginW.pas

2. Mantis#0000968: waitkey() пропускает AltIns

drkns 05.07.2010 11:00:00 +0200 - build 1604

1. В диалоге создания ссылок доступен ещё один "тип" символических ссылок - без явного указания, файл это или папка.
   Нужный вариант выбирается автоматически по атрибутам объекта, на который указывает ссылка.

2  В FSF.MkLink доступен флаг FLINK_SYMLINK, автоматически выбирающий тип символической ссылки.

drkns 02.07.2010 16:17:18 +0200 - build 1603

1. Mantis#0001425: глюк после сброса настроек раскраски файлов

t-rex 02.07.2010 15:20:09 +0200 - build 1602

1. Снова поломался "far /v -".

svs 02.07.2010 11:22:10 +0300 - build 1601

1. Mantis#0000926: Eval() устанавливает DisableOutput=1
   функция KeyMacro::GetCurRecord() не те данные возвращала (вместо данных из рабочего макроса брала библиотечный код)

2. Mantis#0001423: Узнать состояние пункта меню
     N=Menu.ItemStatus([N]);

     Вернуть состояние N-го пункта меню (N - 1-based), или текущего пункта, если N==0 или не указан.

     Работает в абсолютном пространстве пунктов меню (без учета фильтров пр. механизмов сокрытия)
     
     Возвращает набор флагов:
       0x00000001 - Selected (текущий пункт)
       0x00000002 - Checked (отображена метка выбора)
       0x00000004 - Separator (пункт является разделителем)
       0x00000008 - Disabled (пункт недоступен)
       0x00000010 - Grayed ("серый")
       0x00000020 - Hidden (скрыт фильтром)

       0xFFFFFFFF - нету нишиша/ошибка (N вне диапазона наличности)

     TODO (после реализации Mantis#0001422):
       0x00000040 - Hotkey present (имеет хоткей)
       0x00000080 - Hotkey manual (хоткей был назначен юзером)

drkns 01.07.2010 22:20:00 +0200 - build 1600

1. Mantis#0001420: far manager не запрещает винде хибернейт во время копирования(перемещения).

t-rex 30.06.2010 21:21:26 +0200 - build 1599

1. Ещё один перетрях CacheRead (надеюсь последний),
   починило дофига разных мистических глюков при поиске в просмотре в больших файлах в последних билдах.

svs 29.06.2010 15:01:56 +0300 - build 1598

1. Mantis#0001416: waitkey(0,0) не реагирует на клики мышки с модификаторами

2. Macro: ошибка парсера функций с необязательными элементами.
   "...наткнулся на неработоспособность макроса msgbox(menu.value,gethotkey()) в таком сочетании menu.value ничего не возвращает..."
   (возможно нужно уточнение)

t-rex 27.06.2010 13:43:59 +0200 - build 1597

1. Поиск во вьювере в общем не работал для больших файлов.

2. GCC ворнинг.

t-rex 26.06.2010 21:03:19 +0200 - build 1596

1. Grey+/- во въювере приводили к не совсем ожидаемым результатам.

drkns 26.06.2010 16:28:50 +0200 - build 1595

1. Не работал запуск из истории внешних команд просмотра/редактирования.
   Причём лет 5 уже.

chupakabra 24.06.2010 14:34:00 +0200 - build 1594

1. Форсируем отображение имени первого обрабатываемого файла при установке атрибутов
   (иначе при установке атрибута Compressed для больших файлов отображается пустое поле).

drkns 16.06.2010 13:47:00 +0200 - build 1593

1. После 1583 вьювер тормозил при работе по сети.

2. Мигаем таскбарной кнопкой 5 раз, а не бесконечно.

drkns 16.06.2010 11:21:12 +0200 - build 1592

1. Более быстрая реализация File::Eof()

2. Немного bool.

drkns 16.06.2010 18:56:32 +0200 - build 1591

1. Mantis#0001409: Падение во время удаления папки.

2. Глюк в хелпе.

t-rex 15.06.2010 00:05:09 +0200 - build 1590

1. В CtrlF12 добавлена возможность сортировать по Custom data.

t-rex 14.06.2010 00:56:58 +0200 - build 1589

1. Mantis#1405: После cls на экране остаётся C:\>cls

t-rex 12.06.2010 19:14:06 +0200 - build 1588

1. Экспериментально, неофициально и криво на посмотреть, поиграться и подумать:
   поддержка кастом колонки (C0) заполняемой плагинами в не плагиновых файловых панелях
   int WINAPI GetCustomDataW(const wchar_t *FilePath, wchar_t **CustomData)
   void WINAPI FreeCustomDataW(wchar_t *CustomData)
   если несколько плагинов возвращают кастом данные для одного и того же файла то будет показано "Plugin1 Plugin2 Plugin3"

2. Выскакивала ошибка языкового файла при открытия диалога редактирования панельных режимов.

drkns 12.06.2010 08:58:26 +0200 - build 1587

1. И ещё раз.

drkns 12.06.2010 08:43:29 +0200 - build 1586

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

t-rex 11.06.2010 18:16:03 +0200 - build 1585

1. Тоже что и 1584.1 но для обновления плагиновой панели.

drkns 11.06.2010 13:47:00 +0200 - build 1584

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

2. Косметические изменения в коде.

drkns 09.06.2010 11:17:22 +0200 - build 1583

1. Отучение вьювера от FILE*.
   Должно заработать повышение прав.
   Просмотр \\.\physicaldrive0, \\.\cdrom0 и т. п. отвалился. Но это временно.

t-rex 08.06.2010 22:44:13 +0200 - build 1582

1. Фикс как и в 1579.2 только для VBlock2Text().

drkns 07.06.2010 21:07:35 +0200 - build 1581

1. Переменная FARUSER могла быть установлена и при отсутствии ключа /u (наследовалась от родительского процесса).

yjh 07.06.2010 15:41:36 +0300 - build 1580 

1. В список QutedSymbols добавлен oem(0xFF) ("sopft-space") - этого требуют
   стандартные консольные тулзы (copy/move/etc)

drkns 06.06.2010 22:01:56 +0200 - build 1579

1. Уточнение работы ACTL_GETFARRECT.

2. По CtrlX на пустой строке в буфер обмена попадал мусор.

drkns 01.06.2010 14:12:22 +0200 - build 1578

1. Метасимвол !=\ зачем-то окавычивал строку.

drkns 31.05.2010 22:40:13 +0200 - build 1577

1. Вместо макроса countof используем макрос ARRAYSIZE.
   Смысл сего в том, что ARRAYSIZE - только для массивов и попытка запихнуть туда поинтер даст ошибку копиляции (а не выполнения, как с sizeof/sizeof).

drkns 29.05.2010 13:08:42 +0200 - build 1576

1. После ShiftEnter на папке не перерисовывались панели.

2. Уточнения 256- и 16-цветных вариантов far.ico.

drkns 29.05.2010 12:14:02 +0200 - build 1575

1. Ещё пара мелочей на ту же тему.

drkns 28.05.2010 23:47:51 +0200 - build 1574

1. Ещё порция про запускатель и перерисовки.

2. Уточнение 1564.2 - учитываем, что вызовы функций oem-плагинов бывают вложенными.

3. При изменениях размера окна в режиме "/w" содержимое консоли не стирается.
   Экспериментально, возможны мелкие артефакты и прочие ахтунги.

drkns 25.05.2010 19:57:53 +0200 - build 1573

1. ACTL_GETFARRECT - "правильный" способ получения координат "окна" FAR в консольном буфере;
   ACTL_GETCURSORPOS - получение координат курсора относительно "окна" FAR;
   ACTL_SETCURSORPOS - установка координат курсора относительно "окна" FAR.

drkns 25.05.2010 07:37:52 +0200 - build 1572

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

drkns 24.05.2010 22:45:41 +0200 - build 1571

1. Mantis#0001393: Артефакты на экране при запуске приложения с помощью макроса

drkns 24.05.2010 22:34:42 +0200 - build 1570

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

t-rex 24.05.2010 09:19:39 +0200 - build 1569

1. from Konstantin Stupnik: Mantis#1388: Регулярные выражения: неправильное значение в группе.

drkns 23.05.2010 23:23:23 +0200 - build 1568

1. После 1564-1566 вылезли скрытые проблемы с отрисовкой в запускателе.

drkns 23.05.2010 14:08:39 +0200 - build 1567

1. Mantis#0001389: Крэш при WindowMode=0 и ScreenBufferSize.Height=9999
   Теоретически, теперь far должен работать при любых размерах буфера.

drkns 22.05.2010 22:45:48 +0200 - build 1566

1. И ещё.

drkns 22.05.2010 22:16:38 +0200 - build 1565

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

drkns 22.05.2010 20:00:00 +0200 - build 1564

1. Инкапсуляция всех используемых консольных функций.
   Как следствие - стало возможным очередное "то, о чём так долго говорили большевики": Far умеет работать в пределах окна (а не буфера) консоли.
   Поставив высоту буфера побольше, можно медитировать на длинные выводы консольных программ. Кнопки CtrlAlt<PgUp|PgDn> расширят кругозор в соответствующем направлении.

   АХТУНГ! - в этом режиме гарантированно будет напрочь сносить крышу плагинам, самостоятельно рисующим что-либо
   в консоли напрямую, или наивно предполагающим, что размер фара можно получать через CONSOLE_SCREEN_BUFFER_INFO::dwSize.

2. После завершения работы неюникодных плагинов выполняется SetFileApisToANSI().

t-rex 21.05.2010 18:25:32 +0200 - build 1563

1. Mantis#1387: Зависание при обработке User Menu на имени файла с символом &.

2. Некорректная работа HiStrLen().

t-rex 20.05.2010 20:32:18 +0200

1. Mantis#1386: gcc ошибка компиляции (некорректный регистр в имени заголовочного файла).

t-rex 19.05.2010 23:06:06 +0200 - build 1562

1. В PluginDialogBuilder для AddEditField() теперь надо задавать размер (в символах) выходного буффера.

drkns 19.05.2010 20:09:11 +0200 - build 1561

1. Mantis#0001384: Слегка приглушить символ пробела в режиме Show Whitespace.

t-rex 19.05.2010 18:53:42 +0200 - build 1560

1. GetSize() в UnicodeString для получения размера внутренего буффера.

2. Оптимизация ReplaceStrings().

3. Удалил каплю мусора.

t-rex 19.05.2010 15:57:31 +0200 - build 1559

1. С форума http://forum.farmanager.com/viewtopic.php?p=63127#p63127
   Крэш в истории, коррупция хипа в ReplaceStrings().
   
drkns 19.05.2010 12:50:22 +0200 - build 1558

1. Уточнение обновления окружения.

drkns 17.05.2010 20:06:14 +0200 - build 1557

1. Уточнение обработки WM_SETTINGCHANGE.

drkns 15.05.2010 22:26:55 +0200 - build 1556

1. Излишняя активность в панели задач при копировании c [x] Show total copy progress indicator.

t-rex 15.05.2010 16:10:31 +0200 - build 1555

1. from Alexander Kornienko: Mantis#1383: Дополнения для Mantis#1224 (VBlock2Text)

t-rex 14.05.2010 16:56:29 +0200 - build 1554

1. from Alexander Kornienko: Mantis#1224: copying big block of binary data causes big mem/cpu usage and heap thrashing.
   Надо бы такой же фикс и в VBlock2Text() сделать.

2. Потенциальная утечка памяти в Block2Text() и VBlock2Text(). 

svs 14.05.2010 16:13:05 +0300 - build 1553

1. Macro: добавлена функция S=Menu.GetValue([N]) - возвращает текст пункта меню для заданной позиции (позиция меню не меняется).
   Если N не указан или равен 0 - действие аналогично применению Menu.Value
   для отсутствующего пункта возвращается пустая строка.

zg 14.05.2010 02:18:32 +0200 - build 1552

1. после 1444 в DN_GOTFOCUS Param1 <> SendDlgMessage(DM_GETFOCUS).

2. экспериментально DN_GOTFOCUS приходит после установки выделения для элементов с флагом DIF_SELECTONENTRY.

3. gcc warning.

drkns 14.05.2010 01:55:38 +0200 - build 1551

1. Mantis#0001380: проблема с выставлением значения в поле часов/минут в Filters -> Date/Time -> Relative

drkns 14.05.2010 00:07:38 +0200 - build 1550

1. Излишняя активность в панели задач при включенном отображении описаний.

drkns 13.05.2010 17:33:18 +0200 - build 1549

1. Уточнение предыдущего билда.

drkns 13.05.2010 15:47:47 +0200 - build 1548

1. Теперь у нас есть цикл обработки оконных сообщений.
   Как следствие, доступна следующая магия:
   - автообновление дискового меню и списка hotplug-устройств при добавлении/удалении usb, cd/dvd и пр.;
   - автообновление переменных окружения при изменении их в настройках ОС.

svs 13.05.2010 16:03:14 +0300 - build 1547

1. + CPM_NATIVE для FSF.ConvertPath()
   Возвращает полный путь с префиксом "\\?\"
   (from drkns)

drkns 13.05.2010 00:21:42 +0200 - build 1546

1. Класс Event: обёртка над HANDLE/<Create|Set|Reset>Event/WaitForSingleObject.

drkns 11.05.2010 22:53:26 +0200 - build 1545

1. From Anton Sinitsin: "Ё" в FarRus.lng.

2. Утончения документации и сборки.

drkns 11.05.2010 15:25:32 +0200 - build 1544

1. Ошибки в отрисовке вертикального текста и расчете размеров диалога.

svs 11.05.2010 15:05:18 +0300 - build 1543

1. Небольшие уточнения про хоткеи в менюхах...
   Кроме Upper/Lower добавлен анализа на раскладку (вызов KeyToKeyLayout())

svs 11.05.2010 09:59:58 +0300 - build 1542

1. Macro: Содержимое 
      
      [A|P]Panel.HostFile, [A|P]Panel.Prefix, [A|P]Panel.Path0, [A|P]Panel.Path, 
      [A|P]Panel.UNCPath, [A|P]Panel.Current, Editor.SelValue, Editor.Value, Help.FileName, 
      Help.Topic, Help.SelTopic, Viewer.FileName

   принудительно приводится к "строке", что позволяет избежать ситуации, когда для пустого 
   содержимого возвращается число 0.

   Что у нас еще такого, особенного осталось?

drkns 09.05.2010 23:50:50 +0200

1. From Anton Sinitsin: "Ёфицирование" хелпа.

svs 07.05.2010 16:24:45 +0300 - build 1541

1. Help. From "Alexey Samlyukov"

2. Добавлен "@ElevationDlg". Заготовка, дабы не материлосё оно...

drkns 06.05.2010 22:21:32 +0200 - build 1540

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

2. С форума: "В билде 1539 появилось странное: после Ctrl-O в углу остаётся кусок рамки".

drkns 05.05.2010 23:16:12 +0200 - build 1539

1. Уточнение 1536: при, например, "macro:post F7" индикатор исчезал только после нажатия любой клавиши.

drkns 04.05.2010 23:42:49 +0200 - build 1538

1. Не работало повышение прав при редактировании симлинков.

2. Генерирование ассемблерного листинга для vc-билда по умолчанию выключено. Регулируется флагом ASM_LISTING мейка.

t-rex 04.05.2010 13:53:24 +0200 - build 1537

1. Где то в последних билдах описания стали записываться с '\0' перед переводом строки
   что приводило к различным проблемам с 3rd party программ для описаний.

drkns 03.05.2010 12:45:16 +0200 - build 1536

1. С Mantis#1362 проблемы: эта "индикация выполнения" приводила к постоянным перерисовкам всего экрана.
   Ну и 'Р' теперь зелёного цвета :)

t-rex 02.05.2010 21:46:41 +0200 - build 1535

1. Mantis#1288: Медленная работа с сетевыми папками в режиме показа овнеров.

drkns 02.05.2010 19:13:38 +0200 - build 1534

1. Коррекция размеров для DIF_CENTERGROUP

2. Ещё пара уточнений 1530.2.

3. Mantis#0001356: После копирования в заголовке окна остается "копирование"

drkns 30.04.2010 17:14:30 +0200 - build 1533

1. Ещё пара уточнений 1530.2.

svs 30.04.2010 13:20:57 +0300 - build 1532

1. Mantis#0001362: Индикация выполнения макроса символом в углу экрана
   Символ 'P'.

drkns 30.04.2010 11:09:22 +0200 - build 1531

2. Уточнение 1530.2: DIF_DEFAULT и DIF_FOCUS используются в инициализации (DialogDataEx), а в элементах (DialogItemEx) по прежнему DefaultButton и Focus.

drkns 30.04.2010 01:01:01 +0200 - build 1530

1. Для default button можно задавать цвет.

2. В качестве подготовки к слому API: вместо поля DefaultButton в диалоговых структурах теперь флаг DIF_DEFAULT, вместо Focus - DIF_FOCUS.
   Относится это только к internals, для плагинов всё по старому. Пока.

drkns 29.04.2010 11:38:38 +0200 - build 1529

1. Вернём удаление пустых файлов описаний.

2. Флага FMSG_DOWN больше нет.

3. Косметические изменения в lng.

svs 29.04.2010 09:55:53 +0300 - build 1528

1. Macro: в функцию eval добавлена возможность программного вызова макроса, назначенного на кнопкосочетание
   http://forum.farmanager.com/viewtopic.php?f=15&t=5257

   Для этого 
   а) второй параметр функции установить в 2
   б) первым параметром указать строку в формате "Area/Key"
      здесь:
        "Area" - область, из которой хотим вызвать макрос
        "/" - разделитель
        "Key" - название клавиши
      "Area/" можно не указывать, в этом случае поиск "Key" будет вестись в текущей активной макрообласти, 
         если в текущей области "Key" не найден, то поиск продолжится в области Common.
         Что бы отключить поиск в области Common (ограничится только "этой" областью), 
         необходимо в качестве "Area" указать точку.

   Для режима 2 функция вернет 
     -1 - ошибка
     -2 - нет макроса, заданного кпопкосочетанием (или макрос заблокирован)
      0 - Ok

   Примеры.
     eval("Shell/CtrlP",2) - вызвать макрос, навешенный на CtrlP из области Shell
     eval("CtrlP",2) - вызвать макрос, навешенный на CtrlP из текущей макрообласти, если в текущей CtrlP нет, то вызвать из области Common
     eval("./CtrlP",2) - вызвать макрос, навешенный на CtrlP только из текущей макрообласти

     eval("Shell/Alt/",2) - вызвать макрос, навешенный на Alt/ из области Shell
     eval("Alt/",2) - вызвать макрос, навешенный на Alt/ из текущей макрообласти, если в текущей Alt/ нет, то вызвать из области Common
     eval("./Alt/",2) - вызвать макрос, навешенный на Alt/ только из текущей макрообласти


drkns 28.04.2010 00:42:17 +0200 - build 1527

1. В Message() теперь для единообразия всегда резервируется строка под текст сообщения, даже если сам текст отсутствует.

drkns 27.04.2010 19:51:09 +0200 - build 1526

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

drkns 27.04.2010 16:47:00 +0200 - build 1525

1. И снова всякое про FindFiles.

chupakabra 27.04.2010 16:32:00 +0200

1. makefile_vc: для VS2010 Platform=x64.

drkns 27.04.2010 15:47:00 +0200 - build 1524

1. Ещё одно уточнение в Message().

2. Изменения в записи diz-файлов.

3. Ещё всякое про FindFiles.

drkns 26.04.2010 15:47:00 +0200 - build 1523

1. Уточнение расчета размеров диалогов для функции Message().

2. Неправильно работало определение кодовой страницы по BOM, если кроме BOM в файле ничего не было.

drkns 26.04.2010 00:14:16 +0200 - build 1522

1. В качестве продолжения Mantis#0001096 - отрезание пробелов убрано ещё из пары мест.

t-rex 25.04.2010 22:48:55 +0200 - build 1521

1. Mantis#1316: Ошибка копирования в буфер обмена вертикальных блоков.
   Ещё одна внутренняя переделка работы с клипбордом, теперь кроме обычных функций есть ещё и класс,
   в местах где производятся несколько поочерёдных операций над клипбордом нужно использовать класс напрямую
   чтоб сделать всё "в одну транзакцию".

drkns 25.04.2010 22:38:17 +0200 - build 1520

1. Уточнение предыдущего билда.

drkns 25.04.2010 19:55:48 +0200 - build 1519

1. Продолжение начатого в 953 и 972. Перетрях поиска. Часть третья, глобальная.

2. Mantis#0001213: Некорректный заголовок консоли в диалоге поиска файлов.

3. Mantis#0001353: Диалог запроса повышения полномочий скрыт за окном поиска.

4. Для DI_BUTTON доступен новый флаг: DIF_SETSHIELD - "аналог" BCM_SETSHIELD.

5. Mantis#0000315: Подсветка кнопок по умолчанию диалогов.

6. Mantis#0000647: Button styles in the dialogs.

7. Mantis#0001217: Не работает метасимвол !@!.

8. Разные мелочи в системе повышения полномочий.

drkns 22.04.2010 21:11:09 +0200 - build 1518

1. Уточнение 1517.5: предупреждение об ошибке преобразования выводилось и тогда, когда этого не требовалось.

2. Запросы повышения полномочий логически разделены на "запросы чтения" и "запросы модификации" и теперь их можно включать/выключать по отдельности.
   Интерфейса пока что нет, только через реестр.

drkns 21.04.2010 14:47:00 +0200 - build 1517

1. Mantis#0001347: Убрать . (точка) при автодолнении.
   Элементы "." и"..", иногда возвращаемые Find<First|Next>File, теперь режутся централизованно на уровне класса FindFile, а не в куче разных мест.
   Код, использующий FindFile, НЕ ДОЛЖЕН предполагать наличие этих элементов и бороться с ними.

2. Порция предупреждений от статического анализатора VS2010.

3. При создании папок вида \1\2\3\4 производились попытки создавать каждый элемент, даже если он уже существовал.

4. Поиск файлов не восстанавливает время последнего доступа.

5. Если при загрузке файла в редактор или при переключении кодовой страницы произошли ошибки преобразования текста - при сохранении будет требоваться дополнительное подтверждение, + соообщения теперь более подробны.

svs 21.04.2010 10:18:10 +0300 - build 1516

1. Уточнение build 1515 - односимвольные префиксы игнорируем

svs 21.04.2010 09:34:16 +0300 - build 1515

1. Mantis#0001338: Префикс в параметрах ком.строки
   (описано в хелпе)
   from Maximus

t-rex 20.04.2010 23:56:06 +0200 - build 1514

1. Поддержка MinGW GCC 4.5.0.

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

3. Косметические мелочи.

drkns 20.04.2010 00:33:57 +0200 - build 1513

1. Уточнение предыдущего билда.

drkns 19.04.2010 16:39:34 +0200 - build 1512

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

2. В фильтрах доступны миллисекунды.

svs 19.04.2010 15:51:19 +0300 - build 1511

1. Mantis#0001334: Позволить плагину менять заголовок редактора "насовсем"
   Теперь выставленный плагином "заголовок" в редакторе (в статусной строке, посредством ECTL_SETTITLE) не будет автоматом сбрасываться 
   после отработки плагина (вызванного по F11).
   Плагины теперь сами должны заботится о восстановлении заголовка редактора (Info.EditorControl(ECTL_SETTITLE,NULL)).

drkns 19.04.2010 10:50:21 +0200 - build 1510

1. Очередная порция замены apiCreateFile/ReadFile/WriteFile/etc. более интеллектуальными классами. Как следствие, запрос на повышение привилегий может заработать ещё в некоторых операциях.

2. При редактировании пользовательского меню по AltF4 во временный файл дописывались излишние byte order mark'и (по одному на каждое подменю вместо одного на весь файл).

drkns 17.04.2010 11:44:42 +0200 - build 1509

1. Mantis#0001348: Блокировка папки процессом FAR после повышения прав.

drkns 17.04.2010 00:57:46 +0200 - build 1508

1. Редактор очищен от остатков libc и, как следствие, умеет запрашивать привилегии для открытия/сохранения файлов.

2. Изменения того же рода в юзерменю и описаниях.

svs 15.04.2010 14:34:28 +0300 - build 1507

1. Mantis#0001346: Макросы, назначенные на "`" (ё) и подобные работают с ошибками

drkns 15.04.2010 11:34:38 +0200 - build 1506

1. В 1494 погнулось системное копирование при "[ ] Copy files opened for writing".

drkns 15.04.2010 11:05:12 +0200 - build 1505

1. Уточнение предыдущего билда.

drkns 15.04.2010 10:55:21 +0200 - build 1504

1. Если пользователь уже обладает правами администратора - обойдемся без запуска дополнительного процесса.

svs 13.04.2010 23:15:33 +0300 - build 1503

1. Macro: bug - падение, при вызове [A|P]Panel.HostFile для неплагиновой панели.

svs 13.04.2010 14:48:25 +0300 - build 1502

1. Mantis#0001344: Падение при переходе по ссылкам хелпа
   size_t "рулит" :-(
   Этот фикс избавляется только от падения.
   Для "исправления ошибок" хелпов нужно править парсер (выходит за рамки данного исправления)

t-rex 13.04.2010 00:04:24 +0200 - build 1501

1. В паре мест StrLength(string) -> string.GetLength().

drkns 12.04.2010 22:54:07 +0200 - build 1500

1. Более информативные сообщения при необходимости повышения привилегий.

svs 12.04.2010 17:53:57 +0300 - build 1499

1. Вис help на файлах, у которых между секциями отсутствовала пустая строка
   (например, "Regular Expression Search and Replace, version 7.04")

drkns 12.04.2010 16:46:32 +0200 - build 1498

1. Всякие мелочи на тему повышения привилегий.

2. Унифицирована работа CtrlEnd в диалогах и комстроке: из комстроки взят круговой перебор вариантов, из диалогов - выделение дописываемого.

svs 12.04.2010 12:38:45 +0300 - build 1497

1. Bug: [A|P]Panel.path0 не возвращает путь
   http://forum.farmanager.com/viewtopic.php?p=61218#p61218

svs 12.04.2010 11:38:27 +0300 - build 1496

1. Mantis#0000830: Неверный расчет перемещения в функции Viewer::Up() для UTF-8

chupakabra 11.04.2010 23:20:00 +0200 - build 1495

1. Исправлена ошибка перемещения фокуса, внесенная в 1444.

drkns 11.04.2010 02:23:13 +0200 - build 1494

1. Повышение привилегий:
   - запрос происходит только тогда, когда это действительно надо (доступ запрещён через ACL), а не на каждый ERROR_ACCESS_DENIED.
   - изменение времени файлов и состояния атрибутов "сжатый" и "разреженный".
   - поиск по содержимому.
   - теоретически должна работать и самопальная реализация копирования ("[ ] Use system copy routine"). Особо не тестировалось, соблюдаем осторожность.

2. Некоторые api-функции (CreateFile/ReadFile/WriteFile/...) логически объединены в отдельный класс File, в дальнейшем предпочтительно использовать уже его.

3. Не работал CtrlEnd в диалогах при отключенном дополнении.

svs 09.04.2010 16:32:01 +0300 - build 1493

1. Macro: [A|P]Panel.Path0 - путь на реальной FS (до вызова плагинов, создающих свою панель)
   Состояния аналогичные [A|P]Panel.Path, но содержать путь реальной FS.
   Если на панели реальная FS, то 
     [A|P]Panel.Path == [A|P]Panel.Path0
   Если панель плагиновая, то 
     [A|P]Panel.Path != [A|P]Panel.Path0 

svs 09.04.2010 09:38:19 +0300 - build 1492

1. Модуль печати в отвале - не учитывался текущий каталог.

drkns 08.04.2010 15:30:25 +0200 - build 1491

1. Mantis#0001337: Ошибка при чтении содержимого папки.

2. Для элемента ".." в панелях отображался неправильный владелец.

svs 08.04.2010 11:01:14 +0300 - build 1490

1. Mantis#0000884: Рвётся текст справки при длине строки больше 300 символов.
   Перевод хелпа на массив строк (TArray)
   Немного шаманства в TArray по поводу сортировки.
   Удаление "мусора" из кода хелпа

drkns 08.04.2010 00:39:10 +0200 - build 1489

1. Mantis#0001336: Сообщение об ошибке при открытии каталога.

drkns 07.04.2010 14:04:32 +0200 - build 1488

1. Уточнение 1483.

svs 07.04.2010 13:10:41 +0300 - build 1487

1. Mantis#0001335: Использование некорректного текстового ресурса

2. Mantis#0001331: Макрофункция для управления статусной строкой

drkns 07.04.2010 11:46:46 +0200 - build 1486

1. Запрет на преобразование пути в некоторых вызовах apiGetFindDataEx вроде бы уже неактуален, посему уберём.

drkns 06.04.2010 20:02:46 +0200 - build 1485

1. Уточнение 1483.

svs 06.04.2010 13:41:39 +0300 - build 1484

1. Macro: новая функция "N=Editor.SetTitle([Title])" установка заголовка в статусной строке редактора
   Возвращает 1 - успешно, 0 - редактор не в фокусе.
   Если параметр отсутствует или равен пустой строке, то восстанавливается предыдущее значение статусной строки

drkns 06.04.2010 10:35:35 +0200 - build 1483

1. Продолжение 1468:
   С полномочиями администратора могут выполняться:
   - просмотр каталогов;
   - получение атрибутов;
   - установка владельца.

2. FindFirstFile/FindNextFile/FindClose логически объединены в отдельный класс FindFile, в дальнейшем предпочтительно использовать уже его.

svs 05.04.2010 18:18:38 +0300 - build 1482

1. Уточнение Mantis#0001323

2. Macro: [A|P]Panel.path для Плагиновой панели
   http://forum.farmanager.com/viewtopic.php?f=15&t=5254

3. Macro: [A|P]Panel.Prefix - возвращает пусто, либо префикса, как их отдают плагины

4. Macro: [A|P]Panel.UNCPath возвращает (для плагиновой панели) prefix:[hostfile/]path

garry 03.04.2010 22:44:32 +0300 - build 1481

1. После 1456 отвалился вывод кодовых страниц для ANSI-плагинов (например, FTP).

drkns 03.04.2010 19:30:12 +0200 - build 1480

1. 1479.2: Как выяснилось, gcc не поддерживает forward enum declaration.

drkns 03.04.2010 11:23:56 +0200 - build 1479

1. И ещё раз Mantis#0001321: DM_MOVEDIALOG: ограниченный диапазон перемещения диалога.

2. Косметика в adminmode.?pp

svs 03.04.2010 11:45:44 +0300 - build 1478

1. Mantis#0000098: неправильные сообщения при попытке создания папки/файла с запрещенными символами

zg 03.04.2010 02:26:08 +0200 - build 1477

1. Mantis#0001329: Поиск в прямом направлении, шаблон = $.

zg 02.04.2010 11:42:58 +0200 - build 1476

1. в связи с 1219 Ctrl-Shift-Numpad5 в панелях заменён на Ctrl-Alt-Numpad5.

svs 02.04.2010 10:29:40 +0300 - build 1475

1. Mantis#0001323: gethotkey(0) возвращает следующий по порядку сивол (вместо "3" - "4", вместо "x" - "y")

drkns 01.04.2010 20:00:00 +0200 - build 1474

1. Mantis#0001321: DM_MOVEDIALOG: ограниченный диапазон перемещения диалога.
   При относительном перемещении координаты, равные -1, больше не центрируют диалог.

2. Более компактное расположение элементов диалога поиска.

drkns 01.04.2010 13:47:00 +0200 - build 1473

1. Уточнение 1472.2: различаем symlink и junction;

2. Создание жёстких ссылок может выполняться с полномочиями администратора.

svs 01.04.2010 12:56:20 +0300 - build 1472

1. Mantis#0001265: Глюк с размером буфера и заголовком панели
   Утчонение п.2 ("При нечетной ширине консоли заголовок панели (правой) рисуется некорректно (на левой)")

2. Mantis#0001327: В окне поиска найденные связи отображаются как папки

zg 01.04.2010 03:12:18 +0200 - build 1471

1. Mantis#0001322: Поиск и замена в редакторе пропускает пустые строки.

drkns 31.03.2010 21:52:05 +0200 - build 1470

1. Уточнение 1468 - терялись результaты GetLastError().

drkns 31.03.2010 16:29:11 +0200 - build 1469

1. Mantis#0001315: В tmp-панели связи отображаются как папки.

2. Mantis#0001321: DM_MOVEDIALOG: ограниченный диапазон перемещения диалога.

drkns 31.03.2010 15:24:32 +0200 - build 1468

1. Продолжение 1466:
   - удаление в корзину может выполняться с полномочиями администратора;
   - при копировании работает индикатор прогресса, отмена и т. п.

t-rex 31.03.2010 01:05:50 +0200 - build 1467

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

drkns 30.03.2010 15:44:02 +0200 - build 1466

1. Продолжение 1465:
   С полномочиями администратора могут выполняться:
   - перенос файлов;
   - копирование файлов;
   - копирование/редактирование reparse point'ов.

drkns 30.03.2010 00:44:57 +0200 - build 1465

1. Начальная поддержка повышения полномочий при работе из-под ограниченной учётной записи.

   С полномочиями администратора в данный момент могут быть выполнены следующие операции:
   - создание папок;
   - удаление папок;
   - удаление файлов;
   - установка атрибутов;
   - создание символических ссылок.

   Со временем этот список будет расти.

zg 29.03.2010 04:01:39 +0200 - build 1464

1. Mantis#0001302: При запуске с параметром ком.строки FAR зависает на "черном экране" до нажатия Enter.

zg 29.03.2010 03:37:49 +0200 - build 1463

1. Mantis#0001310: Запускать редактор с заданной абсолютной колонкой, а не экранной (как из плагинов, так и из комстроки).

zg 29.03.2010 01:55:26 +0200 - build 1462

1. оптимизация билда 1460. при создании панели два раза делалось show и сортировалось. хотя не надо ни разу.

2. после 1448 сортировка в случае сортировки по расширению, отключённой сортировки каталогов 
   по расширению и отключённой опции папки вначале была неустойчивой.

t-rex 28.03.2010 21:42:53 +0200 - build 1461

1. Mantis#1314: Filters - Date/Time - Relative

chupakabra 27.03.2010 08:20:00 +0200 - build 1460

1. Не выполнялась пересортировка после FCTL_SETNUMERICSORT и FCTL_SETDIRECTORIESFIRST.

svs 27.03.2010 08:17:48 +0300 - build 1459

1. Mantis#0001312: При отмене редактирования пункта не нужно обновлять файл farmenu.ini
   from Maximus

garry 26.03.2010 16:51:16 +0300 - build 1458

1. Дополнение к 1456.

drkns 26.03.2010 14:58:23 +0200 - build 1457

1. Нажатие PgDn в диалоге поиска могло приводить к переполнению стека.

garry 26.03.2010 15:28:59 +0300 - build 1456

1. Добавлена возможность редактирования через интерфейс имён кодовых страниц (убрано течинфо #80);

2. При некоторых условиях при открытии меню кодовых страниц курсор позиционировался не на ту запись (в каком то из
   билдов починили меню и сделанные мною в меню кодовых страниц костыли стали мешать);

3. Настройка кодовых страниц добавлена в основное меню настроек;

4. Для русского языка в меню настроек поправлены пересекающиеся и отсутствующие горячие клавиши.

svs 26.03.2010 11:57:54 +0300 - build 1455

1. Bug: far /e имя_файла ShiftEnter AltF9 --> трап.

2. Macro: у функции Clip(N,V) добавлен 5-й режим (первый параметр) - работа с режимами клипборда.
    N=5
    V:
      -1 - что сейчас используется? 1 - виндовый буфер, 2 - внутренний
       0 - flip (аналог $IClip)
       1 - включить виндовый буфер обмена
       2 - включить внутренний буфер обмена

    Возвращает предыдущее значение (1 - виндовый буфер, 2 - внутренний)

3.  <АХТУНГ>

     Исправляйте свои макросы:

       а) $IClip заменить на Clip(5,0) или Clip(5), т.к. $IClip будет удаляться.
       б) IClip заменить на Clip(5,-1) (при этом учесть, что clip() вернет 1 или 2), т.к. IClip будет удаляться.

     указанных 2 "объекта" будут удалены... скажем через 2 месяца :-)

   </АХТУНГ>


svs 25.03.2010 18:38:53 +0300 - build 1454

1. Macro: добавлена константа RCounter - содержит текущее значение счетчика оператора цикла $Rep.
   Область видимости - текущий $Rep (для вложенных $Rep - значение для текущего цикла), например

   RCounter = undefined
   $rep(%i)
     ...
     RCounter = значению для цикла "$rep(%i)"
     ...
     $rep(%j)
       ...
       RCounter = значению для цикла "$rep(%j)"
       ...
     $end
     ...
     RCounter = значению для цикла "$rep(%i)"
     ...
   $end
   RCounter = undefined

   За пределами цикла значение константы неопределенное/любое/нет смысла использовать.

2. Macro: Добавлена функция "N=Print(Str)" - вывести содержимое строки str туда, где курсор.
   Аналогична $Text, но параметр Str может быть выражением.
   Возвращает всегда 1.

3. Macro: Добавлена функци "v = MMode(Action[,Value])" - выставить/получить режимы текущего макроса.
   Аналогична $MMode, но параметр mode может быть выражением.
   Action - что хотим поменять
     1 - режим лочки экрана ("DisableOutput")
         "MMode(1,-1)" подобен состоянию "DisableOutput"
   Value  - значение
    -1 - get (функция возвращает текущее значение)
     0 - off (функция выключает Action и возвращает предыдущее значение)
     1 - on  (функция включает Action и возвращает предыдущее значение)
     2 - flip  (функция переключает Action и возвращает предыдущее значение)


4.  <АХТУНГ>

     Исправляйте свои макросы:

       а) $Text заменить на print(), т.к. $Text будет удаляться.
       б) $Date заменить на print(Date(блаблабла или пусто)), т.к. $Date будет удаляться.
       с) "$MMode 1" заменить на "MMode(1,2)", т.к. $MMode будет удаляться.
       d) состояние "DisableOutput" заменить на вызов функции "MMode(1,-1)", т.к. состояние "DisableOutput" (не флаг макроса!) будет удаляться.

     указанных 4 "объекта" будут удалены... скажем через 2 месяца :-)

   </АХТУНГ>


chupakabra 23.03.2010 00:51:00 +0200 - build 1453

1. Переписана функция числовой сортировки.

drkns 22.03.2010 20:18:31 +0200 - build 1452

1. Убираем ИИ, различающий "связи" и "точки монтирования" в колонках панели.
   Увы, сильно страдает производительность.

2. х64 warnings.

chupakabra 22.03.2010 04:03:00 +0200 - build 1451

1. Исправление для 1444.

chupakabra 22.03.2010 02:02:00 +0200 - build 1450

1. Mantis#0001301: листбокс не перерисовывался после DM_LISTUPDATE.

t-rex 22.03.2010 00:27:43 +0200

1. Корректировка 1448.3.

chupakabra 21.03.2010 20:59:00 +0200 - build 1449

1. Исправлена ошибка режима сортировки по полному имени.

chupakabra 21.03.2010 20:43:00 +0200 - build 1448

1. Опция для отображения каталогов в начале списке при сортировке (Ctrl+F12).

2. Plugin API: FCTL_SETDIRECTORIESFIRST, PFLAGS_DIRECTORIESFIRST, SM_NUMSTREAMS, SM_STREAMSSIZE, SM_FULLNAME.

3. В makefile поправлены зависимости.

chupakabra 21.03.2010 01:11:00 +0200 - build 1447

1. Mantis#0001081: режим сортировки по полному имени учитывает числовую сортировку и группы сортировки.

2. Сортировка: заменено копирование строк на вызов функций сравнения с явным указанием длин сравниваемых строк.

drkns 20.03.2010 09:26:41 +0200 - build 1446

1. В 1443 отвалился QView.

chupakabra 20.03.2010 05:46:00 +0200 - build 1445

1. Mantis#0001081: режим сортировки по полному имени (полному пути) файла.

chupakabra 20.03.2010 04:38:00 +0200 - build 1444

1. Mantis#0001290: Некорректная обработка нажатий на кнопки со стилем DIF_NOFOCUS + DIF_BTNNOCLOSE.

drkns 20.03.2010 00:42:00 +0200 - build 1443

1. Mantis#0001309: В диалоге применения атрибутов не работает Cancel при вводе неправильного владельца

2. При вызове свойств папки в некоторых ОС могли вызываться свойства файла с тем же именем и расширением из %pathext%.

3. FCTL_GETCMDLINESELECTEDTEXT возвращал на 1 символ меньше, чем надо.

4. Массовое внедрение списков инициализации.

5. Немного C++0x: внедрение nullptr. Для VC2010 - нативно, для остальных - #define на NULL.

t-rex 19.03.2010 12:27:10 +0200 - build 1442

1. Mantis#1308: Не собирается в gcc из-за некорректной инструкции #include (неправильный регистр).

svs 19.03.2010 11:56:32 +0300 - build 1441

1. VK_OEM_102. Уточнение... 1440

svs 19.03.2010 11:38:51 +0300 - build 1440

1. Добавлена обработка VK_OEM_102, которая "обозвана" как: "<>" or "\|" on RT 102-key kbd.
   Сейчас это '\'.
   Требуется уточнение для AltGr- (Ctrl-Alt-), ...возможно еще что.
   Т.с. Wелкам!

chupakabra 19.03.2010 04:41:00 +0200 - build 1439

1. Поломалась синхронизация текущего каталога для плагинов с OPIF_REALNAMES (из build 1157).

svs 18.03.2010 19:54:06 +0300 - build 1438

1. Mantis#0001307: Возвращаемый результат функции panel.fexist
   Теперь panel.fexist() возвращает: 0 - нет такого элемента, > 0 - позиция/индекс файлового элемента на панели.
   Без учета фильтров!

svs 17.03.2010 16:42:40 +0300 - build 1437

1. Macro: уточнение прототипа "Panel.Select()".
   Теперь работают Mode=2 и 3. Для этих режимов разделителем элементов списка могут быть: ';' ',' и '\r\n'.
   Пример: 
     Panel.Select(1,1,2,clip(0))
     На пассивной панели выделить те файлы, имена которых находяться в клипборде.

2. У FileList::SelectFiles теперь доп.параметр (маски) и функция возвращает количество обработанных элементов (пока используется на нужды макросов)

svs 16.03.2010 17:48:46 +0300 - build 1436

1. Keys.hpp
   1) KEY_CTRLMASK теперь 0xFFF00000
   2) Удален KEY_LOCKSCREEN - остатки роскоши былой, не используется
   3) "описаны" KEY_KILLFOCUS, KEY_GOTFOCUS и KEY_CONSOLE_BUFFER_RESIZE
   4) расширение диапазона KEY_MACRO_BASE

2. SysLog. Добавлен конструктор 
   CleverSysLog(int Line,const wchar_t *Title);

3. Macro: добавлен прототип "V=Panel.Select(panelType,Action[,Mode[,Items]])"
   по мотивам http://forum.farmanager.com/viewtopic.php?f=15&t=5077
   На сегодня умеет: 
   panelType - как обычно: =0 - активная панель, =1 - пассивная панель.
   Action:
     0 - снять выделение; возвращает количество элементов с которых сняли выделение
     1 - выделить
     2 - инвертировать
     3 - восстановить выделение, аналог Ctrl-M; возвращает количество восстановленных элементов
   Mode:
     0 или отсутсвует - выполнить действие Action  для всех элементов
     1 - Items является числом - индексом
   Items:
     для Mode==0 - игнорируется
     для Mode==1:
       Items==0 или отсутствует - выполнить действие Action для текущего элемента
       Items>0 - выполнить действие Action для элемента с индексом Items
   Функция возвращает количество элементов, над которыми производилось Action
   (получить инфу о текущем количестве выделенных - как обычно через [A|P]Panel.SelCount :-)

   Планируется добавить Mode=2 и 3 (рассматривать Items как строки - имя или маска)

4. Macro добавлены [A|P]Panel.HostFile - пусто или имя хост-файла плагиновой панели.

drkns 10.03.2010 19:29:31 +0200 - build 1435

1. Mantis#0001297: Сохранение в настройках переменных окружения

2. Mantis#0001300: Наследовать флаг VF_DISABLEHISTORY при переключении в редактор (F6), и наоборот

3. Не устанавливались дата/время у reparse point'ов в подкаталогах.

drkns 10.03.2010 14:20:17 +0300 - build 1434

1. Продолжение 1425 - владелец доступен для редактирования.

2. Mantis#1299: SavedDialogHistory: SearchText, ReplaceText

yjh 09.03.2010 15:52:16 +0300 - build 1433

1. Дефлотная маска для архивов поддерживает .tbz и .txz (новые linux-дистрибутивы)


svs 03.03.2010 17:33:17 +0300 - build 1432

1. Функция CheckFolder() переименована в TestFolder(), соответствующим образом изменены наименование кодов возврата.

2. Macro: Новая функция: N=testfolder(S) - тестирование каталога, возвращает
      2 - нет такого
      1 - не пусто
      0 - пусто
     -1 - нет доступа
     -2 - ошибка (неправильные параметры или нехватило памяти для выделения промежуточных буферов)

   Константы:
     REGEDIT4

     [HKEY_CURRENT_USER\Software\Far2\KeyMacros\Consts]
     "TSTFLD_NOTFOUND"=dword:00000002
     "TSTFLD_NOTEMPTY"=dword:00000001
     "TSTFLD_EMPTY"=dword:00000000
     "TSTFLD_NOTACCESS"=dword:FFFFFFFF
     "TSTFLD_ERROR"=dword:FFFFFFFE

3. Macro: немного тестовых добавок в "машину".

drkns 02.03.2010 18:32:43 +0200 - build 1431

1. Лишний callback при вставке текста в строку ввода.

drkns 01.03.2010 21:10:08 +0200 - build 1430

1. Потенциальное UB в диалоге атрибутов.

svs 01.03.2010 19:00:24 +0300 - build 1429

1. Mantis#0000981: Far падает, после вызова плагина через CallPlugin

2. Macro: у функции date параметр можно не указывать, в этом случае используется форматная строка "%a %b %d %H:%M:%S %Z %Y"

3. Macro: добавлен "$Continue" - для циклов

4. Бага с шорткатами в редакторе/вьювере:
   а) LCtrl-<N> (где <N> неназначенный шорткат) - прыгал в самое начало файла
   б) Сохранение шорткатов в реестре было возможно только, если был назначен нулевой элемент (RCtrl-0)

   Здесь Ахтунг!
   Из-за весьма ранних багов в реестре могло сохраняться содержимое шорткатов, заполненных нулями.
   Поэтому рекомендуется в реестре Editor\LastPositions и Viewer\LastPositions выкинуть значения ShortXXX

5. Для единообразия... в Opt.ViOpt.SaveViewerPos и Opt.ViOpt.SaveViewerShortPos убрано "слово" Viewer.

drkns 28.02.2010 11:29:36 +0200 - build 1428

1. Истории ввода, просмотра, папок, диалогов и сохранённых позиций расширены до 512 элементов по умолчанию.

yjh 28.02.2010 04:42:01 +0300 - build 1427

1. К 1424 - если уж делать largeaddressaware, то для всех линкеров :)

drkns 28.02.2010 01:43:09 +0200 - build 1426

1. Поправка к 2 пункту предыдущего билда, дабы и в пещерных ОС работало.

drkns 27.02.2010 23:30:38 +0200 - build 1425

1. Добавка к 1054.2: в меню дисков по CtrlA/F4 выводится не системный, а встроенный диалог атрибутов.

2. Из встроенного диалога атрибутов можно вызывать системный.

3. Mantis#0000088: Добавить поле "Владелец файла".

4. Там же в список атрибутов добавлен "Reparse point".

drkns 27.02.2010 19:16:33 +0200 - build 1424

1. Собираем с /largeaddressaware.

chupakabra 27.02.2010 07:51:00 +0200 - build 1423

1. Mantis#0000840: включаем Low-fragmentation Heap.
   http://msdn.microsoft.com/en-us/library/aa366750%28VS.85%29.aspx

drkns 27.02.2010 00:07:33 +0200 - build 1422

1. Не работала опция "Lock editing of read-only files".

t-rex 26.02.2010 20:36:01 +0200 - build 1421

1. Не надо вызывать apiGetVolumeNameForVolumeMountPoint() для репарс поинтов которые не папки (видимо Mantis#1288).

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

drkns 24.02.2010 15:48:25 +0200 - build 1420

1. Продолжаем давить printf.

2. 32-битного FilePositionCache больше нет, теперь везде 64-битный.

3. Убраны ограничения из TI#11 .

svs 22.02.2010 17:10:45 +0300 - build 1419

1. Macro: уточнение replace(). Зацикливается, если Find - пустая строка.

drkns 22.02.2010 15:49:34 +0200 - build 1418

1. Продолжение предыдущего билда. Теперь, вероятно, и волки будут сыты, и овцы целы -
   ./.. показываются, но крышу у глючных драйверов от проверок не сносит.

t-rex 22.02.2010 13:53:43 +0200 - build 1417

1. Убрал всю заморочку с проверкой на "." и "..".
   Она приводила к различным проблемам у нормальных пользователей и всё ради того
   чтоб фиг знает кто мог себе создавать такие настоящие папки на фате.
   Если вы всё таки создаёте папки "." и ".." то фар их показывать не будет.

drkns 21.02.2010 21:57:47 +0200 - build 1416

1. В 1413 забыли зажим внутри пациента :)

zg 21.02.2010 13:10:12 +0200 - build 1415

1. не собиралось gcc.

svs 20.02.2010 22:44:13 +0300 - build 1414

1. Macro: bug: panel.setposidx(0,0,1) возвращает 0, если отмеченный файл - последний на панели

drkns 20.02.2010 20:24:44 +0200 - build 1413

1. Выкинуто шаманство с DETECT_ALT_ENTER, теперь автоустановка 80x25 при переключении в полноэкранный режим работает.

2. ACTL_CONSOLEMODE больше нет.

3. Состояние Windowed в макроязыке заменено на Fullscreen.

svs 19.02.2010 17:18:28 +0300 - build 1412

1. Macro: Bug: [A|P]panel.Filter всегда выдает 1, независимо от того, включён фильтр на панели или нет

2. Macro: проблемы с eval()

3. Macro: некорректная работа panel.setposidx()
   Теперь вот так:
     Panel.SetPosIdx(0,0,0) - вернет координаты в массиве файлов с учетом фильтра
     Panel.SetPosIdx(0,0,1) - вернет координаты в виртуальном массиве отмеченных файлов с учетом фильтра

4. В Config переменные, относящиеся к макросам, собраны в одну структуру.

5. Добавлено временное правило KeyMacros/CallPluginRules:dword (по мотивам Mantis#1280)
     0 - блокировать макросы при вызове плагина функцией CallPlugin, 1 - разрешить макросы (ахтунг!)
     по умолчанию 0 - блокировать
   "временное" - чтобы понять на сколько это критично.

drkns 19.02.2010 13:47:00 +0200 - build 1411

1. В 1410 отвалилось копирование на плагиновые панели.

drkns 18.02.2010 23:03:00 +0200 - build 1410

1. Падение при отсутствии языковых файлов.

2. Падение при выгрузке плагина при открытом меню конфигурации.

3. Выкинуто ещё немного мусора из копира.

4. Исключатор: добавлена возможность передать исключение во внешний отладчик, выкинут разнообразный мусор.

t-rex 18.02.2010 21:28:44 +0200 - build 1409

1. Косметические правки пред. билда.

svs 18.02.2010 20:02:35 +0300 - build 1408

1. Macro: функция Menu.Select не работает, если третий параметр (Dir) не равен 0.
   (еще бы оно работало, когда направление не учитывалось совсем :-))

svs 18.02.2010 14:33:53 +0300 - build 1407

1. Mantis#0001286: Добавить состояние кликов мыши
   Добавлена константа MsEventFlags. Набор битов (see http://msdn.microsoft.com/en-us/library/ms684239%28VS.85%29.aspx):
     DOUBLE_CLICK = 0x0002
        The second click (button press) of a double-click occurred. 
        The first click is returned as a regular button-press event.
     MOUSE_HWHEELED = 0x0008
        The horizontal mouse wheel was moved.
     MOUSE_MOVED = 0x0001
        A change in mouse position occurred.
     MOUSE_WHEELED = 0x0004
        The vertical mouse wheel was moved.

2. Macro: panel.setposidx()
   a) добавлен 3-й необязательный параметр InSelection
        N=Panel.SetPosIdx(panelType,Idx[,InSelection])
      если InSelection = 1, то Idx - индекс в виртуальном массиве отмеченных видимых файлов
      если InSelection = 0, то Idx - индекс в виртуальном массиве видимых файлов
   b) теперь эта функция работает только с видимыми файлами, с учетом примененных фильтров на панели.
   c) второй параметр Idx:
        < 0 - "искать" от конца в начало
        > 0 - "искать" от начала в конец
        = 0 - игнорировать переход, просто вернуть текущую позицию (естественно  учетом фильтра)

3. Macro: добавлены булевые состояния [A|P]Panel.Filter - "на активной/пассивной панели включен фильтр?"

4. Macro: уточнение 1401

5. Добавлены virtual public Panel::FileInFilter(long idxItem) и Panel::IsSelected(long idxItem)


drkns 17.02.2010 22:22:31 +0200 - build 1406

1. Продолжение #0001273. После 1395 начали проявляться разнообразные древние, присыпанные листьями грабли.

garry 17.02.2010 18:00:27 +0300 - build 1405

1. Ошибка компиляции x64 версии в 1400.

svs 17.02.2010 17:49:19 +0300 - build 1404

1. Macro: снова про загрузку.
    "...Имеется какой-либо макрос для панелей. Вызываем MacroView, вносим ошибку в макрос.
    FAR сообщает об ошибке в выражении, этот макрос больше не срабатывает, но перестают работать все макросы, кроме панельных.
    Если ошибка в макросе редактора или вьюера, то перестают работать common-макросы..."

2. Mantis#0001283: Глюк с областью выполнения макросов
   Пусть манагер всегда принудительно выставляет область для текущего фрейма (CurrentFrame).
   Хмм... возможно повторение этого Инца, но только для тех объектов, кто "не с нами" (не производный от Frame).

drkns 16.02.2010 19:32:46 +0200 - build 1403

1. Уточнение работы FCTL_CLEARSELECTION.

drkns 16.02.2010 13:47:00 +0300 - build 1402

1. Mantis#0000942: far hangs at exit after using of proclist

2. Mantis#0001273: Медленная работа и излишний сетевой трафик при работе с сетевыми папками.

3. Добавлена команда FCTL_CLEARSELECTION - снять выделение с элемента панели. Param1 - номер выбранного элемента (0<=Param1<PanelInfo.SelectedItemsNumber).

4. Пара мелочей.

svs 16.02.2010 11:05:58 +0300 - build 1401

1. Макро: теперь ошибки пропускаются (остальные макросы грузяться)

2. Немного PROJECT_DI_MEMOEDIT.

3. В editor.cpp удален лишний кусок закомменченного кода про Editor::ReadFile()

garry 15.02.2010 17:37:17 +0300 - build 1400

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

t-rex 14.02.2010 00:48:27 +0200 - build 1399

1. Mantis#1274: Некорректная работа фильтра панелей при выборе только папок.
   Вообще был определённый прокол в логике обработке папок, починились похожие и не очень
   глюки и в поиске и в пометке.

zg 14.02.2010 00:12:02 +0200 - build 1398

1. не собиралось gcc.

svs 12.02.2010 18:15:56 +0300 - build 1397

1. Mantis#0001270: MCMD_LOADALL не возвращает ошибку при наличии ошибок

drkns 11.02.2010 14:06:15 +0200 - build 1396

1. Уточнение логики добавления BOM при сохранении.

drkns 11.02.2010 13:47:00 +0200 - build 1395

1. Т.к. в ConvertNameToReal больше не используется ручной анализ содержимого репарс-поинта, уберём оттуда ограничения для сетевых путей.

2. В диалоге атрибутов редактирование содержимого репарс-поинта доступно и для сетевых путей.

3. Mantis#0000650: FAR не дает создать символическую ссылку на корневую шару.

svs 12.02.2010 14:15:21 +0300 - build 1394

1. Некорректная работа Info.FSF->FarNameToKey
   http://forum.farmanager.com/viewtopic.php?f=8&t=5058

   Функция ждет строку по вот такой спецификации:
     1. Сочетания, определенные в структуре keyboard.cpp::FKeys1[]
     2. Опциональные модификаторы (Alt/RAlt/Ctrl/RCtrl/Shift) и 1 символ, например, AltD или CtrlC
     3. "Alt" (или RAlt) и 5 десятичных цифр (с ведущими нулями)
     4. "Spec" и 5 десятичных цифр (с ведущими нулями)
     5. "Oem" и 5 десятичных цифр (с ведущими нулями)
     6. только модификаторы (Alt/RAlt/Ctrl/RCtrl/Shift)

drkns 11.02.2010 23:52:09 +0200 - build 1393

1. Mantis#0001271: Диалог: символы, недопустимые в данной кодировке.

2. Диалог перехода (AltF8) в редакторе переведён на DialogBuilder.

svs 11.02.2010 22:26:57 +0300 - build 1392

1. Mantis#0001268: В фильтр диалогов вставляется только первый символ
   Добавка Ctrl-V/Shift-Ins (только для режима "мы в фильтре")

svs 11.02.2010 21:57:33 +0300 - build 1391

1. Mantis#0001268: В фильтр диалогов вставляется только первый символ
   ...что не мудрено, судя по коду :-)

   И да, здесь, в фильтре, в качестве эксперимента :-) при обработке $Text добавлена реакция на символ 0x8 (Bs). Нада?

2. Mantis#0001266: Far падает при разборе Macro
   А про двойные кавычки я и забыл... :-(
     В класс UserDefinedList добавлен флаг ULF_NOTUNQUOTES

drkns 11.02.2010 13:47:00 +0200 - build 1390

1. Mantis#0001269: Не указан макрос в сообщении о неверном макросе при загрузке Фара

2. Лишний вызов callback-функций при замене блока в строках ввода.

drkns 11.02.2010 01:15:24 +0200 - build 1389

1. В 1381 отвалились клики правой кнопкой мыши по линейке функциональных клавиш.

zg 10.02.2010 22:13:45 +0200 - build 1388

1. в регэкспах - ошибка в обработке верхней границы в диапазонах, заданной в виде \xyyyy.

drkns 10.02.2010 15:04:39 +0200 - build 1387

1. Обрабатываем Alt-<Left|Right|Home|End> в списке дополнения.

svs 10.02.2010 12:55:31 +0300 - build 1386

1. Варнинги

2. Macro: MCMD_CHECKMACRO - инициализация кода успешного чекинья макроса
   Здесь нужно понимать, что ActlKeyMacro.Param - это union и что Param.PlainText.SequenceText затрется после отработки MCMD_CHECKMACRO, т.е.
   Far вернет Param.MacroResult.*

drkns 10.02.2010 00:57:46 +0200 - build 1385

1. Некорректное позиционирование фокуса в меню кодовых страниц.

zg 09.02.2010 17:59:01 +0200 - build 1384

1. в апи добавлены ESPT_SETBOM и EOPT_BOM.

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

svs 09.02.2010 18:02:24 +0300 - build 1383

1. Продолжаем мучить MCMD_CHECKMACRO.
   - строка и позиция для плагинов начинается с 0, как и положено
   - MPEC_EXPECTED заменена на удобочитаемую MPEC_EXPECTED_TOKEN
   - добавлен флаг KSFLAGS_SILENTCHECK - при чекании Far должен молчать (не выводить диалог)

drkns 09.02.2010 15:04:21 +0200 - build 1382

1. Уточнения раскраски диалоговых элементов.

2. Косметика в коде диалога назначения макроклавиш.

svs 09.02.2010 12:50:38 +0300 - build 1381

1. Macro: макрос на F1 "msgbox(akey(1))"
          жмём в панелях, диалогах и т.п. - работает адекватно.
          жмём в меню - видим не F1, а кнопку, вызвавшую это меню.

2. "Опубликован" MCMD_CHECKMACRO, возвращает ActlKeyMacro.Param.MacroResult
     struct
     {
       DWORD ErrCode;  // код ошибки (see FARMACROPARSEERRORCODE)
       COORD ErrPos; // строка и позиция в строке, где парсер нашел ошибку
       const wchar_t *ErrSrc; // "слово" вызвавщее ошибку, может быть пустым в зависимости от кода ошибки
     } MacroResult;

3. Mantis#0001266: Far падает при разборе Macro
   Забыл, что UserDefinedList не берет на грудь 1 значение (в данном случае однострочный макрос)
   Затычки поставлены, но...
     TODO: переделать UserDefinedList, чтобы мог изображать из себя массив из одного элемента.

drkns 09.02.2010 10:51:57 +0200 - build 1380

1. Уточнение обработки мыши в диалогах.

drkns 09.02.2010 09:39:19 +0200 - build 1379

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

drkns 08.02.2010 19:07:17 +0200 - build 1378

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

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

svs 08.02.2010 17:26:40 +0300 - build 1377

1. Macro: добавлен "алиас" PANEL.ITEM для функции PANELITEM (для единообразия в названии)

2. Macro: учтонение парсера.

3. В UserDefinedList добавлен флаг ULF_NOTTRIM - дабы не резать пробелы.

drkns 08.02.2010 16:03:25 +0200 - build 1376

1. Уточнение трюка, введённого в 1205: восстанавливаем размеры окна только если после получения фокуса они были уменьшены.

drkns 08.02.2010 11:18:56 +0200 - build 1375

1. Mantis#0001264: выводить процент выполнения удаления в заголовке.

2. В диалоге подтверждения расшифрования не работал выбор 'Skip all'.

3. Ошибка при обработке метасимволов.

drkns 06.02.2010 15:10:19 +0200 - build 1374

1. При обработке FCTL_<SET|INSERT>CMDLINE отключаем дополнение.

drkns 05.02.2010 20:42:59 +0200 - build 1373

1. Уточнение логики закрытия плагиновой панели.

2. Mantis#0001259: неперерисовка файловой панели после смены папки.

drkns 04.02.2010 20:48:39 +0200 - build 1372

1. В 1369 отвалилось удаление пунктов пользовательского меню.

drkns 03.02.2010 21:23:01 +0200 - build 1371

1. По просьбам телезрителей средняя кнопка мыши вновь работает как Enter в панелях, справке и меню.
   Причём всегда. Опции нет, ибо есть макросы.

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

3. x<wcs|str>n<cpy|cat> изменены, теперь третий параметр - размер приёмника.

4. Ошибка в oldfar::ESPT_GETWORDDIV.

5. gcc warning.

drkns 03.02.2010 15:08:26 +0200 - build 1370

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

2. Убраны неактуальные BlockExtKey.

3. Поиск файлов больше не падает при нажатии F11, также там теперь доступен список задач.

drkns 02.02.2010 20:36:50 +0200 - build 1369

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

2. Продолжаем давить *printf.

chupakabra 02.02.2010 16:20:00 +0200 - build 1368

1. Некорректно отображалась дата для папок на панели плагина.

drkns 01.02.2010 23:28:33 +0200 - build 1367

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

drkns 01.02.2010 21:44:16 +0200 - build 1366

1. From Alexey Samlyukov: при наличии в hlf-файле секции ".Options" не учитывалась секция ".PluginContents".

2. В строках ввода работает выделение текста мышью. К редактору это пока не относится.

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

drkns 31.01.2010 20:56:38 +0200 - build 1365

1. Не обновлялись панели после применения фильтров.

svs 31.01.2010 17:57:22 +0300 - build 

1. Mantis#0000986: Far 2 API - pascal

drkns 31.01.2010 16:37:49 +0200 - build 1364

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

drkns 30.01.2010 20:09:48 +0200 - build 1363

1. Mantis#0001257: File sharing violation when attempting to open Editor from Viewer.

drkns 29.01.2010 22:29:05 +0200 - build 1362

1. После 597 поломалась плагиновая сортировка элементов панели.

drkns 29.01.2010 21:01:29 +0200 - build 1361

1. Ещё раз о макросах и дополнении.

drkns 28.01.2010 18:47:28 +0200 - build 1360

1. В диалогах по F11 могло вызываться панельное меню плагинов.

2. Любителям макросов: у списка автодополнения теперь своя область - "AutoCompletion".

svs 28.01.2010 16:45:53 +0300 - build 1359

1. Macro: Некорректная работа AKey()/$AKey.

drkns 28.01.2010 11:27:44 +0200 - build 1358

1. Mantis#0001256: При наборе текста в командной строке стираются закладки плагина PanelTabs

t-rex 27.01.2010 21:59:14 +0200 - build 1357

1. Mantis#1255: Фар виснет при запуске far /v -

chupakabra 26.01.2010 19:57:00 +0200 - build 1356

1. From Maximus: Mantis#0001117: Ошибочная пометка файлов кнопкой мышки при прокрутке.

chupakabra 26.01.2010 19:34:00 +0200 - build 1355

1. FSF.GetDirList теперь возвращает полные пути к файлам.

chupakabra 24.01.2010 18:15:00 +0200 - build 1354

1. Mantis#0001251: Некорректный показ типа оптического привода.

yole 23.01.2010 14:15:00 +0300 - build 1353

1. В меню Alt-F1/Alt-F2 клавиша F9 показывает диалог для настройки режимов отображения меню -
   чтобы не перебирать Ctrl-циферки. Также в меню добавлена подсказка по доступным клавишам.

2. Включим показ типа CD-ROM по дефолту.  

svs 22.01.2010 17:15:01 +0300 - build 1352

1. Mantis#0001201: В Far 2 не работает переход на URL

2. Уточнение в хелпе URL`ов (раздел "@PluginsReviews")

svs 22.01.2010 14:46:29 +0300 - build 1351

1. Mantis#0001240: Внешний редактор не запускается если путь к нему содержит пробелы и предварён символом @

drkns 22.01.2010 00:40:31 +0200 - build 1350

1. Пара мелочей по автодополнению.

chupakabra 20.01.2010 21:19:00 +0200 - build 1349

1. Ошибка в FarGetDirList. Из-за этого не работало копирование содержимого каталогов в TmpPanel.

2. ACTL_QUIT не срабатывала если было открыто меню.

chupakabra 20.01.2010 08:05:00 +0200 - build 1348

1. ACTL_QUIT - завершает работу Far.

chupakabra 20.01.2010 07:38:00 +0200 - build 1347

1. Под win2k QueryDosDevice() выдает ошибку при большом размере буфера. Добавлена apiQueryDosDevice().

2. UnicodeString::SubStr().

zg 19.01.2010 22:58:11 +0200 - build 1346

1. в списке дополнений не отображается символ "&".

svs 18.01.2010 10:26:51 +0300 - build 

1. Mantis#0001246: Не собирается в gcc под Linux'ом. Некорректный include в edit.cpp

svs 17.01.2010 21:26:17 +0300 - build 1345

1. Mantis#0001242: Некорректная работа AKey$
   $AKey теперь возвращает реально-нажатое сочетание, которым вызывался макрос

2. Mantis#0001239: Получение через AKey нажатой клавиши с учетом раскладки клавиатуры
   Добавлен необязательный параметр функции akey()
     V=akey(Mode[,Type])
       Mode = 0 - число
              1 - строка
       Type = 0 - возвращает реально-нажатое сочетание, которым вызывался макрос
              1 - возвращает клавишу, на которую назначен макрос.

yole 17.01.2010 00:20:00 +0300 - build 1344

1. Научимся узнавать BD-ROM драйвы в Alt-F1/Alt-F2.

yole 16.01.2010 18:50:00 +0300 - build 1343

1. DialogBuilder поддерживает layout control'ов в две колонки.

2. Переведём настройки вьюера и редактора на DialogBuilder.

yole 16.01.2010 14:45:00 +0300 - build 1342

1. Продолжаем рефакторить DialogBuilder с целью его использования в плагинах.

2. Для полей ввода числовых значений, создаваемых при помощи DialogBuilder,
   автоматически выставляется маска, разрешающая вводить только цифры.

drkns 16.01.2010 12:39:15 +0200 - build 1341

1. С форума: "Глюк с заменой в редакторе".
   Тянется вроде как ещё с 498 билда.

drkns 16.01.2010 00:42:36 +0200 - build 1340

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

drkns 15.01.2010 07:57:05 +0200 - build 1339

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

drkns 14.01.2010 20:45:19 +0200 - build 1338

1. Поправлены регрессы 1337.

drkns 13.01.2010 20:42:34 +0200 - build 1337

1. Имена файлов, оканчивающиеся на точку, неправильно отображались в режимах панели с включенным выравниванием расширений.

2. Рефакторинг. Удалена связанная с дополнением копипаста. Возможны последствия, соблюдаем осторожность.

3. x64 warnings.

drkns 13.01.2010 19:22:50 +0200 - build 1336

1. И снова TreeCmp, более правильный вариант.

t-rex 12.01.2010 23:07:52 +0200 - build 1335

1. FarDialogItem.Param.ListPos теперь централизовано выставляется при всех "получениях" структуры от фара.
   Кривые плагины которые надеялись что будет выставлен FarDialogItem.Param.ListItems полетят.
   О таких случаях в анси плагинах просьба сообщать, хотя быть такое не должно.

svs 12.01.2010 11:53:24 +0300 - build 1334

1. Дерево. Откат функции сортировки TreeCmp на предыдующую ревизию (3917) (было в build 1295)

2. Уточнения SysLog`ов

drkns 11.01.2010 20:07:38 +0200 - build 1333

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

2. DIF_EDITPATH/FIB_EDITPATH в api.

3. Текст в строках ввода иногда оказывался левее X1 и не отображался.

4. Разные косметические мелочи.

5. Уточнения справки.

chupakabra 11.01.2010 02:28:00 +0200 - build 1332

1. const в plugin api.

drkns 11.01.2010 01:19:27 +0200 - build 1331

1. Mantis#0000848: Find Folder: неправильная обработка символа *.

t-rex 10.01.2010 23:55:43 +0200 - build 1330

1. Избавляемся от NM в plugin.hpp.

2. GCC ворнинг.

drkns 10.01.2010 23:39:29 +0200 - build 1329
 
1. C форума: Find Folder: неправильная отрисовка дерева в Фар 2.
 
2. x64 warnings.
 
3. gcc сборка.

4. Устаканивание дополнения.

yole 10.01.2010 18:50:00 +0300 - build 1328

1. Начало большого рефакторинга DialogBuilder'а, позволяющего использовать один и тот же
   API для построения диалогов и в самом FAR'е, и в его плагинах.

drkns 09.01.2010 14:17:27 +0200 - build 1327

1. Вернём обратно FarDialogItem.MaxLen )

drkns 09.01.2010 13:51:28 +0200 - build 1326

1. DWORD Reserved2 -> DWORD_PTR Reserved2.

drkns 09.01.2010 12:59:15 +0200 - build 1325

1. Вместо FarDialogItem.MaxLen теперь DWORD Reserved2. Должен быть равен 0.

drkns 08.01.2010 22:51:39 +0200 - build 1324

1. Логическое продолжение 1277 - синхронизируем CurrentDirectory только если есть неуникодные плагины.

2. Прибит DIF_NOTCVTUSERCONTROL + мелкая косметика во враппере. 

drkns 08.01.2010 18:00:43 +0200 - build 1323

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

t-rex 08.01.2010 13:54:21 +0200 - build 1322

1. компиляция vc для 1321.

zg 08.01.2010 13:46:03 +0200 - build 1321

1. забытые файлы в 1320.

zg 08.01.2010 13:30:56 +0200 - build 1320

1. диалог перезаписи файла имеет идентификатор {9FBCB7E1-ACA2-475d-B40D-0F7365B632FF}.

drkns 08.01.2010 01:30:08 +0200 - build 1319

1. Ещё всякое по автодополнению + зачатки конфигурации.

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

zg 07.01.2010 18:21:09 +0200 - build 1318

1. убиты LIF_USETEXTPTR и MIF_USETEXTPTR.

zg 07.01.2010 17:44:21 +0200 - build 1317

1. const в plugin api.

2. GetComputerNameEx в gcc.

svs 07.01.2010 17:12:00 +0300 - build 1316

1. Немного пересобрал InfoList. Вместо абс.указываемых координат Y используются относительные.

2. Уточнение для subst-дисков - ранее показывалась инфа от родительского корня.
   вместо strDriveRoot, полученного из GetPathRoot, применим ExtractPathRoot(strCurDir), ибо
   GetPathRoot старается раскрутить все по полной.

3. В настройки InfoPanel добавлена опция "Формат вывода имени компьютера" (о чем описанов в хелпе).
   Теперь бы вменяемо (исходя из описания) обозвать эти пункты комбобокса :-)

yole 07.01.2010 12:00:00 +0300 - build 1315

1. Вернём на место опцию, потерянную при переводе настроек на динамические диалоги.

2. Система динамического построения диалогов обучена работать с комбо-боксами.
   Переведен на новую систему диалог InfoPanel Settings.

drkns 07.01.2010 01:19:43 +0200 - build 1314

1. И ещё пара мелочей.

drkns 07.01.2010 00:57:40 +0200 - build 1313

1. Ещё всякое по автодополнению.

zg 06.01.2010 22:36:35 +0200 - build 1312

1. gcc warnings.

drkns 06.01.2010 18:54:47 +0200 - build 1311

1. Изменения в FSF.MkTemp - функция возвращает требуемый размер буфера.

drkns 05.01.2010 20:52:04 +0200 - build 1310

1. С форума: уточнение поведения списка "Already existing files" в диалоге копирования.

2. Следствие 1 пункта: в открытый комбинированный список теперь приходит событие DN_LISTHOTKEY.

3. Удалён OPIF_FINDFOLDERS за ненадобностью.

drkns 05.01.2010 19:50:30 +0200 - build 1309

1. Новые actl-команды: ACTL_SETPROGRESSSTATE, ACTL_SETPROGRESSVALUE.
   Предназначены для управления кнопкой Far на панели задач.

2. Удалена ACTL_GETWCHARMODE за ненадобностью.

drkns 03.01.2010 21:37:53 +0200 - build 1308

1. Ещё всякое по автодополнению.

drkns 03.01.2010 18:36:49 +0200 - build 1307

1. Изменения/уточнения работы нового режима дополнения.

2. Откат 1306 - ложная тревога )

drkns 03.01.2010 16:42:56 +0200 - build 1306

1. FSF.ConvertPath не возвращала необходимый размер буфера.

drkns 02.01.2010 13:38:25 +0200 - build 1305

1. Mantis#0001233: При замене в редакторе не подсвечивается место, которое предлагается заменить.

svs 29.12.2009 15:10:25 +0300 - build 1304

1. На счет языкозависимого %FARADMINMODE% погорячился :-)
   
   Очередная итерация...
   
   Теперь 
     %FARADMINMODE% число и равно 1, если под мы админом
   
   У cmdprompt новый '$@xx' (см. MConfigCmdlinePromptFormatAdmin)
   здесь 'xx' - два символа, которыми будет обрамлено слово "Администратор" 
   Например, "$@{}$s$p$g" будет представлен как "{Администратор} C:\>"

svs 29.12.2009 13:33:22 +0300 - build 1303

1. Mantis#0001228: Macro Problem (wrong results in 'Index')
   Добавлены доп.пораметры для макрофункций
      N=index(S1,S2[,Mode])
      S=rindex(S1,S2[,Mode])
      Result=replace(Str,Find,Replace[,Cnt[,Mode]])
   Здесь Mode: 
      0 - case insensitive
      1 - case sensitive

2. Macro: msave() для значения типа double сохраняет значение в виде строки.

3. Если Far в режиме "администратор", то выставляется переменная среды FARADMINMODE, равная "(Администратор)"  (см. MConfigCmdlinePromptFormatAdmin)
   Может применяться в CmdPrompt.

drkns 29.12.2009 00:44:26 +0200 - build 1302

1. Расставляем DIF_EDITPATH во всех нужных диалогах.

2. Уточнения нового режима дополнения.

yole 29.12.2009 00:11:00 +0300 - build 1301

1. Продолжаем работать над системой динамического построения диалогов.
   Добавлена поддержка сепараторов, радиокнопок, префиксного текста, истории.
   Переведены system settings, panel settigns, file description settings.

drkns 28.12.2009 19:10:00 +0200 - build 1300

1. Очередные эксперименты с автодополнением.
   Теперь поведение оного максимально приближено к системному, а именно:
   при наборе автоматически раскрывается список с подходящими вариантами, сокращающийся по мере ввода.
   Т.е. ничего никуда против воли пользователя не подставляется и при этом вроде всё интуитивно понятно.
   Надеюсь, этот вариант устроит всех.

   Через интерфейс пока ничего настраивается, уж извиняйте. Позже.

   З.Ы. В качестве бонуса (и для полного соответствия системному поведению) туда же добавлено примитивное дополнение файловых имён.
   Работает в комстроке и тех диалоговых строках ввода, у которых установлен флаг DIF_EDITPATH.
   На данный момент сей флаг установлен только в диалогах открытия/сохранения файла (ShiftF4/ShiftF2).

yole 26.12.2009 19:30:00 +0300 - build 1299

1. Продолжаем работать над системой динамического построения диалогов.
   Добавлена поддержка edit fields, статического текста, automation.
   Ещё пара диалогов из настроек переведены на новую систему.

drkns 26.12.2009 16:14:42 +0200 - build 1298

1. Уточнение 1295.2.

yole 26.12.2009 16:20:00 +0300 - build 1297

1. Заготовка для системы динамического построения диалогов: DlgBuilder.cpp/hpp

2. Опция для включения/выключения слепого режима autocompletion.

yole 25.12.2009 23:32:10 +0300 - build 1296

1. Слепой режим для autocompletion (эксперимент):
   http://bugs.farmanager.com/view.php?id=274

drkns 25.12.2009 19:24:01 +0200 - build 1295

1. Восстановим визуализацию при ошибках сохранения в редакторе.

2. Новые кнопкосочетания в панелях: CtrlShift<Up|Down|Num8|Num2>.
   Меняют высоту только текущей панели.

2. Массовое истребление бессмысленных и беспощадных снятий константности в Local, LocalOEM и других местах.

3. Массовое истребление объявлений счётчика за пределами цикла.

t-rex 25.12.2009 16:46:03 +0200 - build 1294

1. Логическое завершение 1246. Теперь в общем плагины могу делать детач окну фара и это вроде как должно работать.
   Пока что заметил что частично поломался плагин MakeIt, будем разбиратся.
   Интересно знать если ещё что то такое с не стандартным выводом поломалось.

chupakabra 24.12.2009 23:37:00 +0200 - build 1293

1. При загрузке Far мог появлятся индикатор записи макро из-за того что KeyMacro::Recording не была инициализирована.

drkns 24.12.2009 21:33:21 +0200 - build 1292

1. Уберём пока DList из MacroState, до лучших времён.

drkns 24.12.2009 17:53:01 +0200 - build 1291

1. Опечатка в 1290.

drkns 24.12.2009 01:51:44 +0200 - build 1290

1. Задавим ещё немного memcpy и memset.

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

drkns 23.12.2009 20:13:46 +0200 - build 1289

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

2. Уточнения справки.

t-rex 22.12.2009 22:21:07 +0200 - build 1288

1. Mantis#1147: Ошибка при запуске \

2. Немного разной чистки.

drkns 22.12.2009 21:23:23 +0200 - build 1287

1. Используем DList вместо повторных имплементаций списка ещё в нескольких местах.

2. Немного добавок в DList.

drkns 18.12.2009 22:14:58 +0200 - build 1286

1. В регулярных выражениях \x теперь поддерживает до четырёх 16-ричных цифр, дабы охватить уникод.

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

3. Хелп для "Far window title addons".

t-rex 18.12.2009 17:59:11 +0200 - build 1285

1. По запросам публики, дополнение к 1282, если в настройках интерфэйса фара опция Mouse отключена,
   то доп. режим консоли quick edit не будет отключен если он включен для шортката/окна.

drkns 17.12.2009 21:00:01 +0200 - build 1284

1. К шаблонам заголовка консоли добавлен %Platform (x86/x64/IA64) и шаблоны теперь регистронезависимые.

drkns 13.12.2009 22:22:11 +0200 - build 1283

1. TI#48 не влияло на NumDel.

t-rex 13.12.2009 00:40:22 +0200 - build 1282

1. ЖЖ пока возвращяется, без неё пока проблемы а на полную переделку пока что нету времени.
   Там надо тупо всё переписывать, лучше бы я туда не лазил.

2. Отключаем доп. режимы консоли (quick edit/insert mode) во время работы в фаре,
   но если они были включены при запуске фара то на время запуска внешних прог в окне фара они будут
   включатся назад.

3. Мелочи разные.

drkns 12.12.2009 23:57:53 +0200 - build 1281

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

drkns 12.12.2009 23:44:12 +0200 - build 1280

1. Панель информации:
   - статус файла подкачки теперь называется как положено, а не "виртуальная память";
   - добавлено отображение настоящей виртуальной памяти;
   - добавлено отображение физически установленной памяти. Работает в Vista и выше.

2. При нажатии ShiftF8 на элементе ".." и наличии выделения в панели производилась попытка этот элемент удалить, со всеми вытекающими.

t-rex 07.12.2009 23:20:24 +0200 - build 1279

1. Mantis#1157: .. - выход из временной панели в предыдущую.

2. Жопастая жопа да ещё и доисторическая, при OpenFilePlugin() не создавалась новая панель
   а реюзалась существующая.

t-rex 07.12.2009 21:03:31 +0200 - build 1278

1. Устаканивание синхронизации текущего пути и пару связанных мелочей.
   Надо бы ещё CriticalSection поставить вокруг доступа к внутренему strCurrentDirectory().

t-rex 07.12.2009 17:59:07 +0200 - build 1277

1. Будем синхронизировать текущею папку процеса с папкой в фаре,
   ибо из за 1275 она стала вообще не предвиденной что привод ещё к серии проблем.
   А що делать то? Так вроде всё ок, но теперь трудней будет найти глючные плагины которые
   получают текущий путь не у фара а у винды так как теперь кроме как для "не стандартных"
   путей они будут одинаковые.
   Я так думаю надо сделать такое: выкинуть нафиг поддержку анси плагинов. Решается и эта проблема и у людей
   сразу мотивация будет портировать плагины.

t-rex 06.12.2009 23:01:16 +0200 - build 1276

1. Разная мелочь.

t-rex 06.12.2009 20:52:04 +0200 - build 1275

1. Убрал CurrentDirectoryGuard, теперь есть только SynchronizeCurrentDirectory() без востановления,
   ибо частое прыганье текущей папки процесса туда сюда при вызове анси плагинов приводило к разнообразным проблемам.

2. Мелкии корекции в менеджере плагинов.

drkns 06.12.2009 11:14:26 +0200 - build 1274

1. Неправильный символ пометки в меню.

drkns 05.12.2009 18:46:16 +0200 - build 1273

1. Как внезапно выяснилось, эти ваши трюки с админом в заголовке вообще не работали,
   т.к. состояние принадлежности пользователя к админской группе бралось из астрала.
   Там же: убрана проверка версии Windows (надо проверить, как будет работать на NT<6) и ещё пара мелочей.

t-rex 05.12.2009 17:29:08 +0200 - build 1272

1. Переделки в TitleAddons:
   a. Опция в гуи. Просьба всегда добавлять для новых фич гуи, скажем нет техинфо.
   b. Никакие пробелы и т.п. никуда не подставляются, строка вписывается как есть.
   c. Все добавки идут после " - Far ", этот кусок нефиг лапами трогать.
   d. Пробелы с конца удаляются если кому то интересно.
   e. Версия фара во время работы не меняется, нефиг каждый раз её считывать :)
   f. Строка по дефолту теперь "%Ver.%Build %Admin".
   g. В lng теперь админ прописан без скобок и пробела.

t-rex 05.12.2009 16:36:12 +0200 - build 1271

1. Ещё одна переделка в apiGetFinalPathNameByHandle() чтоб было красивей и правильней.

t-rex 05.12.2009 14:27:07 +0200 - build 1270

1. Mantis#1202: Падение при нажатии Shift-F8 в редакторе и вьвере.
   Глюк был всегда, но стало падать тока сейчас.

2. Некоректная сортировка кодировок в Favorites.

3. VMenu: надо коректировать SelectPos при добавлении нового пункта перед помеченым.

t-rex 05.12.2009 11:57:27 +0200 - build 1269

1. VMenu: глючок в DleteItem().

t-rex 05.12.2009 10:53:56 +0200 - build 1268

1. Продолжаем ломать VMenu.

t-rex 05.12.2009 00:20:30 +0200 - build 1267

1. Ещё немного чистки в global.hpp.

2. Глюки в ConsoleTitle.

t-rex 04.12.2009 22:06:38 +0200 - build 1266

1. Частичный рефакторинг класса VMenu (меню, комбы, листбоксы), чтоб можно было относительно удобно вносить в него новый функционал.
   Должны исправится различные глюки, особенно глюки связанные с пометкой, хидден пунктами, мышой и т.п.
   Теперь класс упорно следит за пометкой и т.п., и его нельзя запутать извне.
   Теперь будет проще доделать полноценный функционал фильтра меню.
   Глюки ожидаются, и даже наверно много!

2. Исправления в apiGetFinalPathNameByHandle() и в её использовании.

3. Не собирался debug.

svs 04.12.2009 19:09:57 +0300 - build 1265

1. По мотивам сорцов "GKTem" (а точнее здесь http://msdn.microsoft.com/en-us/library/aa376389%28VS.85%29.aspx) и 
   "vkh" (настраиваемый заголовок) добавлен механизм определения 
   окончания заголовка консоли (раньше жестко был зашит " - Far").
   а) добавка к заголовку представляет из себя шаблон;
   б) добавку Far берет из реестра Interface/TitleAddons:REG_SZ, по умолчанию " - Far%Ver%Admin";
   в) шаблонные символы, которые понимает Far:
         1. %Ver - текущая версия Far Manager, например, " 2.0" - Far самостоятельно добавляет пробел перед версией;
         2. %Build - текущий билд Far Manager, например, " 1259" - Far самостоятельно добавляет пробел перед билдом;
         3. %Admin - в Vista и выше заменяется на значение из lng-файла: по умолчанию " (Администратор)"/" (Administrator)" - Far самостоятельно НЕ добавляет пробел.    

   Развивая эту тему можно добавить... шаблон "%Debug" для особых извращенцев ;-)

2. Функция SetFarTitle() вынесена из interf.?pp в класс ConsoleTitle.

3. Macro: добавка в п.1 "IsUserAdmin" - 1 или 0 - под кем запущен Far
   Тут есть непонятка (для меня :-)...  сейчас IsUserAdmin и в заголовке добавка "(Администратор)" не пишется (для меньше "Висты")
   возможно, что IsUserAdmin для ниже висты все же должен быть 0, даже если мы админы на тачке.
   Пока так и сделано (см. constitle.cpp::GetFarTitleAddons())

chupakabra 04.12.2009 17:32:00 +0200 - build 1264

1. GetFinalPathNameByHandle() завернута в __try __except чтобы предотвратить падение на Windows 7 + Ext2FSD.

t-rex 04.12.2009 10:53:20 +0200 - build 1263

1. from Igor Braginskiy: для CD/CHDIR "обработаем" (проигнорируем) /D,
   мы и так всегда меняем диск а некоторые в алайясах или по привычке набирают этот ключ.

2. from Igor Braginskiy: лишняя перерисовка в запускаторе.

3. Секьюрность в проверке заголовков экзэшников.

4. Потенциальный AV при обработке "echo.".

5. Косметика и около.

chupakabra 04.12.2009 05:47:00 +0200 - build 1262

1. Mantis#0000975: Колонка с именем файла отображается последней в диалоге результатов поиска.

2. Исправление горизонтальной прокрутки VMenu.

t-rex 02.12.2009 23:04:07 +0200 - build 1261

1. Ворнинг и около.

t-rex 02.12.2009 22:03:01 +0200 - build 1260

1. Переборщил немного в PathCanHoldRegularFile().

2. Удалил пару функций дупликатов.

3. Немного косметики подороге.

zg 02.12.2009 00:10:59 +0200 - build 1259

1. продолжение 1258. теперь в колонке Packed реальные значения.

zg 01.12.2009 23:21:54 +0200 - build 1258

1. Mantis#0000916: Мусор в Detailed mode, колонка Packed.

t-rex 01.12.2009 20:37:20 +0200 - build 1257

1. Немного различной косметики в коде.

chupakabra 01.12.2009 08:08:00 +0200 - build 1256

1. Mantis#0001104: При отображении дерева не пытаемся определить реальный корень диска, а используем тот что присутствует в текущем пути.

t-rex 01.12.2009 03:13:36 +0200 - build 1255

1. Все изменения в коде только косметические. Тупо надоела уже мешанина табов и пробелов и т.п.
   Прогрнал на сорцы следующее:
   AStyle --style=ansi --indent=tab=4 --brackets=break --indent-classes --indent-switches --indent-namespaces --indent-preprocessor --break-blocks --delete-empty-lines --unpad-paren --keep-one-line-statements --keep-one-line-blocks
   Не идеально конечно, но уже намного приятней.
  
   Так что не забываем, в коде нужно использовать табы. Таб == 4 пробела.
   Надо будет собраться и написать хоть какой то документ по стилю кода.

t-rex 01.12.2009 00:37:09 +0200 - build 1254

1. Ещё немного чистки в global.hpp.

2. Юзаем везде string.Clear() вместо string.SetLength(0) и string=L"", так и быстрей и красивей.

3. Пару мелких оптимизаций в UnicodeString.

t-rex 30.11.2009 20:20:11 +0200 - build 1253

1. После 1246-3 при закрытии диалога стал посылатся DN_EDITCHANGE всем эдитам.
   Что приводило к различным глюкам включая Mantis#1192: Падение при создании фильтра.

2. Mantis#1190: При использовании в полях ввода переменных окружения в историю попадает как сама переменная, так и её значение.
   Глюк старый но всплыл из за 1246-3.

svs 30.11.2009 12:10:30 +0300 - build 1252

1. Отвалился syslog.cpp...

t-rex 30.11.2009 09:23:05 +0200 - build 1251

1. Поломал случайно загрузку FarMenu.ini в 1248.

t-rex 29.11.2009 23:04:39 +0200 - build 1250

1. Ещё немного чистки в global.hpp.

t-rex 29.11.2009 21:45:45 +0200 - build 1249

1. Корекция кода по работе с clipboard.

t-rex 29.11.2009 20:33:41 +0200 - build 1248

1. Mantis#1188: Длительный (25 секунд) вход в сетевую шару из плагина Network.
   Файл описаний искался в списке шар.

2. Похожий фикс для usermenu. Если нажали F2 находясь в списке шар то не будем искать там FarMenu.ini.

3. Различные мелочи по дороге.

drkns 29.11.2009 19:31:17 +0200 - build 1247

1. Как выяснилось, редактор пихал сигнатуру в уникодные файлы независимо от состояния переключателя в диалоге сохранения.
   И, что интересно, уже весьма давно.
   Отсюда же ноги росли у Mantis#0001079: Опция [x] Add signature (BOM) всегда стоит.

2. Пара уточнений в "блокираторе" 16-ричного просмотра UTF-8.

3. Откат 2 пункта 1237 билда. Этот диалог таки достаёт, да.

4. При сохранении по ShiftF2 текущая позиция в комбинированном списке "Кодовая страница:" бралась откуда-то из астрала.

t-rex 29.11.2009 02:23:03 +0200

1. Флаг NO_RELEASE_PDB для мэйка.

t-rex 28.11.2009 21:57:13 +0200

1. Добавим /Oy- для релиза, чтоб "помочь" fexcept.

drkns 28.11.2009 21:55:50 +0200

1. Синхронизация проектов с makefile.

t-rex 28.11.2009 20:39:31 +0200 - build 1246

1. В Win7 x64 фар не запускается под Application Verifier из за глюка в последнем.
   Будем использовать GetStdHandle() вместо CreateFile(CON*$).
   Если всё будет ок, то в будущем после доп. переделки плагины смогут безболезнено делать детач окну фара.
   Потестируйте на разных телнетах и т.п. и т.д.

2. pdb в релизе.

3. Не работал в общем DIF_EDITEXPAND, и как следствие Mantis#1185: Не работает подстановка имён при создании новой папки/каталога.

4. Mantis#1184: Farmenu.ini не работает из "некорректного" пути.

t-rex 28.11.2009 15:11:26 +0200 - build 1245

1. Несколько мелких оптимизаций в strmix.cpp по работе с UnicodeString.

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

drkns 28.11.2009 13:10:50 +0200

1. Ещё немного правок в makefile_vc: VC2008 теперь по умолчанию, автоопределение целевой платформы.

drkns 28.11.2009 02:53:22 +0200 - build 1244

1. Всякая косметика в makefile_vc и, как следствие, немного в коде.

t-rex 28.11.2009 02:18:44 +0200 - build 1243

1. Немного поспешил в 1242, вернём взад.

t-rex 28.11.2009 01:08:27 +0200 - build 1242

1. Убрал ограничение на длину строки в MenuFileToReg().

t-rex 28.11.2009 00:35:30 +0200 - build 1241

1. Mantis#1180: Cannot update file description.
   Описания в путях с точкой на конце и т.п.

chupakabra 27.11.2009 23:14:00 +0200 - build 1240

1. Падение после команды вида cd \\MAXW7.

t-rex 27.11.2009 21:52:52 +0200 - build 1239

1. Одна мелочь, на всякий пожарный.

chupakabra 26.11.2009 18:35:00 +0200 - build 1238

1. Mantis#0001176: Не снимается RO при копировании файлов с CD.

drkns 26.11.2009 11:10:35 +0200 - build 1237

1. Mantis#0001175: Неправильно обрабатывается Ctrl-Enter при автозаполнении.

2. При сохранении файла в редакторе по F2, если файл до этого не существовал, теперь выводится диалог сохранения.

3. Project & solution для Visual Studio 2010.

drkns 26.11.2009 02:15:04 +0200 - build 1236

1. К редактору прикручена возможность визуализации табуляций и пробелов.
   Для управления доступны:
    - в интерфейсе - "[ ] Show white space";
    - в API - EOPT_SHOWWHITESPACE, ESPT_SHOWWHITESPACE;
    - в макросах - Editor.Set(20,State).

drkns 25.11.2009 15:56:12 +0200 - build 1235

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

t-rex 23.11.2009 20:26:00 +0200 - build 1234

1. Эксперимент с подставлением всей строки а не только дополнения при автокомлите не прошел успешно.

2. Соединил пару ифоф в один в ScreenBuf::Flush().

t-rex 22.11.2009 22:37:12 +0200 - build 1233

1. Более "оптимизированная" работа Opt.ClearType.

drkns 22.11.2009 17:10:02 +0200 - build 1232

1. Mantis#0001172: Ошибка наследования прав доступа при переносе с использованием относительных путей

drkns 22.11.2009 09:18:07 +0200 - build 1231

1. Уточнение предыдущего билда.

drkns 22.11.2009 00:37:00 +0200 - build 1230

1. К комстроке прикручено автодополнение, аналогичное диалоговому.

2. Добавлен диалог настроек комстроки.

3. Перетасовка настроек: начало. Некоторые опции слетят, нужно будет выставить заново вручную.

t-rex 21.11.2009 19:10:19 +0200 - build 1229

1. Залоченый режим фильтра - CtrlAltL.
   Когда фильтр залочен, то все нажатия кроме CtrlAltL и CtrlAltF уходят в меню на обработку.

2. Глючок с позицией курсора в фильтре.

t-rex 21.11.2009 18:17:15 +0200 - build 1228

1. Фильтр должен обрабатывать нажатия раньше всех.

t-rex 21.11.2009 17:16:09 +0200 - build 1227

1. Экспериментальная фича, встроенный фильтр во всех меню, комбах и листбоксах.
   Фильтр включается/выключается по CtrlAltF.
   Когда включен, фильтр ловит все "буквы">=32 и backspace.
   При включенном фильтре, различные глюки гарантируются.

t-rex 21.11.2009 14:06:52 +0200 - build 1226

1. Ещё немного оптимизаций и коректировок в истории.

svs 21.11.2009 11:52:06 +0300 - build 1225

1. Macro: Уточнение в Editor.Pos(), касаемо отрицательных значений...

2. немного форматирования текста :-)

t-rex 21.11.2009 01:59:20 +0200 - build 1224

1. Вернул автокомплит в диалогах.

chupakabra 20.11.2009 21:01:00 +0200 - build 1223

1. Mantis#0001145: Падение FAR при изменении размера окна результатов поиска по Alt+F9.

chupakabra 20.11.2009 20:23:00 +0200 - build 1222

1. Переписана процедура защиты от рекурсивных симлинков.
   FileIndex из GetFileInformationByHandle() больше не используется, т.к. любой кривой драйвер
   может прописать там все что угодно и будем опять иметь ситуацию когда "эксплорер копирует а Фар нет".
   Вместо этого используется сравнение путей, полученных с помощью ConvertNameToReal().

2. Добавлена bool DeleteEndSlash(wchar_t*, bool).

3. Добавлен Object* TPointerArray::lastItem().

drkns 20.11.2009 20:13:22 +0200 - build 1221

1. Не работала кнопка "wipe all" при уничтожении файлов.

drkns 20.11.2009 15:01:43 +0200 - build 1220

1. Продолжение 1219 - ShiftDecimal/NumDel.

zg 20.11.2009 14:06:57 +0200 - build 1219

1. с форума: при включённом нумлоке shift+цифровые стрелки работают как стрелки.

drkns 20.11.2009 13:35:56 +0200 - build 1218

1. Параметры-Настройки интерфейса-[ ] Показывать общий индикатор удаления.
   FarInterfaceSettings->FIS_SHOWTOTALDELPROGRESSINDICATOR

t-rex 20.11.2009 12:42:59 +0200 - build 1217

1. Ещё один древний баг в описаниях.

t-rex 20.11.2009 03:37:16 +0200 - build 1216

1. Ещё немного рефакторинга, прибил пару новых багов и ещё пару старых.

t-rex 20.11.2009 02:18:29 +0200 - build 1215

1. Рефакторинг класса описаний, поправилась куча разных багов.

drkns 19.11.2009 22:44:27 +0200 - build 1214

1. С форума: "Неправильная работа диалога атрибутов".

t-rex 19.11.2009 13:28:28 +0200 - build 1213

1. Более шустрое автоподставление последнего пункта истории в диалогах.

chupakabra 18.11.2009 00:20:00 +0200 - build 1212

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

chupakabra 17.11.2009 23:17:00 +0200 - build 1211

1. Использование GetVolumeNameForVolumeMountPointW() в ConvertNameToReal() вызывало нежелательную сетевую активность
   при наличии в системе сетевых дисков.

t-rex 17.11.2009 22:22:04 +0200 - build 1210

1. Снова затычки, чтоб решить баг винды приводящий к "застреванию" запускатора в Win7 в телнет сессии.

drkns 17.11.2009 00:46:37 +0200 - build 1209

1. Уточнение 1207.1.

t-rex 17.11.2009 00:07:50 +0200 - build 1208

1. Ахтунг! Начальная стадия переделки истории диалогов на использование общего класса истории.
   Формат хранения в реестре изменился!
   Вся текущая история диалогов (старый формат) игнорируется!!!!!!!
   Автозавершение, пока что не работает.
   Имеет смысл почистить [HKEY_CURRENT_USER\Software\Far2\SavedDialogHistory] от старой истории диалогов (ради чистоты и только).

drkns 16.11.2009 17:57:38 +0200 - build 1207

1. Замена 'Junction' на 'Volume' для точек монтирования работала не всегда.

3. Mantis#0001140: В win7 прогресс на таскбаре не останавливается если прервать поиск нажатием на [panel].

t-rex 16.11.2009 15:47:38 +0200 - build 1206

1. Юникод в описаниях:
   а. Если файл описаний имеет BOM то читаем файл в соот. кодировке.
   б. Если нету BOM то считает что файл описаний в OEM или ANSI в зависимости от новой настройки "ANSI by default".
   с. Сохраняться файл описаний будет либо в:
      - OEM или ANSI в зависимости от новой настройки "ANSI by default".
      - UTF8 + BOM если включена новая настройка "Save in UTF8".

   Todo:
   - Надо придумать более понятные имена этим настройкам и написать хэлп.
   - Подумать если стоит сохранять файлы описаний в той же кодировке в какой они изначально были, если был BOM.

drkns + t-rex 15.11.2009 22:40:40 +0200 - build 1205

1. Снова затычки, чтоб решить баг винды приводящий к появлению скролов и т.п. после потери фокуса
   максимизированного консольного окна (известная Win+L проблема со времён XP, и подобные чудеса в Win7).

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)
       ЗАРАНЕЕ выделенного (плугином) буфера указатель на который должен
       передаваться через DataOut.
       Кроме того, это ограничитель размера для строки ввода (currently not implemented)

       Если же MaxLen==0, то подразумевается, что работа(редактирование) идёт
       со строками с НЕ лимитированным размером. В этом случае в DataOut
       попадает указатель на динамически выделяемую память (см. ниже) которую
       плугин должен особождать сам.

    В ф-циях FSF.Dialog и FSF.DialogEx добавил ещё один параметр - указатель
    на ф-цию ReAlloc. которая используется Far'ом для аллокации "неограниченных"
    возвращаемых "неограниченных" строк (и освобождения памяти - см. ниже).
    В случае отсуствия в диалоге IsEdit полей, можно передавать NULL.

    При обработке Dialog/DialoEx осуществляется дополнительная проверка
    параметра DataOut - если MaxLen, то
       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? :)
