# FAR Plugins API History

The key moments of FAR Manager Plugins API history are noted here.

### FAR 1.75 01.04.2009

    + LIF_HIDDEN, LIF_GRAYED
    + MIF_HIDDEN, MIF_GRAYED
    + COL_MENUGRAYTEXT
    + COL_MENUSELECTEDGRAYTEXT
    + COL_DIALOGCOMBOGRAY
    + COL_DIALOGCOMBOSELECTEDGRAYTEXT
    + COL_DIALOGLISTGRAY
    + COL_DIALOGLISTSELECTEDGRAYTEXT
    + COL_WARNDIALOGCOMBOGRAY
    + COL_WARNDIALOGCOMBOSELECTEDGRAYTEXT
    + COL_WARNDIALOGLISTGRAY
    + COL_WARNDIALOGLISTSELECTEDGRAYTEXT

### FAR 1.71 26.11.2008

    + COL_EDITORSCROLLBAR

### FAR 1.71 05.11.2008

    + KEY_SLEEP

### FAR 1.71 24.09.2008

    * FLINK_SYMLINK renamed to FLINK_JUNCTION
    + FLINK_SYMLINKFILE
    + FLINK_SYMLINKDIR

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

### 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 renamed to ViewerMode.WordWrap
    + VCTL_SETMODE
    + enum VIEWER_SETMODE_TYPES
    + struct ViewerSetMode

