История FAR plugins API

Здесь отмечены ключевые моменты в истории Plugins API

FAR 1.71 11.08.2008

+ COL_COMMANDLINEUSERSCREEN 

FAR 1.71 17.06.2008

+ VE_GOTFOCUS, VE_KILLFOCUS

FAR 1.71 15.05.2008

+ FDIS_DELREMOVESBLOCKS
+ FDIS_MOUSECLICKOUTSIDECLOSESDIALOG

FAR 1.71 30.03.2008

+ ECTL_ADDSTACKBOOKMARK
+ ECTL_CLEARSTACKBOOKMARKS
+ ECTL_DELETESTACKBOOKMARK
+ ECTL_GETSTACKBOOKMARKS
+ ECTL_NEXTSTACKBOOKMARK
+ ECTL_PREVSTACKBOOKMARK

FAR 1.71 29.03.2008

+ PFLAGS_PANELLEFT
+ PFLAGS_PANELRIGHT

FAR 1.71 17.03.2008

+ COL_DIALOGLISTARROWS,
+ COL_DIALOGLISTARROWSDISABLED,
+ COL_DIALOGLISTARROWSSELECTED,
+ COL_DIALOGCOMBOARROWS,
+ COL_DIALOGCOMBOARROWSDISABLED,
+ COL_DIALOGCOMBOARROWSSELECTED,
+ COL_WARNDIALOGLISTARROWS,
+ COL_WARNDIALOGLISTARROWSDISABLED,
+ COL_WARNDIALOGLISTARROWSSELECTED,
+ COL_WARNDIALOGCOMBOARROWS,
+ COL_WARNDIALOGCOMBOARROWSDISABLED,
+ COL_WARNDIALOGCOMBOARROWSSELECTED,
+ COL_MENUARROWS,
+ COL_MENUARROWSDISABLED,
+ COL_MENUARROWSSELECTED,

FAR 1.71 05.01.2008

+ KEY_MSWHEEL_LEFT, KEY_MSWHEEL_RIGHT

FAR 1.71 31.12.2007

+ ACTL_REDRAWALL

FAR 1.71 23.12.2007

+ ProcessDialogEvent
+ FarDialogEvent
+ OpenDlgPluginData
+ PF_DIALOG
+ OPEN_DIALOG
+ DIALOG_EVENTS

FAR 1.71 14.12.2007

+ MCMD_GETSTATE

FAR 1.71 06.12.2007

+ EE_GOTFOCUS, EE_KILLFOCUS
+ FE_GOTFOCUS, FE_KILLFOCUS

FAR 1.71 04.12.2007

+ DIF_NOAUTOCOMPLETE

FAR 1.71 06.08.2007

- _FAR_USE_FARFINDDATA
+ _FAR_USE_WIN32_FIND_DATA

FAR 1.71 20.02.2007

+ DIF_NOTCVTUSERCONTROL

FAR 1.71 30.01.2007

+ FCTL_GETUSERSCREEN

FAR 1.71 07.12.2006

+ VIEWER_SETMODEFLAGS_TYPES

FAR 1.71 01.12.2006

* Член структуры ViewerMode.TypeWrap переименован в ViewerMode.WordWrap
+ VCTL_SETMODE
+ enum VIEWER_SETMODE_TYPES
+ struct ViewerSetMode

FAR 1.70 29.03.2006

! снято ограничение на приходящие в функцию ProcessKey() клавиши.
+ PKF_PREPROCESS
+ ACTL_GETSHORTWINDOWINFO
+ ECF_TAB1
! EOPT_EXPANDTABS -> EOPT_EXPANDALLTABS
+ EOPT_EXPANDONLYNEWTABS, EXPAND_TABS
+ FARINT64
+ ViewerAPI: ViewerInfo, ViewerMode, ViewerSelect, ViewerSetPosition,
             ViewerControl, ProcessViewerEvent,
* Все перечисления в plugin.hpp сделаны именованными
+ FARMACRO_KEY_EVENT
+ DM_GETSELECTION, DM_SETSELECTION
+ DN_LISTHOTKEY
! плагин в ProcessEditorInput получает клавиатурные события
  как при записи, так и при воспроизведении макропоследовательности.
* Частично снято ограничение на приходящие плагину в ProcessEditorInput клавиши.
  Плагину не передаются: Ctrl-W, F11, Alt-F9, F12, Ctrl-Tab,
  Ctrl-Shift-Tab, Alt-Ins и Ctrl-Alt-Shift.
  Следующие сочетания клавиш передаются при условии, что:
   Alt-F5  - плагин PrintMan не установлен;
   Alt-F11 - редактор модальный;
   F6      - есть запрет на переключение в программу просмотра
             (при вызове функции Editor не указан флаг EF_ENABLE_F6).
