Что нового в Encyclopedia for Developers?

Programming Far Manager plugins

Что нового в Encyclopedia for Developers?

19 августа 2018 г.

    Минимально необходимая версия Far Manager - 3.0.0.5258.

  • OPIF_ADDDOTS добавляет элемент ".." всегда.

21 июня 2018 г.

    Минимально необходимая версия Far Manager - 3.0.0.5230.

  • В FarListItem добавлено поле intptr_t UserData для ассоциирования пользовательских данных с элементом списка.

25 февраля 2018 г.

    Минимально необходимая версия Far Manager - 3.0.0.5150.

  • добавлена стандартная функция FSF.CompareStrings, заменяющая FSF.LStricmp, FSF.LStrnicmp и позволяющая сортировать строки так же, как и Far (как именно - не оговорено и зависит от настроек)
  • Описания FSF.LStricmp, FSF.LStrnicmp, FCTL_SETNUMERICSORT, FCTL_SETCASESENSITIVESORT, PFLAGS_NUMERICSORT, PFLAGS_CASESENSITIVESORT удалены.

03 февраля 2015 г.

    Минимально необходимая версия Far Manager - 3.0.0.4261.

  • добавлена стандартная функция FSF.FarClock - то же, что Far.UpTime в макросах, но в микросекундах и с микросекундным разрешением

16 октября 2014 г.

    Минимально необходимая версия Far Manager - 3.0.0.4134.

  • добавлен флаг в Editor API: ECF_AUTODELETE

21 июля 2014 г.

    Минимально необходимая версия Far Manager - 3.0.0.4013.

  • добавилась команда ECTL_GETTITLE

21 марта 2014 г.

    Минимально необходимая версия Far Manager - 3.0.0.3838, релиз.

  • добавилось сообщение DM_GETDIALOGTITLE
  • добавилось сообщение DN_DRAWDLGITEMDONE
  • добавилось сообщение DN_DROPDOWNOPENED
  • известные GUID диалогов и меню Far Manager

16 ноября 2013 г.

30 мая 2013 г.

    Минимально необходимая версия Far Manager - 3.0.0.3436.

  • KMFLAGS_DISABLEOUTPUT теперь является значением по умолчанию и игнорируется Far Manager'ом
  • добавлен новый флаг KMFLAGS_ENABLEOUTPUT

28 апреля 2013 г.

    Минимально необходимая версия Far Manager - 3.0.0.3371, релиз.

  • добавлены команды Info.EditorControl: ECTL_SUBSCRIBECHANGEEVENT, ECTL_UNSUBSCRIBECHANGEEVENT

22 марта 2013 г.

    Минимально необходимая версия Far Manager - 3.0.0.3265, релиз.

  • добавлена команда в Panel API: FCTL_SETACTIVEPANEL

14 декабря 2012 г.

    Минимально необходимая версия Far Manager - 3.0.0.3013, релиз.

  • добавлены флаги в Dialog API: DIF_SEPARATORUSER, DIF_RIGHTTEXT и DIF_WORDWRAP

04 ноября 2012 г.

    Завершился активный этап изменений Plugins API v3.0

    Минимально необходимая версия Far Manager - 3.0.0.2927, релиз.

  • изменению подверглось подавляющее большинство функций и структур API,
    плагины, написанные для предыдущих версий уникодного Far Manager, требуется адаптировать!

03 Февраля 2011 г.

    Внимание! Начался второй этап изменений Plugins API - версия API теперь v3.0