### FAR 1.70 29.03.2006

    ! restrictions to keys received by the ProcessKey() function no longer apply.
    + PKF_PREPROCESS
    + ACTL_GETSHORTWINDOWINFO
    + ECF_TAB1
    ! EOPT_EXPANDTABS -> EOPT_EXPANDALLTABS
    + EOPT_EXPANDONLYNEWTABS, EXPAND_TABS
    + FARINT64
    + ViewerAPI: ViewerInfo, ViewerMode, ViewerSelect, ViewerSetPosition,
                 ViewerControl, ProcessViewerEvent,
    * All enumerations in plugin.hpp are now named.
    + FARMACRO_KEY_EVENT
    + DM_GETSELECTION, DM_SETSELECTION
    + DN_LISTHOTKEY
    ! Now plugins receive keyboard events through ProcessEditorInput both
      when recording and when playing back macros. Previously, keyboard
      events were received only when recording macros.
    * Removed some of the limitations on the keys sent to plugins through
      ProcessEditorInput.
      Keys which are not sent to plugins: Ctrl-W, F11, Alt-F9, F12, Ctrl-Tab,
      Ctrl-Shift-Tab, Alt-Ins, Ctrl-Alt-Shift.
      The following key combinations are sent if:
        Alt-F5 - the PrintMan plugin is not installed;
        Alt-F11 - the editor is modal;
        F6 - switching to the viewer is disabled
    + DN_DRAWDIALOGDONE
    + ACTL_GETPLUGINMAXREADDATA, ACTL_GETWCHARMODE
    + ACTL_GETDIALOGSETTINGS
    ! FIS_PERSISTENTBLOCKSINEDITCONTROLS -> FDIS_PERSISTENTBLOCKSINEDITCONTROLS
    ! FIS_HISTORYINDIALOGEDITCONTROLS    -> FDIS_HISTORYINDIALOGEDITCONTROLS
    ! FIS_AUTOCOMPLETEININPUTLINES       -> FDIS_AUTOCOMPLETEININPUTLINES
    + FRS_SCANSYMLINK
    + FSS_SCANSYMLINK
    ! Now GetReparsePointInfo returns an error for remote folders, because
      correct information about symbolic link contents can not be obtained in
      such case.
    - Garbage had been returned in PanelInfo.SelectedItems[0] when no files were
      selected and the cursor was positioned on the ".." element.
    + MCMD_POSTMACROSTRING
    + ActlKeyMacro.Param
    + KSFLAGS_NOSENDKEYSTOPLUGINS
    + ESPT_SETWORDDIV, ESPT_GETWORDDIV
    + FMENU_CHANGECONSOLETITLE
    ! DM_LISTSETMOUSEREACTION (behaviour changed)
    + 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

    ! In plugin.hpp, the "const" modifier has been added for the
      unchangeable parameters of some exported and service functions.

    + DIF_VAREDIT - "breaking of the 512-byte barrier" - works for DI_EDIT
      and DI_COMBOBOX controls.

    ! Changed the FarListItem structure (possibility of working with "long
      data").

    + Added flag LIF_PTRDATA - for working with "long data".

    ! Changed the values of LISTITEMFLAGS (LIF_*) - the values for
      LIF_SELECTED, LIF_CHECKED and LIF_SEPARATOR have been shifted to the
      lower byte of the upper word, and LIF_DISABLE has been shifted "down".

    ! Changed field names in the FarDialogItemData structure.

    + It is now possible to handle a double click event through the
      DN_MOUSECLICK message (MouseEvent.dwEventFlags==DOUBLE_CLICK).

    ! Significant revamping of the internal key codes (farkeys.hpp).

    + ACTL_EJECTMEDIA

    + DM_GETTEXTPTR, DM_SETTEXTPTR, DM_SHOWITEM, DM_ADDHISTORY

    ! Ctrl-Break can now be controlled. Earlier the dialog was closed
      unconditionally, regardless of what the callback function
      returned on the DM_CLOSE message.

    + DIF_HIDDEN, DIF_MANUALADDHISTORY

    + The DIF_SHOWAMPERSAND flag can be used for DI_SINGLEBOX and
      DI_DOUBLEBOX items.

    + ACTL_KEYMACRO:
      struct ActlKeyMacro - the interface part for ACTL_KEYMACRO
      MCMD_LOADALL     - load all macros from the registry into the FAR
                         memory
      MCMD_SAVEALL     - save all macros from the registry into the FAR
                         memory

    ! Extended the syntax of the Message function

    + FSF.qsortex

    + EF_CREATENEW

    ! FSF.FarRecursiveSearch - added parameter void *param

    + FAR knows about 4 predefined help topics in HLF files:
      Contents - the standard main topic;
      Config   - the topic invoked by pressing Shift-F1 in the plugins
                 configuration menu;
      Editor   - the topic invoked by pressing Shift-F1 in the plugins menu
                 of the editor;
      Viewer   - the topic invoked by pressing Shift-F1 in the plugins menu
                 of the viewer.

    + FHELP_USECONTENTS

    * ACTL_GETFARVERSION returns the version number, and not TRUE/FALSE.

    * ACTL_WAITKEY waits for any key if NULL or -1 is passed in the parameter
      Param.

    + ECTL_SETPARAM - allows to set editor parameters:
       - Tab size (ESPT_TABSIZE)
       - Expand tabs to spaces (ESPT_EXPANDTABS)
       - Auto indent (ESPT_AUTOINDENT)
       - Cursor beyond end of line (ESPT_CURSORBEYOUNDEOL)
       - The format of the current character code (ESPT_CHARCODEBASE)

### FAR 1.70 beta 2 16.12.2000

    ! Changes in Param2 for messages DM_SETTEXT and DM_GETTEXT.
      Now they use pointers to FarDialogItemData structure.

    + 6 new colors are added for DISABLED items (in dialogs and warning
      messages). See Headers.c\farcolor.hpp (or Headers.pas\farcolor.pas).

    + DIF_3STATE

    ! The DIF_EDITEXPAND flag is no longer processed by DI_PSWEDIT and
      DI_FIXEDIT controls.

    + ACTL_GETCOLOR, ACTL_GETARRAYCOLOR

    ! The AddEndSlash function works with both types of slashes and replaces
      the existing trailing slash with the type of slashes that was used
      more often.

    ! The version format changed - the constant in plugin.hpp::FARMANAGERVERSION
      has the following format:
         HIWORD:         = NNN - # build
         LOWORD:  HIBYTE =   1 - version Hi
                  LOBYTE =  70 - version Lo

### FAR 1.70 beta 1 20.11.2000

    + Dialog API 1.0

    ! New/changed header files:
         farcolor.hpp  - Color attributes indexes.
         farkeys.hpp   - FAR manager internal key codes.

    + "Standard functions" - for reducing plugins size -
       the FarStandardFunctions structure.

    + GetMinFarVersion().

    + URL-activators and color attributes in HLF-files.

    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

    + Input fields with fixed length can have an input mask.

    + Structures: FarListItem, FarList.
    + Header files for 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

The "Colorer" plugin "introduced" highlighting in the editor:

    + 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

Rapid progress of the 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:
      Changed a member of the ArcInfo structure:
        - int AuthVer
        + DWORD Flags

      Flags added...
        enum ARCINFO_FLAGS
        {
          AF_AVPRESENT=1,
          AF_IGNOREERRORS=2
        };

### FAR 1.40 beta 27.06.1997

First time the FAR Plugins API was mentioned:
"External DLL modules (plugins) can be used to implement new FAR commands and emulate file systems..."

>     ER> "As a matter of fact I started thinking about plugins after Lavrentiev
>     ER> asked me to create a version of FAR with Arvid support. He even invented
>     ER> (thank you very much) a good name for it - FARvid ;-) I didn't really
>     ER> want to develop such a version and so I decided to make available, to
>     ER> whomever was interested, the API that will be sufficient as to add such
>     ER> capability to FAR without my participation..."

The following items are available in this version:

- Exported functions:
  ClosePlugin, Configure, DeleteFiles, ExitFAR, FreeFindData, FreeVirtualFindData, GetFiles, GetFindData, GetOpenPluginInfo, GetPluginInfo, GetVirtualFindData, MakeDirectory, OpenFilePlugin, OpenPlugin, ProcessEvent, ProcessHostFile, ProcessKey, PutFiles, SetDirectory, SetFindList, SetStartupInfo
- Service functions:
  Control, Dialog, FreeDirList, GetDirList, GetMsg, GetPluginDirList, Menu, Message, RestoreScreen, SaveScreen
- Structures
  FarDialogItem, FarMenuItem, InfoPanelLine, KeyBarTitles, OpenPluginInfo, PanelInfo, PanelMode, PanelRedrawInfo, PluginInfo, PluginPanelItem, PluginStartupInfo
- Language and help files