+ DN_DRAWDIALOGDONE
+ ACTL_GETPLUGINMAXREADDATA, ACTL_GETWCHARMODE
+ ACTL_GETDIALOGSETTINGS
! FIS_PERSISTENTBLOCKSINEDITCONTROLS -> FDIS_PERSISTENTBLOCKSINEDITCONTROLS
! FIS_HISTORYINDIALOGEDITCONTROLS    -> FDIS_HISTORYINDIALOGEDITCONTROLS
! FIS_AUTOCOMPLETEININPUTLINES       -> FDIS_AUTOCOMPLETEININPUTLINES
+ FRS_SCANSYMLINK
+ FSS_SCANSYMLINK
! Теперь GetReparsePointInfo для сетевых каталогов возвращает ошибку,
  т.к. корректную информацию о содержимом символической связи в этом
  случае получить невозможно.
- FAR возвращал мусор в PanelInfo.SelectedItems[0] для случая, когда
  на панели нет выделенных файлов и курсор стоит на элементе ".."
+ MCMD_POSTMACROSTRING
+ ActlKeyMacro.Param
+ KSFLAGS_NOSENDKEYSTOPLUGINS
+ ESPT_SETWORDDIV, ESPT_GETWORDDIV
+ FMENU_CHANGECONSOLETITLE
! DM_LISTSETMOUSEREACTION (изменено поведение)
+ LMRT_*
+ FCTL_SETNUMERICSORT, FCTL_SETANOTHERNUMERICSORT, PFLAGS_NUMERICSORT

FAR 1.70 beta 5 09.04.2003

+ OPM_QUICKVIEW
+ FCTL_GETPANELSHORTINFO, FCTL_GETANOTHERPANELSHORTINFO
+ FIB_NOAMPERSAND
+ ESPT_LOCKMODE
+ ECTL_TURNOFFMARKINGBLOCK
! CONSOLE_* -> FAR_CONSOLE_*
+ MAXSIZE_SHORTCUTDATA
+ FCTL_CHECKPANELSEXIST
+ LIF_DELETEUSERDATA
+ EF_IMMEDIATERETURN, VF_IMMEDIATERETURN
+ FLINK_DONOTUPDATEPANEL
+ ECTL_DELETEBLOCK
+ FDLG_SMALLDIALOG, FDLG_SMALLDIALOG
+ ACTL_SETARRAYCOLOR, FarSetColors, FARCOLORFLAGS.FCLR_REDRAW
+ FarListColors

MultiArc:
+ ArcInfo.Chapters
+ ArcItemInfo.Chapter

FAR 1.70 beta 4 13.03.2002

+ EJECT_LOAD_MEDIA
+ FDLG_WARNING, FDLG_SMALLDIALOG
+ PFLAGS_*
! PanelInfo.Flags
+ KEY_MSWHEEL_UP, KEY_MSWHEEL_DOWN
+ DM_LIST*
+ VF_ENABLE_F6, VF_DISABLEHISTORY
+ EF_ENABLE_F6, EF_DISABLEHISTORY, EF_DELETEONCLOSE
+ FarList*
+ DIF_LISTWRAPMODE, DIF_LISTAUTOHIGHLIGHT, DIF_LISTNOBOX,
  DIF_SEPARATOR2
+ DM_GETCHECK, DM_SETCHECK, DM_SET3STATE, DM_SETITEMPOSITION,
  DM_GETITEMPOSITION, DM_GETDROPDOWNOPENED, DM_SETDROPDOWNOPENED,
  DM_SETHISTORY, DM_SETMOUSEEVENTNOTIFY
+ DM_LISTSETMOUSEREACTION
+ LINFO_*
+ BSTATE_*
+ ACTL_GETWINDOWCOUNT, ACTL_SETCURRENTWINDOW, ACTL_COMMIT,
  ACTL_GETFARHWND, ACTL_POSTKEYSEQUENCE
+ WTYPE_*
+ KeySequenceFlags.KSFLAGS_DISABLEOUTPUT
+ KeySequence
! Unquote
! ExpandEnvironmentStr
+ ECTL_GETBOOKMARKS
+ EditorBookMark
+ DN_LISTCHANGE, DN_MOUSECLICK, DN_DRAGGED, DN_RESIZECONSOLE,
  DN_MOUSEEVENT
+ LIFIND_EXACTMATCH
+ FMENU_USEEXT
+ MIF_*
+ FarMenuItemEx
! FarRecursiveSearch
! DI_RADIOBUTTON
+ ESPT_CHARTABLE, ESPT_SAVEFILEPOSITION
! FarCharTable
+ FCTL_GETCMDLINESELECTEDTEXT, FCTL_SETCMDLINESELECTION,
  FCTL_GETCMDLINESELECTION