01 февраля 2011 г.

    Что изменилось в Plugins API v2.0 в сравнении c Plugins API v1.0

  • глобально char/char* заменены на wchar_t/wchar_t*
  • глобально фиксированные массивы char[n] заменены на указатели wchar_t* на буферы выделяемые плагином
  • ФАР не использует SetCurrentDirectoryW() при навигации по папкам, как следствие, бонусы:
    - хождение по папкам глубже MAX_PATH;
    - вход в папки, оканчивающиеся точками, пробелами и прочим;
    - папка, открытая на панели, не блокируется от удаления извне;
  • изменилась синхронизация CurrentDirectory ФАРа:
    - команда Info.Control - FCTL_GETCURRENTDIRECTORY переименована в FCTL_GETPANELDIR
    - вместо Info.Control - FCTL_GETCURRENTDIRECTORY используйте FSF.GetCurrentDirectory()
    - вместо ConvertNameToFullW() используйте FSF.ConvertPath()
  • описатели CURRENT_PANEL/ANOTHER_PANEL переименованы в PANEL_ACTIVE/PANEL_PASSIVE
  • функция Info.GetPluginDirList() изменена, вместо INVALID_HANDLE_VALUE используются PANEL_ACTIVE/PANEL_PASSIVE
  • макроса NM больше нет
  • структура PluginPanelItem.FindData изменена
  • проверки на размер PluginPanelItem больше нет
  • в структуре OpenPluginInfo.InfoPanelLine - массив структур заменён на массив указателей
  • функция Info.Control() изменена, у ней теперь вместо трёх - ЧЕТЫРЕ параметра!
  • изменена структура PanelInfo: убраны элементы PanelItems, SelectedItems, ColumnTypes, ColumnWidths, CurDir
  • команды Info.Control - FCTL_GETPANELSHORTINFO больше нет, её функцию выполняет FCTL_GETPANELINFO
  • в команде Info.Control - FCTL_GETCMDLINE память под буфер плагин выделяет сам
  • в команде Info.Control - FCTL_SELECTEDTEXT память под буфер плагин выделяет сам
  • команда Info.AdvControl - ACTL_GETWCHARMODE удалена
  • команда Info.AdvControl - ACTL_CONSOLEMODE удалена
  • команда Info.EditorControl - ECTL_EDITORTOOEM удалена
  • команда Info.EditorControl - ECTL_OEMTOEDITOR удалена
  • команда Info.EditorControl - ECTL_SETTITLE, теперь плагин самостоятельно должен восстанавливать "заголовок"
  • команда FCTL_SETSELECTION изменена на систему команд:
    - FCTL_BEGINSELECTION
    - FCTL_SETSELECTION
    - FCTL_ENDSELECTION
  • в Info.AdvControl - ACTL_WAITKEY теперь приходят и макрокнопки
  • в функции Info.Message удалён флаг FMSG_DOWN
  • память под WindowInfo::TypeName выделяет плагин
  • память под WindowInfo::Name выделяет плагин
  • функции FSF.ConvertNameToReal() больше нет
  • функции FSF.ExpandEnvironmentStr() больше нет
  • функция FSF.GetDirList() изменена
  • функция FSF.MkTemp() изменена
  • функция FSF.GetFileOwner() изменена
  • функция FSF.FarKeyToName() изменена
  • функция WINAPI PutFilesW() изменена
  • функция WINAPI MakeDirectoryW() изменена
  • функция WINAPI GetFilesW() изменена
  • флага OPIF_FINDFOLDERS больше нет
  • структуры FARINT64 больше нет
  • структуры EditorConvertText больше нет
  • изменена структура EditorInfo: убран элемент FileName
  • изменилась системы команд Info.GetDirList/GetPluginDirList и Info.FreeDirList/FreePluginDirList
  • команда EditorSetParameter - ESPT_GETWORDDIV изменена
  • таблиц кодировки больше нет, все Table теперь CodePage
  • плагины в Viewer/Editor могут теперь передавать конкретные кодовые страницы
  • изменения в Dialog API:
    - главное отличие от старого Dialog API, это то, что массив структур FarDialogItem является только входным, в него не пишутся изменения при закрытии диалога
    - структура FarDialogItem изменена
    - функций Dialog() и DialogEx() больше нет
    - вместо них DialogInit(), DialogRun(), DialogFree()
    - сообщение DM_GETDLGITEM изменено, Param2 указатель на память куда будет скопирован элемент
    - событие DN_EDITCHANGE приходит при любых изменениях в строке редактирования
    - событие DN_LISTHOTKEY приходит в комбинированный список
    - добавилось сообщение DM_GETCONSTTEXTPTR
    - добавилось сообщение DM_GETDLGITEMSHORT
    - добавилось сообщение DM_SETDLGITEMSHORT
    - добавилось сообщение DM_GETDIALOGTITLE
    - добавилось сообщение DN_DRAWDLGITEMDONE
    - добавилось сообщение DN_DROPDOWNOPENED
    - добавился флаг DIF_EDITPATH
    - добавился флаг FIB_EDITPATH
    - добавился флаг FDLG_KEEPCONSOLETITLE в функции Info.DialogInit() - флага DIF_NOTCVTUSERCONTROL больше нет
    - флага LIF_USETEXTPTR больше нет
    - флага MIF_USETEXTPTR больше нет
  • Плановые изменения в макросах:
    - удалена команда $Date - заменить на print(Date("формат"))
    - удалена команда $MMode - заменить на mmode(1,2)
    - удалено состояние IClip - заменить на clip(5,-1) (при этом учесть, что clip() вернет 1 или 2)
    - удалена команда $IClip - заменить на clip(5,0) или просто clip(5)
    - удалено состояние DisableOutput (не флаг макроса!) - заменить на вызов функции mmode(1,-1)
    - добавлена функция N=mload(S)
    - добавлена функция beep()
    - добавлена функция kbdLayout()
    - удалена команда $KbdSwitch, замените $KbdSwitch на kbdLayout(1)
    - функция Menu.ItemStatus() теперь в старшем слове возвращает код символа пометки U+XXXX
    - добавлен условный оператор "^^" - XOR, исключающее ИЛИ

    Что добавилось в Plugins API v2.0 в сравнении c Plugins API v1.0

  • функция WINAPI ProcessSynchroEventW()
  • функция FSF.ConvertPath(CPM_REAL,...)
  • функция FSF.ConvertPath(CPM_FULL,...)
  • функция FSF.ConvertPath(CPM_NATIVE,...)
  • функция FSF.GetCurrentDirectory()
  • команда FSF.MkLink() - FLINK_SYMLINK, автоматически выбрать тип создаваемой символической ссылки
  • команда Info.AdvControl - ACTL_QUIT
  • команда Info.AdvControl - ACTL_SETPROGRESSSTATE
  • команда Info.AdvControl - ACTL_SETPROGRESSVALUE
  • команда Info.AdvControl - ACTL_SYNCHRO
  • команда Info.AdvControl - ACTL_KEYMACRO, добавилась команда MCMD_CHECKMACRO
  • команда Info.AdvControl - ACTL_PROGRESSNOTIFY
  • команда Info.EditorControl - ECTL_GETFILENAME, плагин сам выделяет память под элемент
  • команда Info.EditorControl - ECTL_UNDOREDO
  • команда Info.EditorControl - ESPT_SETBOM
  • команда Info.Control - FCTL_ISACTIVEPANEL
  • команда Info.Control - FCTL_GETPANELITEM, плагин сам выделяет память под элемент
  • команда Info.Control - FCTL_GETSELECTEDPANELITEM, плагин сам выделяет память под элемент
  • команда Info.Control - FCTL_GETCOLUMNTYPES, плагин сам выделяет память под элемент
  • команда Info.Control - FCTL_GETCOLUMNWIDTHS, плагин сам выделяет память под элемент
  • команда Info.Control - FCTL_GETCURRENTDIRECTORY, плагин сам выделяет память под элемент
  • команда Info.Control - FCTL_GETCURRENTITEM, плагин сам выделяет память под элемент
  • команда Info.Control - FCTL_CLEARSELECTION
  • команда Info.Control - FCTL_SETDIRECTORIESFIRST
  • команда Info.Control - FCTL_GETPANELFORMAT
  • команда Info.Control - FCTL_GETPANELHOSTFILE
  • опция в Info.AdvControl - ACTL_GETCONFIRMATIONS - FCS_OVERWRITEDELETEROFILES
  • опция в Info.AdvControl - ACTL_GETINTERFACESETTINGS - FIS_SHOWTOTALDELPROGRESSINDICATOR
  • флаг в EditorInfo.Options - EOPT_SHOWWHITESPACE
  • флаг в EditorInfo.Options - EOPT_BOM
  • флаг в EditorSetParameter.Type - ESPT_SHOWWHITESPACE
  • флаг в DI_BUTTON - DIF_SETSHIELD, аналог BCM_SETSHIELD
  • флаги PFLAGS_USECRC32/OPIF_USECRC32 определяющие, что поле CRC32 элементов панели заполнено
  • система идентификации диалогов:
    - сообщения DN_GETDIALOGINFO/DM_GETDIALOGINFO
    - идентификатор для диалога перезаписи файла - {9FBCB7E1-ACA2-475d-B40D-0F7365B632FF}
    - идентификатор для диалога поиска (AltF7) - {8C9EAD29-910F-4b24-A669-EDAFBA6ED964}
  • Far теперь умеет работать в пределах окна (а не буфера), соответственно введены:
    - команда Info.AdvControl - ACTL_GETFARRECT
    - команда Info.AdvControl - ACTL_GETCURSORPOS
    - команда Info.AdvControl - ACTL_SETCURSORPOS
  • RegExp API
  • FileFilter API
  • PluginsControl API

5 Января 2010 г.

  • Пишем новое писание.
    Все изменения в АПИ (соответственно и в энциклопедии) просим добавлять сюда.