Что нового в Encyclopedia for Developers?
Programming Far Manager plugins
Что нового в Encyclopedia for Developers?
19 августа 2018 г.
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 г.
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 г.
- Пишем новое писание.
Все изменения в АПИ (соответственно и в энциклопедии) просим добавлять сюда.