+ PluginPanelItem.CRC32
+ ConvertNameToReal
+ GetReparsePointInfo
! AddEndSlash

FAR 1.70 beta 3 20.04.2001

! В plugin.hpp в некоторых экспортируемых и сервисных функциях для
  неизменяемых параметров применен модификатор "const".

+ DIF_VAREDIT - "преодоление барьера в 512 байт" - работает с элементами
  DI_EDIT и DI_COMBOBOX

! Изменена структура FarListItem (возможность работы с "длинными данными")

+ LIF_PTRDATA - для работы с "длинными данными".

! Изменены флаги LISTITEMFLAGS (LIF_*) - значения для LIF_SELECTED,
  LIF_CHECKED и LIF_SEPARATOR перенесены в младший байт старшего слова,
  LIF_DISABLE смещен "вниз".

! Изменены имена полей структуры FarDialogItemData.

+ В сообщении DN_MOUSECLICK теперь можно отловить событие DOUBLE_CLICK.
  (MouseEvent.dwEventFlags==DOUBLE_CLICK)

! Основательная переделка внутренних кодов клавиш (farkeys.hpp).

+ ACTL_EJECTMEDIA

+ DM_GETTEXTPTR, DM_SETTEXTPTR, DM_SHOWITEM, DM_ADDHISTORY

! Ctrl-Break управляемый. Раньше диалог закрывался безусловно,
  независимо от того, что вернул обработчик диалога на DM_CLOSE.

+ DIF_HIDDEN, DIF_MANUALADDHISTORY

+ DIF_SHOWAMPERSAND доступен для элементов DI_SINGLEBOX и DI_DOUBLEBOX

+ ACTL_KEYMACRO:
  struct ActlKeyMacro - интерфейсная часть для ACTL_KEYMACRO
  MCMD_LOADALL     - все макросы из реестра в память FAR`а
  MCMD_SAVEALL     - все макросы из памяти FAR`а в реестр

! Расширен синтаксис функции Message.

+ FSF.qsortex

+ EF_CREATENEW

! FSF.FarRecursiveSearch - добавлен параметр void *param

+ FAR "знает" 4 предопределенных темы в HLF-файлах:
  Contents - стандартная главная тема;
  Config   - тема, вызываемая по Shift-F1 из меню настроек плагинов;
  Editor   - тема, вызываемая по Shift-F1 из меню плагинов в редакторе;
  Viewer   - тема, вызываемая по Shift-F1 из меню плагинов в программе просмотра.

+ FHELP_USECONTENTS

* ACTL_GETFARVERSION возвращает номер версии, а не TRUE/FALSE.

* ACTL_WAITKEY ждет любую клавишу, если в качестве параметра Param передали
  NULL или -1.

+ ECTL_SETPARAM - установка параметров:
  - "Размер табуляции" (ESPT_TABSIZE)
  - "Пробелы вместо табуляции" (ESPT_EXPANDTABS)
  - "Автоотступ" (ESPT_AUTOINDENT)
  - "Курсор за пределами строки" (ESPT_CURSORBEYONDEOL)
  - Формат показа кода текущего символа (ESPT_CHARCODEBASE)

FAR 1.70 beta 2 16.12.2000

! Изменения в Param2 для сообщений DM_SETTEXT & DM_GETTEXT.
  Теперь здесь передается указатель на структуру FarDialogItemData.

+ 6 цветов для DISABLED элементов (в диалогах и предупреждениях)
  см. Headers.c\farcolor.hpp (или Headers.pas\farcolor.pas)

+ DIF_3STATE

! Для DI_PSWEDIT и DI_FIXEDIT исключена обработка флага DIF_EDITEXPAND.

+ ACTL_GETCOLOR, ACTL_GETARRAYCOLOR

! FSF.AddEndSlash работает с обоими видами слешей, также происходит
  изменение уже существующего конечного слеша на такой, который встречается
  чаще.

! Изменен формат версии - константа plugin.hpp::FARMANAGERVERSION имеет
  следующий формат:
     HIWORD:         = NNN - # build
     LOWORD:  HIBYTE =   1 - version Hi
              LOBYTE =  70 - version Lo

FAR 1.70 beta 1 20.11.2000

+ Dialog API 1.0

! Новые/измененные заголовочные файлы:
       farcolor.hpp  - Индексы цветовых атрибут.
       farkeys.hpp   - коды внутренних клавиш FAR Manager
+ FarStandardFunctions: "стандартные функции" - для уменьшения размера плагина
+ GetMinFarVersion().
+ URL-активаторы и цветовые атрибуты в HLF-файлах.

