# Что нового в 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 г.

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

- добавлен тип события в Panel API: FE_CHANGESORTPARAMS

### 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 г.

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