struct PluginStartupInfo:
  + AdvControl
  + InputBox
  + ShowHelp
  + DialogEx
  + SendDlgMessage
  + DefDlgProc

+ PF_FULLCMDLINE
+ FCTL_*SORTMODE, FCTL_*SORTORDER

struct KeyBarTitles:
  + CtrlShiftTitles
  + AltShiftTitles
  + CtrlAltTitles

+ EF_NONMODAL
+ ECTL_SETKEYBAR

+ DI_COMBOBOX, DI_LISTBOX, DI_USERCONTROL
+ DIF_EDITEXPAND, DIF_DROPDOWNLIST, DIF_USELASTHISTORY, DIF_BTNNOCLOSE,
  DIF_MASKEDIT, DIF_DISABLE

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

+ Структуры: FarListItem, FarList
+ Интерфейс для Pascal/Delphi

FAR 1.64 beta 24.05.2000

+ ECTL_SAVEFILE
+ ECTL_QUIT

+ struct EditorSaveFile

FAR 1.63 b 20.08.1999

+ VF_NONMODAL
+ VF_DELETEONCLOSE

FAR 1.62 23.05.1999

+ FCTL_GETCMDLINEPOS

FAR 1.62 b2 10.05.1999

+ EE_CLOSE

FAR 1.62 b 24.04.1999

Плагин "Colorer" "ввел" раскраску в редакторе:
+ EE_REDRAW
+ ECTL_ADDCOLOR
+ ECTL_GETCOLOR

+ struct EditorColor

+ FCTL_SETCMDLINEPOS
+ FE_COMMAND

FAR 1.61 24.02.1999

+ EE_READ
+ EE_SAVE

FAR 1.60 13.10.1998

Бурный прогресс Editor API:
+ FCTL_SETPANELDIR
+ ECTL_*
+ EOPT_*
+ BTYPE_*
+ PF_DISABLEPANELS
+ PF_EDITOR
+ PF_VIEWER
+ OPEN_EDITOR
+ OPEN_VIEWER

+ struct EditorGetString
+ struct EditorSetString
+ struct EditorInfo
+ struct EditorSetPosition
+ struct EditorSelect
+ struct EditorConvertText
+ struct EditorConvertPos

struct PluginStartupInfo:
  + EditorControl

FAR 1.52 26.06.1998

+ FCTL_SETUSERSCREEN
+ FCT_DETECT
+ SM_COMPRESSEDSIZE
+ SM_NUMLINKS
+ FE_BREAK
+ OPM_DESCR

+ struct CharTableSet

struct PanelInfo:
  + ShortNames
  + SortMode

struct PluginStartupInfo:
  + CharTable
  + Text

FAR 1.50 (release version) 09.02.1998

+ PPIF_USERDATA
+ FCTL_SETVIEWMODE
+ FCTL_SETANOTHERVIEWMODE
+ FCTL_INSERTCMDLINE
+ OPIF_USEATTRHIGHLIGHTING

struct PluginPanelItem:
  + UserData

FAR 1.50 beta 03.10.1997

+ DIF_HISTORY
+ FCTL_GETCMDLINE
+ FCTL_SETANOTHERSELECTION
+ FCTL_SETCMDLINE
+ FCTL_SETSELECTION
+ FE_CLOSE
+ FMSG_LEFTALIGN
+ OPEN_COMMANDLINE
+ OPEN_SHORTCUT
+ OPIF_EXTERNALDELETE
+ OPIF_EXTERNALGET
+ OPIF_EXTERNALMKDIR
+ OPIF_EXTERNALPUT
+ OPM_TOPLEVEL
+ PPIF_SELECTED

struct PluginStartupInfo:
  + Viewer
  + Editor
  + CmpName

struct PluginInfo:
  +CommandPrefix

struct PanelMode:
  +StatusColumnTypes
  +StatusColumnWidths

struct KeyBarTitles:
  +ShortcutData

MultiArc:
  Изменено поле структуры ArcInfo:
    - int AuthVer
    + DWORD Flags

  Добавлены флаги...
    enum ARCINFO_FLAGS
    {
      AF_AVPRESENT=1,
      AF_IGNOREERRORS=2
    };

FAR 1.40 beta 27.06.1997

Первое упоминание о FAR Plugins API:
"External DLL modules (plugins) can be used to implement new FAR commands and emulate file systems..."
ER> "Вообще о плагинах я задумался после того, как Лаврентьев попросил меня
ER> сделать версию FAR с поддержкой Арвида. Для нее еще Спасибожко хорошее
ER> название придумал - FARvid ;-) Разрабатывать такую версию мне было неохота,
ER> поэтому я решил предоставить желающим API, достаточное для добавления
ER> такой поддержки без моего участия..."
Для данной версии доступны: