Group
Extension

Win32-Mechanize-NotepadPlusPlus/lib/Win32/Mechanize/NotepadPlusPlus/Notepad/Messages.pm

package Win32::Mechanize::NotepadPlusPlus::Notepad::Messages;

use warnings;
use strict;
use Exporter 5.57 ('import');

our @EXPORT = qw/
    %BUFFERENCODING
    %DOCSTATUS
    %INTERNALVAR
    %LANGTYPE
    %LINENUMWIDTH
    %MACROSTATUS
    %MENUHANDLE
    %MODELESS
    %NOTIFICATION
    %NPPIDM
    %NPPMSG
    %STATUSBAR
    %VIEW
    %WINMSGBOX
    %WINPLATFORM
    %WINVER
/;

=encoding utf8

=head1 NAME

Win32::Mechanize::NotepadPlusPlus::Notepad::Messages - Define values for using messages, notifications, and their arguments

=head1 SYNOPSIS

    use Win32::Mechanize::NotepadPlusPlus ':vars';
    print "$_\n" for sort { $NPPMSG{$a} <=> $NPPMSG{$b} } keys %NPPMSG;             # prints all message keys in numerical order


=head1 DESCRIPTION

Notepad++'s L<Plugin Communication system|https://npp-user-manual.org/docs/plugin-communication/#notepad-messages>
defines a set of messages that applications (either plugins embedded in Notepad++, or external programs)
can use for communicating with (and thus controlling) Notepad++.

The hashes in L<Win32::Mechanize::NotepadPlusPlus::Notepad::Messages> give named access to the underlying
messages, as well as named versions of the constants used as arguments for those messages.

=head2 MESSAGES

=over

=item %NPPMSG

Most of the Notepad++ Messages are already implemented in the L<Win32::Mechanize::NotepadPlusPlus::Notepad> interface, and under normal circumstances, the end-user should never need to access this %NPPMSG hash directly.

However, if you have a reason to use L<notepad-E<gt>SendMessage|Win32::Mechanize::NotepadPlusPlus::Notepad/SendMessage> directly,
you can use the values from this hash.  Usually, this would only be done if you want a unique wrapper
around the message, or want to implement a new or unimplemented message.

As an example of using th %NPPMSG hash, this code replicates C<notepad-E<gt>getNppVersion> behavior:

    my $nppv = notepad->SendMessage( $NPPMSG{NPPM_GETNPPVERSION}, 0, 0);
    print "npp v", join('.', $v>>16, split//,($v&0xFFFF)), "\n";

=item DEPRECATED %nppm

Deprecated: This variable has been deleted.  If you used it before, please replace with %NPPMSG or the other appropriate hash.

=cut

our %NPPMSG = (
    'NPPMSG'                                                     => (1024 + 1000),
    # messages
    'NPPM_ACTIVATEDOC'                                           => ((1024 + 1000) + 28),
    'NPPM_ADDTOOLBARICON'                                        => ((1024 + 1000) + 41),
    'NPPM_ADDTOOLBARICON_DEPRECATED'                             => ((1024 + 1000) + 41), 	# v8.0
    'NPPM_ADDTOOLBARICON_FORDARKMODE'                            => ((1024 + 1000) + 101),	# v8.0
    'NPPM_ALLOCATECMDID'                                         => ((1024 + 1000) + 81),
    'NPPM_ALLOCATEMARKER'                                        => ((1024 + 1000) + 82),
    'NPPM_ALLOCATESUPPORTED'                                     => ((1024 + 1000) + 80),
    'NPPM_CREATELEXER'                                           => ((1024 + 1000) + 110),  # v8.4.3
    'NPPM_CREATESCINTILLAHANDLE'                                 => ((1024 + 1000) + 20),
    'NPPM_DECODESCI'                                             => ((1024 + 1000) + 27),
    'NPPM_DESTROYSCINTILLAHANDLE'                                => ((1024 + 1000) + 21),
    'NPPM_DISABLEAUTOUPDATE'                                     => ((1024 + 1000) + 95),
    'NPPM_DMMGETPLUGINHWNDBYNAME'                                => ((1024 + 1000) + 43),
    'NPPM_DMMHIDE'                                               => ((1024 + 1000) + 31),
    'NPPM_DMMREGASDCKDLG'                                        => ((1024 + 1000) + 33),
    'NPPM_DMMSHOW'                                               => ((1024 + 1000) + 30),
    'NPPM_DMMUPDATEDISPINFO'                                     => ((1024 + 1000) + 32),
    'NPPM_DMMVIEWOTHERTAB'                                       => ((1024 + 1000) + 35),
    'NPPM_DOCSWITCHERDISABLECOLUMN'                              => ((1024 + 1000) + 89),   # renamed in v8.1.3
    'NPPM_DOCLISTDISABLECOLUMN'                                  => ((1024 + 1000) + 89), 	# new name in v8.1.3
    'NPPM_DOCLISTDISABLEEXTCOLUMN'                               => ((1024 + 1000) + 89), 	# new name in v8.1.5
    'NPPM_DOCLISTDISABLEPATHCOLUMN'                              => ((1024 + 1000) + 102), 	# new to v8.1.5
    'NPPM_DOOPEN'                                                => ((1024 + 1000) + 77),
    'NPPM_ENCODESCI'                                             => ((1024 + 1000) + 26),
    'NPPM_GETAPPDATAPLUGINSALLOWED'                              => ((1024 + 1000) + 87),
    'NPPM_GETBOOKMARKID'                                         => ((1024 + 1000) + 111),
    'NPPM_GETBUFFERENCODING'                                     => ((1024 + 1000) + 66),
    'NPPM_GETBUFFERFORMAT'                                       => ((1024 + 1000) + 68),
    'NPPM_GETBUFFERIDFROMPOS'                                    => ((1024 + 1000) + 59),
    'NPPM_GETBUFFERLANGTYPE'                                     => ((1024 + 1000) + 64),
    'NPPM_GETCURRENTBUFFERID'                                    => ((1024 + 1000) + 60),
    'NPPM_GETCURRENTCMDLINE'                                     => ((1024 + 1000) + 109),
    'NPPM_GETCURRENTCOLUMN'                                      => ((1024 + 3000) + 9),
    'NPPM_GETCURRENTDIRECTORY'                                   => ((1024 + 3000) + 2),
    'NPPM_GETCURRENTDOCINDEX'                                    => ((1024 + 1000) + 23),
    'NPPM_GETCURRENTLANGTYPE'                                    => ((1024 + 1000) + 5),
    'NPPM_GETCURRENTLINE'                                        => ((1024 + 3000) + 8),
    'NPPM_GETCURRENTLINESTR'                                     => ((1024 + 3000) + 12),
    'NPPM_GETCURRENTMACROSTATUS'                                 => ((1024 + 1000) + 106),  # v8.3.3
    'NPPM_GETCURRENTNATIVELANGENCODING'                          => ((1024 + 1000) + 79),
    'NPPM_GETCURRENTSCINTILLA'                                   => ((1024 + 1000) + 4),
    'NPPM_GETCURRENTVIEW'                                        => ((1024 + 1000) + 88),
    'NPPM_GETCURRENTWORD'                                        => ((1024 + 3000) + 6),
    'NPPM_GETEDITORDEFAULTBACKGROUNDCOLOR'                       => ((1024 + 1000) + 91),
    'NPPM_GETEDITORDEFAULTFOREGROUNDCOLOR'                       => ((1024 + 1000) + 90),
    'NPPM_GETENABLETHEMETEXTUREFUNC'                             => ((1024 + 1000) + 45),
    'NPPM_GETENABLETHEMETEXTUREFUNC_DEPRECATED'                  => ((1024 + 1000) + 45),   # v8.4.x
    'NPPM_GETEXTERNALLEXERAUTOINDENTMODE'                        => ((1024 + 1000) + 103),  # v8.3.3
    'NPPM_GETEXTPART'                                            => ((1024 + 3000) + 5),
    'NPPM_GETFILENAME'                                           => ((1024 + 3000) + 3),
    'NPPM_GETFILENAMEATCURSOR'                                   => ((1024 + 3000) + 11),
    'NPPM_GETFULLCURRENTPATH'                                    => ((1024 + 3000) + 1),
    'NPPM_GETFULLPATHFROMBUFFERID'                               => ((1024 + 1000) + 58),
    'NPPM_GETLANGUAGEDESC'                                       => ((1024 + 1000) + 84),
    'NPPM_GETLANGUAGENAME'                                       => ((1024 + 1000) + 83),
    'NPPM_GETLINENUMBERWIDTHMODE'                                => ((1024 + 1000) + 100), # v7.9.2
    'NPPM_GETMENUHANDLE'                                         => ((1024 + 1000) + 25),
    'NPPM_GETNAMEPART'                                           => ((1024 + 3000) + 4),
    'NPPM_GETNBOPENFILES'                                        => ((1024 + 1000) + 7),
    'NPPM_GETNBSESSIONFILES'                                     => ((1024 + 1000) + 13),
    'NPPM_GETNBUSERLANG'                                         => ((1024 + 1000) + 22),
    'NPPM_GETNPPDIRECTORY'                                       => ((1024 + 3000) + 7),
    'NPPM_GETNPPFULLFILEPATH'                                    => ((1024 + 3000) + 10),
    'NPPM_GETNPPVERSION'                                         => ((1024 + 1000) + 50),
    'NPPM_GETOPENFILENAMES'                                      => ((1024 + 1000) + 8),
    'NPPM_GETOPENFILENAMESPRIMARY'                               => ((1024 + 1000) + 17),
    'NPPM_GETOPENFILENAMESSECOND'                                => ((1024 + 1000) + 18),
    'NPPM_GETPLUGINHOMEPATH'                                     => ((1024 + 1000) + 97),
    'NPPM_GETPLUGINSCONFIGDIR'                                   => ((1024 + 1000) + 46),
    'NPPM_GETPOSFROMBUFFERID'                                    => ((1024 + 1000) + 57),
    'NPPM_GETSESSIONFILES'                                       => ((1024 + 1000) + 14),
    'NPPM_GETSETTINGSONCLOUDPATH'                                => ((1024 + 1000) + 98), # v7.9.2
    'NPPM_GETSHORTCUTBYCMDID'                                    => ((1024 + 1000) + 76),
    'NPPM_GETWINDOWSVERSION'                                     => ((1024 + 1000) + 42),
    'NPPM_HIDEMENU'                                              => ((1024 + 1000) + 72),
    'NPPM_HIDESTATUSBAR'                                         => ((1024 + 1000) + 74),
    'NPPM_HIDETABBAR'                                            => ((1024 + 1000) + 51),
    'NPPM_HIDETOOLBAR'                                           => ((1024 + 1000) + 70),
    'NPPM_ISAUTOINDENTON'                                        => ((1024 + 1000) + 105),  # v8.3.3
    'NPPM_ISDARKMODEENABLED'                                     => ((1024 + 1000) + 107),  # v8.4.1
    'NPPM_ISDOCSWITCHERSHOWN'                                    => ((1024 + 1000) + 86),
    'NPPM_ISDOCLISTSHOWN'                                        => ((1024 + 1000) + 86),	# v8.1.3
    'NPPM_ISMENUHIDDEN'                                          => ((1024 + 1000) + 73),
    'NPPM_ISSTATUSBARHIDDEN'                                     => ((1024 + 1000) + 75),
    'NPPM_ISTABBARHIDDEN'                                        => ((1024 + 1000) + 52),
    'NPPM_ISTOOLBARHIDDEN'                                       => ((1024 + 1000) + 71),
    'NPPM_LAUNCHFINDINFILESDLG'                                  => ((1024 + 1000) + 29),
    'NPPM_LOADSESSION'                                           => ((1024 + 1000) + 34),
    'NPPM_MAKECURRENTBUFFERDIRTY'                                => ((1024 + 1000) + 44),
    'NPPM_MENUCOMMAND'                                           => ((1024 + 1000) + 48),
    'NPPM_MODELESSDIALOG'                                        => ((1024 + 1000) + 12),
    'NPPM_MSGTOPLUGIN'                                           => ((1024 + 1000) + 47),
    'NPPM_RELOADBUFFERID'                                        => ((1024 + 1000) + 61),
    'NPPM_RELOADFILE'                                            => ((1024 + 1000) + 36),
    'NPPM_REMOVESHORTCUTBYCMDID'                                 => ((1024 + 1000) + 96),
    'NPPM_SAVEALLFILES'                                          => ((1024 + 1000) + 39),
    'NPPM_SAVECURRENTFILE'                                       => ((1024 + 1000) + 38),
    'NPPM_SAVECURRENTFILEAS'                                     => ((1024 + 1000) + 78),
    'NPPM_SAVECURRENTSESSION'                                    => ((1024 + 1000) + 16),
    'NPPM_SAVEFILE'                                              => ((1024 + 1000) + 94),
    'NPPM_SAVESESSION'                                           => ((1024 + 1000) + 15),
    'NPPM_SETBUFFERENCODING'                                     => ((1024 + 1000) + 67),
    'NPPM_SETBUFFERFORMAT'                                       => ((1024 + 1000) + 69),
    'NPPM_SETBUFFERLANGTYPE'                                     => ((1024 + 1000) + 65),
    'NPPM_SETCURRENTLANGTYPE'                                    => ((1024 + 1000) + 6),
    'NPPM_SETEDITORBORDEREDGE'                                   => ((1024 + 1000) + 93),
    'NPPM_SETEXTERNALLEXERAUTOINDENTMODE'                        => ((1024 + 1000) + 104),  # v8.3.3
    'NPPM_SETLINENUMBERWIDTHMODE'                                => ((1024 + 1000) + 99), # v7.9.2
    'NPPM_SETMENUITEMCHECK'                                      => ((1024 + 1000) + 40),
    'NPPM_SETSMOOTHFONT'                                         => ((1024 + 1000) + 92),
    'NPPM_SETSTATUSBAR'                                          => ((1024 + 1000) + 24),
    'NPPM_SHOWDOCSWITCHER'                                       => ((1024 + 1000) + 85),
    'NPPM_SHOWDOCLIST'                                       	 => ((1024 + 1000) + 85),	# v8.1.3
    'NPPM_SWITCHTOFILE'                                          => ((1024 + 1000) + 37),
    'NPPM_TRIGGERTABBARCONTEXTMENU'                              => ((1024 + 1000) + 49),

    # message offsets
    'WM_USER'                                                    => 1024,
    'RUNCOMMAND_USER'                                            => (1024 + 3000),
);

=item %VIEW

There are two groups of methods that access the views.

The first is L<getNumberOpenFiles()|Win32::Mechanize::NotepadPlusPlus::Notepad/getNumberOpenFiles>,
which uses three of the %VIEW keys to count the number of files open in the specified view.

    Key             | Value | Description
    ----------------+-------+------------------------------
    ALL_OPEN_FILES  | 0     | Total of files in both views
    PRIMARY_VIEW    | 1     | Only the files in the primary view (usually the left view: editor1)
    SECOND_VIEW     | 2     | Only the files in the second view (usually the right view: editor2)


The second group are the L<buffer-related methods|Win32::Mechanize::NotepadPlusPlus::Notepad/"Get/Change Active Buffers">.

    Key             | Value | Description
    ----------------+-------+------------------------------
    MAIN_VIEW       | 0     | Access the main view (usually the left view: editor1)
    SUB_VIEW        | 1     | Access the sub view (usually the right view: editor2)

Yes, the two groups have an off-by-one.  That's the way the underlying Notepad++ code, and thus the Plugin Interface, was designed.

=cut

our %VIEW = (
    # view params (NPPM_GETNBOPENFILES)
    'ALL_OPEN_FILES'                                             => 0,
    'PRIMARY_VIEW'                                               => 1,
    'SECOND_VIEW'                                                => 2,
    # view params (NPPM_GETCURRENTDOCINDEX)
    'MAIN_VIEW'                                                  => 0,
    'SUB_VIEW'                                                   => 1,
);

=item %MODELESS

=item TODO: L<issue #18|https://github.com/pryrt/Win32-Mechanize-NotepadPlusPlus/issues/18>

These would be used by the C<$NPPMSG{NPPM_MODELESSDIALOG}> message.
However, L<registerModelessDialog()|Win32::Mechanize::NotepadPlusPlus::Notepad/registerModelessDialog>
has not yet been implemented.

    Key                     | Description
    ------------------------|------------
    MODELESSDIALOGADD       | Registers a dialog's hWnd
    MODELESSDIALOGREMOVE    | Un-registers a dialog's hWnd

=cut

our %MODELESS = (
    # NPPM_MODELESSDIALOG params
    'MODELESSDIALOGADD'                                          => 0,
    'MODELESSDIALOGREMOVE'                                       => 1,
);

=item %STATUSBAR

These are be used by the L<setStatusBar()|Win32::Mechanize::NotepadPlusPlus::Notepad/setStatusBar> method for choosing which section of the status bar to change.

    Key                     |   | Description
    ------------------------+---+-----------------
    STATUSBAR_DOC_TYPE      | 0 | Document's syntax lexer (language)
    STATUSBAR_DOC_SIZE      | 1 | File size
    STATUSBAR_CUR_POS       | 2 | Current cursor position
    STATUSBAR_EOF_FORMAT    | 3 | EOL (End-Of-Line) format
    STATUSBAR_UNICODE_TYPE  | 4 | Encoding
    STATUSBAR_TYPING_MODE   | 5 | Insert (INS) or Overwrite (OVR)

=cut

our %STATUSBAR = (
    # NPPM_SETSTATUSBAR params
    'STATUSBAR_DOC_TYPE'                                         => 0,
    'STATUSBAR_DOC_SIZE'                                         => 1,
    'STATUSBAR_CUR_POS'                                          => 2,
    'STATUSBAR_EOF_FORMAT'                                       => 3,
    'STATUSBAR_UNICODE_TYPE'                                     => 4,
    'STATUSBAR_TYPING_MODE'                                      => 5,
);

=item %MENUHANDLE

Used internally by L<getMainMenuHandle()|Win32::Mechanize::NotepadPlusPlus::Notepad/getMainMenuHandle>  and
L<getPluginMenuHandle()|Win32::Mechanize::NotepadPlusPlus::Notepad/getPluginMenuHandle> to return handles to the specified menus.

    Key             |   | Description
    ----------------+---+-----------------
    NPPMAINMENU     | 1 | Main menu (contains File, Edit, ...)
    NPPPLUGINMENU   | 0 | Plugins menu (a submenu of the Main menu)

=cut

our %MENUHANDLE = (
    # NPPM_GETMENUHANDLE params
    'NPPPLUGINMENU'                                              => 0,
    'NPPMAINMENU'                                                => 1,
);

=item %INTERNALVAR

Pass these to L<getNppDir()|Win32::Mechanize::NotepadPlusPlus::Notepad/getNppDir> to access the internal variables described L<in the Macros section of the official docs|https://npp-user-manual.org/docs/config-files/#macros>.

    Key                 | Description                               | Example
    --------------------+-------------------------------------------+----------------------------
    FULL_CURRENT_PATH   | full path to the active file              | E:\My Web\main\welcome.html
    CURRENT_DIRECTORY   | active file’s directory                   | E:\My Web\main
    FILE_NAME           | active file’s name                        | welcome.html
    NAME_PART           | filename without extension                | welcome
    EXT_PART            | extension                                 | html
    CURRENT_WORD        | active selection or word under the cursor | text
    CURRENT_LINE        | line number of cursor location            | 1
    CURRENT_LINESTR     | text of the current line                  | tex of whole line
    CURRENT_COLUMN      | column number of cursor location          | 5
    NPP_DIRECTORY       | notepad++ executable's directory          | c:\Program Files\notepad++
    NPP_FULL_FILE_PATH  | full path to the notepad++.exe            | c:\Program Files\notepad++\notepad++.exe

=cut


our %INTERNALVAR = (
    'VAR_NOT_RECOGNIZED'                                         => 0,
    'FULL_CURRENT_PATH'                                          => 1,
    'CURRENT_DIRECTORY'                                          => 2,
    'FILE_NAME'                                                  => 3,
    'NAME_PART'                                                  => 4,
    'EXT_PART'                                                   => 5,
    'CURRENT_WORD'                                               => 6,
    'NPP_DIRECTORY'                                              => 7,
    'CURRENT_LINE'                                               => 8,
    'CURRENT_COLUMN'                                             => 9,
    'NPP_FULL_FILE_PATH'                                         => 10,
    'GETFILENAMEATCURSOR'                                        => 11,
    'CURRENT_LINESTR'                                            => 12,
);

=item %LANGTYPE

Used by L<language parser methods|Win32::Mechanize::NotepadPlusPlus::Notepad/"Get/Set Language Parser">.

    L_TEXT      : 0  | L_CSS       : 20 | L_AU3           : 40 | L_BAANC         : 60 | L_REGISTRY      : 80 |
    L_PHP       : 1  | L_PERL      : 21 | L_CAML          : 41 | L_SREC          : 61 | L_RUST          : 81 |
    L_C         : 2  | L_PYTHON    : 22 | L_ADA           : 42 | L_IHEX          : 62 | L_SPICE         : 82 |
    L_CPP       : 3  | L_LUA       : 23 | L_VERILOG       : 43 | L_TEHEX         : 63 | L_TXT2TAGS      : 83 |
    L_CS        : 4  | L_TEX       : 24 | L_MATLAB        : 44 | L_SWIFT         : 64 | L_VISUALPROLOG  : 84 |
    L_OBJC      : 5  | L_FORTRAN   : 25 | L_HASKELL       : 45 | L_ASN1          : 65 | L_EXTERNAL      : 85 |
    L_JAVA      : 6  | L_BASH      : 26 | L_INNO          : 46 | L_AVS           : 66 |                 :    |
    L_RC        : 7  | L_FLASH     : 27 | L_SEARCHRESULT  : 47 | L_BLITZBASIC    : 67 |                 :    |
    L_HTML      : 8  | L_NSIS      : 28 | L_CMAKE         : 48 | L_PUREBASIC     : 68 |                 :    |
    L_XML       : 9  | L_TCL       : 29 | L_YAML          : 49 | L_FREEBASIC     : 69 |                 :    |
    L_MAKEFILE  : 10 | L_LISP      : 30 | L_COBOL         : 50 | L_CSOUND        : 70 |                 :    |
    L_PASCAL    : 11 | L_SCHEME    : 31 | L_GUI4CLI       : 51 | L_ERLANG        : 71 |                 :    |
    L_BATCH     : 12 | L_ASM       : 32 | L_D             : 52 | L_ESCRIPT       : 72 |                 :    |
    L_INI       : 13 | L_DIFF      : 33 | L_POWERSHELL    : 53 | L_FORTH         : 73 |                 :    |
    L_ASCII     : 14 | L_PROPS     : 34 | L_R             : 54 | L_LATEX         : 74 |                 :    |
    L_USER      : 15 | L_PS        : 35 | L_JSP           : 55 | L_MMIXAL        : 75 |                 :    |
    L_ASP       : 16 | L_RUBY      : 36 | L_COFFEESCRIPT  : 56 | L_NIMROD        : 76 |                 :    |
    L_SQL       : 17 | L_SMALLTALK : 37 | L_JSON          : 57 | L_NNCRONTAB     : 77 |                 :    |
    L_VB        : 18 | L_VHDL      : 38 | L_JAVASCRIPT    : 58 | L_OSCRIPT       : 78 |                 :    |
    L_JS        : 19 | L_KIX       : 39 | L_FORTRAN_77    : 59 | L_REBOL         : 79 |                 :    |

=cut

our %LANGTYPE = (
    # enum LangType
    'L_ADA'                                                      => 42,
    'L_ASCII'                                                    => 14,
    'L_ASM'                                                      => 32,
    'L_ASN1'                                                     => 65,
    'L_ASP'                                                      => 16,
    'L_AU3'                                                      => 40,
    'L_AVS'                                                      => 66,
    'L_BAANC'                                                    => 60,
    'L_BASH'                                                     => 26,
    'L_BATCH'                                                    => 12,
    'L_BLITZBASIC'                                               => 67,
    'L_C'                                                        => 2,
    'L_CAML'                                                     => 41,
    'L_CMAKE'                                                    => 48,
    'L_COBOL'                                                    => 50,
    'L_COFFEESCRIPT'                                             => 56,
    'L_CPP'                                                      => 3,
    'L_CS'                                                       => 4,
    'L_CSOUND'                                                   => 70,
    'L_CSS'                                                      => 20,
    'L_D'                                                        => 52,
    'L_DIFF'                                                     => 33,
    'L_ERLANG'                                                   => 71,
    'L_ESCRIPT'                                                  => 72,
    'L_FLASH'                                                    => 27,
    'L_FORTH'                                                    => 73,
    'L_FORTRAN'                                                  => 25,
    'L_FORTRAN_77'                                               => 59,
    'L_FREEBASIC'                                                => 69,
    'L_GDSCRIPT'                                                 => 88, # v8.5.1
    'L_GUI4CLI'                                                  => 51,
    'L_HASKELL'                                                  => 45,
    'L_HOLLYWOOD'                                                => 89, # v8.5.2
    'L_HTML'                                                     => 8,
    'L_IHEX'                                                     => 62,
    'L_INI'                                                      => 13,
    'L_INNO'                                                     => 46,
    'L_JAVA'                                                     => 6,
    'L_JAVASCRIPT'                                               => 58,
    'L_JS'                                                       => 19,
    'L_JSON'                                                     => 57,
    'L_JSON5'                                                    => 86, # v8.4.9
    'L_JSP'                                                      => 55,
    'L_KIX'                                                      => 39,
    'L_LATEX'                                                    => 74,
    'L_LISP'                                                     => 30,
    'L_LUA'                                                      => 23,
    'L_MAKEFILE'                                                 => 10,
    'L_MATLAB'                                                   => 44,
    'L_MMIXAL'                                                   => 75,
    'L_MSSQL'                                                    => 87, # v8.5.1
    'L_NIM'                                                      => 76, # v8
    'L_NIMROD'                                                   => 76,
    'L_NNCRONTAB'                                                => 77,
    'L_NSIS'                                                     => 28,
    'L_OBJC'                                                     => 5,
    'L_OSCRIPT'                                                  => 78,
    'L_PASCAL'                                                   => 11,
    'L_PERL'                                                     => 21,
    'L_PHP '                                                     => 1,
    'L_POWERSHELL'                                               => 53,
    'L_PROPS'                                                    => 34,
    'L_PS'                                                       => 35,
    'L_PUREBASIC'                                                => 68,
    'L_PYTHON'                                                   => 22,
    'L_R'                                                        => 54,
    'L_RC'                                                       => 7,
    'L_REBOL'                                                    => 79,
    'L_REGISTRY'                                                 => 80,
    'L_RUBY'                                                     => 36,
    'L_RUST'                                                     => 81,
    'L_SCHEME'                                                   => 31,
    'L_SEARCHRESULT'                                             => 47,
    'L_SMALLTALK'                                                => 37,
    'L_SPICE'                                                    => 82,
    'L_SQL'                                                      => 17,
    'L_SREC'                                                     => 61,
    'L_SWIFT'                                                    => 64,
    'L_TCL'                                                      => 29,
    'L_TEHEX'                                                    => 63,
    'L_TEX'                                                      => 24,
    'L_TEXT'                                                     => 0,
    'L_TXT2TAGS'                                                 => 83,
    'L_TYPESCRIPT'                                               => 85, # v8.1.4
    'L_USER'                                                     => 15,
    'L_VB'                                                       => 18,
    'L_VERILOG'                                                  => 43,
    'L_VHDL'                                                     => 38,
    'L_VISUALPROLOG'                                             => 84,
    'L_XML'                                                      => 9,
    'L_YAML'                                                     => 49,
    'L_EXTERNAL'                                                 => 90,
);

=item %LINENUMWIDTH

Used by L<setLineNumberWidthMode|Win32::Mechanize::NotepadPlusPlus::Notepad/"setLineNumberWidthMode">
and L<getLineNumberWidthMode|Win32::Mechanize::NotepadPlusPlus::Notepad/"getLineNumberWidthMode">.

    Key                   |   | Description
    ----------------------+---+-----------------
    LINENUMWIDTH_CONSTANT | 1 | Line-number column width always wide enough for largest line number
    LINENUMWIDTH_DYNAMIC  | 0 | Line-number column width changes with number of digits in local line number

Added in v7.9.2.

=cut

our %LINENUMWIDTH = (
    # enum LineNumWidth
    'LINENUMWIDTH_CONSTANT' => 1,
    'LINENUMWIDTH_DYNAMIC'  => 0,
);

=item %WINVER

I'm not sure it's really useful, but it's still privided.

    print join "\n", map { "$_ => $WINVER{$_}" } sort keys %WINVER;

=cut

our %WINVER = (
    # enum WinVer
    'WV_95'                                                      => 2,
    'WV_98'                                                      => 3,
    'WV_ME'                                                      => 4,
    'WV_NT'                                                      => 5,
    'WV_S2003'                                                   => 8,
    'WV_UNKNOWN'                                                 => 0,
    'WV_VISTA'                                                   => 10,
    'WV_W2K'                                                     => 6,
    'WV_WIN10'                                                   => 14,
    'WV_WIN11'                                                   => 15,
    'WV_WIN32S'                                                  => 1,
    'WV_WIN7'                                                    => 11,
    'WV_WIN8'                                                    => 12,
    'WV_WIN81'                                                   => 13,
    'WV_XP'                                                      => 7,
    'WV_XPX64'                                                   => 9,
);

=item %WINPLATFORM

I'm not sure it's really useful, but it's still privided.

    print join "\n", map { "$_ => $WINPLATFORM{$_}" } sort keys %WINPLATFORM;

=cut

our %WINPLATFORM = (
    # enum Platform
    'PF_ARM64'                                                   => 4,
    'PF_IA64'                                                    => 3,
    'PF_UNKNOWN'                                                 => 0,
    'PF_X64'                                                     => 2,
    'PF_X86'                                                     => 1,

);

=item %WINMSGBOX

Used by L<messageBox|Win32::Mechanize::NotepadPlusPlus::Notepad/"messageBox">.
The first group set which buttons are in the dialog box.
The second group set which button is the default/activge button.
The third group affect the icon used for the dialog box.
The final group encode the return values.

    Key                  | Value      | Description
    ---------------------+------------+---------------------------------------------------------------------
    ABORTRETRYIGNORE     | 0x00000002 | The message box contains three push buttons: Abort, Retry, and Ignore.
    CANCELTRYCONTINUE    | 0x00000006 | The message box contains three push buttons: Cancel, Try Again, Continue. Use this message box type instead of MB_ABORTRETRYIGNORE.
    HELP                 | 0x00004000 | Adds a Help button to the message box. When the user clicks the Help button or presses F1, the system sends a WM_HELP message to the owner.
    OK                   | 0x00000000 | The message box contains one push button: OK. This is the default.
    OKCANCEL             | 0x00000001 | The message box contains two push buttons: OK and Cancel.
    RETRYCANCEL          | 0x00000005 | The message box contains two push buttons: Retry and Cancel.
    YESNO                | 0x00000004 | The message box contains two push buttons: Yes and No.
    YESNOCANCEL          | 0x00000003 | The message box contains three push buttons: Yes and No and Cancel.
    ---------------------+------------+---------------------------------------------------------------------
    DEFBUTTON1           | 0x00000000 | The first button is the default button. DEFBUTTON1 is the default unless DEFBUTTON2, DEFBUTTON3, or DEFBUTTON4 is specified.
    DEFBUTTON2           | 0x00000100 | The second button is the default button.
    DEFBUTTON3           | 0x00000200 | The third button is the default button.
    DEFBUTTON4           | 0x00000300 | The fourth button is the default button.
    ---------------------+------------+---------------------------------------------------------------------
    ICONEXCLAMATION      | 0x00000030 | An exclamation-point icon appears in the message box.
    ICONWARNING          | 0x00000030 | An exclamation-point icon appears in the message box.
    ICONINFORMATION      | 0x00000040 | An icon consisting of a lowercase letter i in a circle appears in the message box.
    ICONASTERISK         | 0x00000040 | An icon consisting of a lowercase letter i in a circle appears in the message box.
    ICONQUESTION         | 0x00000020 | A question-mark icon appears in the message box. The question-mark message icon is no longer recommended because it does not clearly represent a specific type of message and because the phrasing of a message as a question could apply to any message type. In addition, users can confuse the message symbol question mark with Help information. Therefore, do not use this question mark message symbol in your message boxes. The system continues to support its inclusion only for backward compatibility.
    ICONSTOP             | 0x00000010 | A stop-sign icon appears in the message box.
    ICONERROR            | 0x00000010 | A stop-sign icon appears in the message box.
    ICONHAND             | 0x00000010 | A stop-sign icon appears in the message box.
    ---------------------+------------+---------------------------------------------------------------------
    RETURN_ABORT         | 3          | The Abort button was selected.
    RETURN_CANCEL        | 2          | The Cancel button was selected.
    RETURN_CONTINUE      | 11         | The Continue button was selected.
    RETURN_IGNORE        | 5          | The Ignore button was selected.
    RETURN_NO            | 7          | The No button was selected.
    RETURN_OK            | 1          | The OK button was selected.
    RETURN_RETRY         | 4          | The Retry button was selected.
    RETURN_TRYAGAIN      | 10         | The Try Again button was selected.
    RETURN_YES           | 6          | The Yes button was selected.
    ---------------------+------------+---------------------------------------------------------------------
=cut

our %WINMSGBOX = (
    # enum MESSAGEBOXFLAGS
    # https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebox
    #--------------------=> -----------,
    'ABORTRETRYIGNORE'   => 0x00000002 ,
    'CANCELTRYCONTINUE'  => 0x00000006 ,
    'HELP'               => 0x00004000 ,
    'OK'                 => 0x00000000 ,
    'OKCANCEL'           => 0x00000001 ,
    'RETRYCANCEL'        => 0x00000005 ,
    'YESNO'              => 0x00000004 ,
    'YESNOCANCEL'        => 0x00000003 ,
    #--------------------=> -----------,
    'MB_DEFBUTTON1'      => 0x00000000 ,
    'MB_DEFBUTTON2'      => 0x00000100 ,
    'MB_DEFBUTTON3'      => 0x00000200 ,
    'MB_DEFBUTTON4'      => 0x00000300 ,
    #--------------------=> -----------,
    'ICONEXCLAMATION'    => 0x00000030 ,
    'ICONWARNING'        => 0x00000030 ,
    'ICONINFORMATION'    => 0x00000040 ,
    'ICONASTERISK'       => 0x00000040 ,
    'ICONQUESTION'       => 0x00000020 ,
    'ICONSTOP'           => 0x00000010 ,
    'ICONERROR'          => 0x00000010 ,
    'ICONHAND'           => 0x00000010 ,
    #--------------------=> -----------,
    'RETURN_ABORT'       => 3          ,
    'RETURN_CANCEL'      => 2          ,
    'RETURN_CONTINUE'    => 11         ,
    'RETURN_IGNORE'      => 5          ,
    'RETURN_NO'          => 7          ,
    'RETURN_OK'          => 1          ,
    'RETURN_RETRY'       => 4          ,
    'RETURN_TRYAGAIN'    => 10         ,
    'RETURN_YES'         => 6          ,
    #--------------------=> -----------,
);

=back

=head2 NOTIFICATIONS

Not yet used, but the constants are available.

=over

=item %NOTIFICATION

If you are interested, you can find all the message keys with code like the following:

    use Win32::Mechanize::NotepadPlusPlus ':vars';
    printf "%-39s => %d\n", $_, $NOTIFICATION{$_} for sort { $NOTIFICATION{$a} <=> $NOTIFICATION{$b} } keys %NOTIFICATION;   # prints all notification keys in numerical order

=cut


# NPP Notifications
our %NOTIFICATION = (
    'NPPN_FIRST'                                                 => 1000,
    'NPPN_BEFORESHUTDOWN'                                        => (1000 + 19),
    'NPPN_BUFFERACTIVATED'                                       => (1000 + 10),
    'NPPN_CANCELSHUTDOWN'                                        => (1000 + 20),
    'NPPN_CMDLINEPLUGINMSG'                                      => (1000 + 28),    # v8.4.2
    'NPPN_DARKMODECHANGED'                                       => (1000 + 27),    # v8.4.1
    'NPPN_DOCORDERCHANGED'                                       => (1000 + 17),
    'NPPN_EXTERNALLEXERBUFFER'                                   => (1000 + 29),    # v8.5
    'NPPN_FILEBEFORECLOSE'                                       => (1000 + 3),
    'NPPN_FILEBEFOREDELETE'                                      => (1000 + 24),
    'NPPN_FILEBEFORELOAD'                                        => (1000 + 14),
    'NPPN_FILEBEFOREOPEN'                                        => (1000 + 6),
    'NPPN_FILEBEFORERENAME'                                      => (1000 + 21),
    'NPPN_FILEBEFORESAVE'                                        => (1000 + 7),
    'NPPN_FILECLOSED'                                            => (1000 + 5),
    'NPPN_FILEDELETED'                                           => (1000 + 26),
    'NPPN_FILEDELETEFAILED'                                      => (1000 + 25),
    'NPPN_FILELOADFAILED'                                        => (1000 + 15),
    'NPPN_FILEOPENED'                                            => (1000 + 4),
    'NPPN_FILERENAMECANCEL'                                      => (1000 + 22),
    'NPPN_FILERENAMED'                                           => (1000 + 23),
    'NPPN_FILESAVED'                                             => (1000 + 8),
    'NPPN_LANGCHANGED'                                           => (1000 + 11),
    'NPPN_READONLYCHANGED'                                       => (1000 + 16),
    'NPPN_READY'                                                 => (1000 + 1),
    'NPPN_SHORTCUTREMAPPED'                                      => (1000 + 13),
    'NPPN_SHUTDOWN'                                              => (1000 + 9),
    'NPPN_SNAPSHOTDIRTYFILELOADED'                               => (1000 + 18),
    'NPPN_TBMODIFICATION'                                        => (1000 + 2),
    'NPPN_WORDSTYLESUPDATED'                                     => (1000 + 12),
);

=item %DOCSTATUS

Used by the NPPN_READONLYCHANGED notification.

    Key                     |   | Description
    ------------------------+---+-----------------
    DOCSTATUS_READONLY      | 1 | The file changed its "is readonly" status
    DOCSTATUS_BUFFERDIRTY   | 0 | The file changed its "is modified" status

=cut

our %DOCSTATUS = (
    # NPPN_READONLYCHANGED notification params
    'DOCSTATUS_READONLY'                                         => 1,
    'DOCSTATUS_BUFFERDIRTY'                                      => 2,
);

=back

=head2 MENU COMMAND ID VALUES

Underlying the Notepad++ menu system (and any other Win32-API-based application), there are individual
command IDs for each menu command.  Notepad++ gives accesss through the NPPM_MENUCOMMAND message, and
L<notepad-E<gt>menuCommand()|Win32::Mechanize::NotepadPlusPlus::Notepad/menuCommand> allows you to
activate any menu entry's command by its menu ID.

You can find out the names and values of all the messages using:

    use Win32::Mechanize::NotepadPlusPlus ':vars';
    printf "%-40s => %s\n", $_, $NPPIDM{$_} for sort keys %NPPIDM;

=over

=item %NPPIDM

    # both of the next two are equivalent to notepad->close(), but using the command ID for File > Close
    notepad->menuCommand( $NPPIDM{IDM_FILE_CLOSE} );
    notepad->SendMessage( $NPPMSG{NPPM_MENUCOMMAND} , 0 , $NPPIDM{IDM_FILE_CLOSE} );

=item DEPRECATED %nppidm

Deprecated name for %NPPIDM.  This variable no longer exists.  If you were using it, replace
it with %NPPIDM.

=back

=cut

our %NPPIDM = (
    'WM_USER'                                                    => 1024,
    'IDM'                                                        => 40000,
    'IDM_ABOUT'                                                  => (40000  + 7000),
    'IDM_CLEAN_RECENT_FILE_LIST'                                 => ((40000 + 2000) + 41),
    'IDM_CMDLINEARGUMENTS'                                       => ((40000  + 7000)  + 10),
    'IDM_CONFUPDATERPROXY'                                       => ((40000  + 7000)  + 9),
    'IDM_DEBUGINFO'                                              => ((40000  + 7000)  + 12),
    'IDM_DOCLIST_COPYNAMES'                                      => ((40000 + 3500) + 3),		# v8.2.1
    'IDM_DOCLIST_COPYPATHS'                                      => ((40000 + 3500) + 4),		# v8.2.1
    'IDM_DOCLIST_FILESCLOSE'                                     => ((40000 + 3500) + 1),		# v8.1.3
    'IDM_DOCLIST_FILESCLOSEOTHERS'                               => ((40000 + 3500) + 2),		# v8.1.3
    'IDM_DROPLIST_LIST'                                          => (14000 + 1),		# v8.4.3
    'IDM_DROPLIST_MRU_FIRST'                                     => (14000 + 20),		# v8.4.3
    'IDM_EDIT'                                                   => (40000 + 2000),
    'IDM_EDIT_AUTOCOMPLETE'                                      => (50000 + 0),
    'IDM_EDIT_AUTOCOMPLETE_CURRENTFILE'                          => (50000 + 1),
    'IDM_EDIT_AUTOCOMPLETE_PATH'                                 => (50000 + 6),
    'IDM_EDIT_BEGINENDSELECT'                                    => ((40000 + 2000) + 20),
    'IDM_EDIT_BEGINENDSELECT_COLUMNMODE'                         => ((40000 + 2000) + 89),		# v8.5
    'IDM_EDIT_BLANKLINEABOVECURRENT'                             => ((40000 + 2000) + 57),
    'IDM_EDIT_BLANKLINEBELOWCURRENT'                             => ((40000 + 2000) + 58),
    'IDM_EDIT_BLOCK_COMMENT'                                     => ((40000 + 2000) + 22),
    'IDM_EDIT_BLOCK_COMMENT_SET'                                 => ((40000 + 2000) + 35),
    'IDM_EDIT_BLOCK_UNCOMMENT'                                   => ((40000 + 2000) + 36),
    'IDM_EDIT_CHANGESEARCHENGINE'                                => ((40000 + 2000) + 76),
    'IDM_EDIT_CHAR_PANEL'                                        => ((40000 + 2000) + 51),
    'IDM_EDIT_CLEARREADONLY'                                     => ((40000 + 2000) + 33),
    'IDM_EDIT_CLIPBOARDHISTORY_PANEL'                            => ((40000 + 2000) + 52),
    'IDM_EDIT_COLUMNMODE'                                        => ((40000 + 2000) + 34),
    'IDM_EDIT_COLUMNMODETIP'                                     => ((40000 + 2000) + 37),
    'IDM_EDIT_COPY'                                              => ((40000 + 2000) + 2),
    'IDM_EDIT_COPY_ALL_NAMES'                                    => ((40000 + 2000) + 87),		# v8.2.1
    'IDM_EDIT_COPY_ALL_PATHS'                                    => ((40000 + 2000) + 88),		# v8.2.1
    'IDM_EDIT_COPY_BINARY'                                       => ((40000 + 2000) + 48),
    'IDM_EDIT_COPY_LINK'                                         => ((40000 + 2000) + 82),  # v7.9.2
    'IDM_EDIT_CURRENTDIRTOCLIP'                                  => ((40000 + 2000) + 31),
    'IDM_EDIT_CUT'                                               => ((40000 + 2000) + 1),
    'IDM_EDIT_CUT_BINARY'                                        => ((40000 + 2000) + 49),
    'IDM_EDIT_DELETE'                                            => ((40000 + 2000) + 6),
    'IDM_EDIT_DUP_LINE'                                          => ((40000 + 2000) + 10),
    'IDM_EDIT_EOL2WS'                                            => ((40000 + 2000) + 44),
    'IDM_EDIT_FILENAMETOCLIP'                                    => ((40000 + 2000) + 30),
    'IDM_EDIT_FULLPATHTOCLIP'                                    => ((40000 + 2000) + 29),
    'IDM_EDIT_FUNCCALLTIP'                                       => (50000 + 2),
    'IDM_EDIT_FUNCCALLTIP_NEXT'                                  => (50000 + 11),		# v8.4.5
    'IDM_EDIT_FUNCCALLTIP_PREVIOUS'                              => (50000 + 10),		# v8.4.5
    'IDM_EDIT_INSERT_DATETIME_CUSTOMIZED'                        => ((40000 + 2000) + 86),	# v8.1.5
    'IDM_EDIT_INSERT_DATETIME_LONG'                              => ((40000 + 2000) + 85),	# v8.1.4
    'IDM_EDIT_INSERT_DATETIME_SHORT'                             => ((40000 + 2000) + 84),	# v8.1.4
    'IDM_EDIT_INS_TAB'                                           => ((40000 + 2000) + 8),
    'IDM_EDIT_INVERTCASE'                                        => ((40000 + 2000) + 71),
    'IDM_EDIT_JOIN_LINES'                                        => ((40000 + 2000) + 13),
    'IDM_EDIT_LINE_DOWN'                                         => ((40000 + 2000) + 15),
    'IDM_EDIT_LINE_UP'                                           => ((40000 + 2000) + 14),
    'IDM_EDIT_LOWERCASE'                                         => ((40000 + 2000) + 17),
    'IDM_EDIT_LTR'                                               => ((40000 + 2000) + 27),
    'IDM_EDIT_OPENASFILE'                                        => ((40000 + 2000) + 73),
    'IDM_EDIT_OPENINFOLDER'                                      => ((40000 + 2000) + 74),
    'IDM_EDIT_PASTE'                                             => ((40000 + 2000) + 5),
    'IDM_EDIT_PASTE_AS_HTML'                                     => ((40000 + 2000) + 38),
    'IDM_EDIT_PASTE_AS_RTF'                                      => ((40000 + 2000) + 39),
    'IDM_EDIT_PASTE_BINARY'                                      => ((40000 + 2000) + 50),
    'IDM_EDIT_PROPERCASE_BLEND'                                  => ((40000 + 2000) + 68),
    'IDM_EDIT_PROPERCASE_FORCE'                                  => ((40000 + 2000) + 67),
    'IDM_EDIT_RANDOMCASE'                                        => ((40000 + 2000) + 72),
    'IDM_EDIT_REDO'                                              => ((40000 + 2000) + 4),
    'IDM_EDIT_REMOVEEMPTYLINES'                                  => ((40000 + 2000) + 55),
    'IDM_EDIT_REMOVEEMPTYLINESWITHBLANK'                         => ((40000 + 2000) + 56),
    #'IDM_EDIT_REMOVE_DUP_LINES'                                  => ((40000 + 2000) + 77), # renamed to IDM_EDIT_REMOVE_CONSECUTIVE_DUP_LINES in v7.9.1
    'IDM_EDIT_REMOVE_CONSECUTIVE_DUP_LINES'                      => ((40000 + 2000) + 77), # renamed v7.9.1
    'IDM_EDIT_REMOVE_ANY_DUP_LINES'                              => ((40000 + 2000) + 79), # added v7.9.1
    'IDM_EDIT_RMV_TAB'                                           => ((40000 + 2000) + 9),
    'IDM_EDIT_RTL'                                               => ((40000 + 2000) + 26),
    'IDM_EDIT_SEARCHONINTERNET'                                  => ((40000 + 2000) + 75),
    'IDM_EDIT_SELECTALL'                                         => ((40000 + 2000) + 7),
    'IDM_EDIT_SENTENCECASE_BLEND'                                => ((40000 + 2000) + 70),
    'IDM_EDIT_SENTENCECASE_FORCE'                                => ((40000 + 2000) + 69),
    'IDM_EDIT_SETREADONLY'                                       => ((40000 + 2000) + 28),
    'IDM_EDIT_SORTLINES_DECIMALCOMMA_ASCENDING'                  => ((40000 + 2000) + 63),
    'IDM_EDIT_SORTLINES_DECIMALCOMMA_DESCENDING'                 => ((40000 + 2000) + 64),
    'IDM_EDIT_SORTLINES_DECIMALDOT_ASCENDING'                    => ((40000 + 2000) + 65),
    'IDM_EDIT_SORTLINES_DECIMALDOT_DESCENDING'                   => ((40000 + 2000) + 66),
    'IDM_EDIT_SORTLINES_INTEGER_ASCENDING'                       => ((40000 + 2000) + 61),
    'IDM_EDIT_SORTLINES_INTEGER_DESCENDING'                      => ((40000 + 2000) + 62),
    'IDM_EDIT_SORTLINES_LEXICOGRAPHIC_ASCENDING'                 => ((40000 + 2000) + 59),
    'IDM_EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING'                => ((40000 + 2000) + 60),
    'IDM_EDIT_SORTLINES_LEXICO_CASE_INSENS_ASCENDING'            => ((40000 + 2000) + 80), # added v7.9.1
    'IDM_EDIT_SORTLINES_LEXICO_CASE_INSENS_DESCENDING'           => ((40000 + 2000) + 81), # added v7.9.1
    'IDM_EDIT_SORTLINES_RANDOMLY'                                => ((40000 + 2000) + 78), # added v7.9.1
    'IDM_EDIT_SORTLINES_REVERSE_ORDER'                           => ((40000 + 2000) + 83),	# v8.0
    'IDM_EDIT_SPLIT_LINES'                                       => ((40000 + 2000) + 12),
    'IDM_EDIT_STREAM_COMMENT'                                    => ((40000 + 2000) + 23),
    'IDM_EDIT_STREAM_UNCOMMENT'                                  => ((40000 + 2000) + 47),
    'IDM_EDIT_SW2TAB_ALL'                                        => ((40000 + 2000) + 54),
    'IDM_EDIT_SW2TAB_LEADING'                                    => ((40000 + 2000) + 53),
    'IDM_EDIT_TAB2SW'                                            => ((40000 + 2000) + 46),
    'IDM_EDIT_TRANSPOSE_LINE'                                    => ((40000 + 2000) + 11),
    'IDM_EDIT_TRIMALL'                                           => ((40000 + 2000) + 45),
    'IDM_EDIT_TRIMLINEHEAD'                                      => ((40000 + 2000) + 42),
    'IDM_EDIT_TRIMTRAILING'                                      => ((40000 + 2000) + 24),
    'IDM_EDIT_TRIM_BOTH'                                         => ((40000 + 2000) + 43),
    'IDM_EDIT_UNDO'                                              => ((40000 + 2000) + 3),
    'IDM_EDIT_UPPERCASE'                                         => ((40000 + 2000) + 16),
    'IDM_EXECUTE'                                                => (40000 + 9000),
    'IDM_EXPORT_FUNC_LIST_AND_QUIT'                              => ((40000 + 4000) + 73),
    'IDM_FILE'                                                   => (40000 + 1000),
    'IDM_FILEMENU_EXISTCMDPOSITION'                              => 22,
    'IDM_FILEMENU_LASTONE'                                       => ((40000 + 1000) + 25), # updated v7.9.1
    'IDM_FILESWITCHER_FILESCLOSE'                                => ((40000 + 3500) + 1),	# renamed v8.1.3 to IDM_DOCLIST_*
    'IDM_FILESWITCHER_FILESCLOSEOTHERS'                          => ((40000 + 3500) + 2),	# renamed v8.1.3 to IDM_DOCLIST_*
    'IDM_FILE_CLOSE'                                             => ((40000 + 1000) + 3),
    'IDM_FILE_CLOSEALL'                                          => ((40000 + 1000) + 4),
    'IDM_FILE_CLOSEALL_BUT_CURRENT'                              => ((40000 + 1000) + 5),
    'IDM_FILE_CLOSEALL_TOLEFT'                                   => ((40000 + 1000) + 9),
    'IDM_FILE_CLOSEALL_TORIGHT'                                  => ((40000 + 1000) + 18),
    'IDM_FILE_CLOSEALL_UNCHANGED'                                => ((40000 + 1000) + 24),
    'IDM_FILE_CONTAININGFOLDERASWORKSPACE'                       => ((40000 + 1000) + 25), # added v7.9.1
    'IDM_FILE_DELETE'                                            => ((40000 + 1000) + 16),
    'IDM_FILE_EXIT'                                              => ((40000 + 1000) + 11),
    'IDM_FILE_LOADSESSION'                                       => ((40000 + 1000) + 12),
    'IDM_FILE_NEW'                                               => ((40000 + 1000) + 1),
    'IDM_FILE_OPEN'                                              => ((40000 + 1000) + 2),
    'IDM_FILE_OPENFOLDERASWORSPACE'                              => ((40000 + 1000) + 22),
    'IDM_FILE_OPEN_CMD'                                          => ((40000 + 1000) + 20),
    'IDM_FILE_OPEN_DEFAULT_VIEWER'                               => ((40000 + 1000) + 23),
    'IDM_FILE_OPEN_FOLDER'                                       => ((40000 + 1000) + 19),
    'IDM_FILE_PRINT'                                             => ((40000 + 1000) + 10),
    'IDM_FILE_PRINTNOW'                                          => 1001,
    'IDM_FILE_RELOAD'                                            => ((40000 + 1000) + 14),
    'IDM_FILE_RENAME'                                            => ((40000 + 1000) + 17),
    'IDM_FILE_RESTORELASTCLOSEDFILE'                             => ((40000 + 1000) + 21),
    'IDM_FILE_SAVE'                                              => ((40000 + 1000) + 6),
    'IDM_FILE_SAVEALL'                                           => ((40000 + 1000) + 7),
    'IDM_FILE_SAVEAS'                                            => ((40000 + 1000) + 8),
    'IDM_FILE_SAVECOPYAS'                                        => ((40000 + 1000) + 15),
    'IDM_FILE_SAVESESSION'                                       => ((40000 + 1000) + 13),
    'IDM_FOCUS_ON_FOUND_RESULTS'                                 => ((40000 + 3000) + 45),
    'IDM_FORMAT'                                                 => (40000 + 5000),
    'IDM_FORMAT_ANSI'                                            => ((40000 + 5000) + 4),
    'IDM_FORMAT_AS_UTF_8'                                        => ((40000 + 5000) + 8),
    'IDM_FORMAT_BIG5'                                            => (((40000 + 5000) + 20) + 40),
    'IDM_FORMAT_CONV2_ANSI'                                      => ((40000 + 5000) + 9),
    'IDM_FORMAT_CONV2_AS_UTF_8'                                  => ((40000 + 5000) + 10),
    'IDM_FORMAT_CONV2_UCS_2BE'                                   => ((40000 + 5000) + 12),
    'IDM_FORMAT_CONV2_UCS_2LE'                                   => ((40000 + 5000) + 13),
    'IDM_FORMAT_CONV2_UTF_16BE'                                  => ((40000 + 5000) + 12), # 2021-03-27: Don renamed UCS-2 to UTF-16
    'IDM_FORMAT_CONV2_UTF_16LE'                                  => ((40000 + 5000) + 13), # 2021-03-27: Don renamed UCS-2 to UTF-16
    'IDM_FORMAT_CONV2_UTF_8'                                     => ((40000 + 5000) + 11),
    'IDM_FORMAT_DOS_437'                                         => (((40000 + 5000) + 20) + 24),
    'IDM_FORMAT_DOS_720'                                         => (((40000 + 5000) + 20) + 25),
    'IDM_FORMAT_DOS_737'                                         => (((40000 + 5000) + 20) + 26),
    'IDM_FORMAT_DOS_775'                                         => (((40000 + 5000) + 20) + 27),
    'IDM_FORMAT_DOS_850'                                         => (((40000 + 5000) + 20) + 28),
    'IDM_FORMAT_DOS_852'                                         => (((40000 + 5000) + 20) + 29),
    'IDM_FORMAT_DOS_855'                                         => (((40000 + 5000) + 20) + 30),
    'IDM_FORMAT_DOS_857'                                         => (((40000 + 5000) + 20) + 31),
    'IDM_FORMAT_DOS_858'                                         => (((40000 + 5000) + 20) + 32),
    'IDM_FORMAT_DOS_860'                                         => (((40000 + 5000) + 20) + 33),
    'IDM_FORMAT_DOS_861'                                         => (((40000 + 5000) + 20) + 34),
    'IDM_FORMAT_DOS_862'                                         => (((40000 + 5000) + 20) + 35),
    'IDM_FORMAT_DOS_863'                                         => (((40000 + 5000) + 20) + 36),
    'IDM_FORMAT_DOS_865'                                         => (((40000 + 5000) + 20) + 37),
    'IDM_FORMAT_DOS_866'                                         => (((40000 + 5000) + 20) + 38),
    'IDM_FORMAT_DOS_869'                                         => (((40000 + 5000) + 20) + 39),
    'IDM_FORMAT_ENCODE'                                          => ((40000 + 5000) + 20),
    'IDM_FORMAT_ENCODE_END'                                      => (((40000 + 5000) + 20) + 48),
    'IDM_FORMAT_EUC_KR'                                          => (((40000 + 5000) + 20) + 44),
    'IDM_FORMAT_GB2312'                                          => (((40000 + 5000) + 20) + 41),
    'IDM_FORMAT_ISO_8859_1'                                      => (((40000 + 5000) + 20) + 9),
    'IDM_FORMAT_ISO_8859_13'                                     => (((40000 + 5000) + 20) + 20),
    'IDM_FORMAT_ISO_8859_14'                                     => (((40000 + 5000) + 20) + 21),
    'IDM_FORMAT_ISO_8859_15'                                     => (((40000 + 5000) + 20) + 22),
    'IDM_FORMAT_ISO_8859_2'                                      => (((40000 + 5000) + 20) + 10),
    'IDM_FORMAT_ISO_8859_3'                                      => (((40000 + 5000) + 20) + 11),
    'IDM_FORMAT_ISO_8859_4'                                      => (((40000 + 5000) + 20) + 12),
    'IDM_FORMAT_ISO_8859_5'                                      => (((40000 + 5000) + 20) + 13),
    'IDM_FORMAT_ISO_8859_6'                                      => (((40000 + 5000) + 20) + 14),
    'IDM_FORMAT_ISO_8859_7'                                      => (((40000 + 5000) + 20) + 15),
    'IDM_FORMAT_ISO_8859_8'                                      => (((40000 + 5000) + 20) + 16),
    'IDM_FORMAT_ISO_8859_9'                                      => (((40000 + 5000) + 20) + 17),
    'IDM_FORMAT_KOI8R_CYRILLIC'                                  => (((40000 + 5000) + 20) + 48),
    'IDM_FORMAT_KOI8U_CYRILLIC'                                  => (((40000 + 5000) + 20) + 47),
    'IDM_FORMAT_KOREAN_WIN'                                      => (((40000 + 5000) + 20) + 43),
    'IDM_FORMAT_MAC_CYRILLIC'                                    => (((40000 + 5000) + 20) + 46),
    'IDM_FORMAT_SHIFT_JIS'                                       => (((40000 + 5000) + 20) + 42),
    'IDM_FORMAT_TIS_620'                                         => (((40000 + 5000) + 20) + 45),
    'IDM_FORMAT_TODOS'                                           => ((40000 + 5000) + 1),
    'IDM_FORMAT_TOMAC'                                           => ((40000 + 5000) + 3),
    'IDM_FORMAT_TOUNIX'                                          => ((40000 + 5000) + 2),
    'IDM_FORMAT_UCS_2BE'                                         => ((40000 + 5000) + 6),
    'IDM_FORMAT_UCS_2LE'                                         => ((40000 + 5000) + 7),
    'IDM_FORMAT_UTF_16BE'                                        => ((40000 + 5000) + 6), # 2021-Mar-26: Don renamed UCS-2 to UTF-16
    'IDM_FORMAT_UTF_16LE'                                        => ((40000 + 5000) + 7), # 2021-Mar-26: Don renamed UCS-2 to UTF-16
    'IDM_FORMAT_UTF_8'                                           => ((40000 + 5000) + 5),
    'IDM_FORMAT_WIN_1250'                                        => (((40000 + 5000) + 20) + 0),
    'IDM_FORMAT_WIN_1251'                                        => (((40000 + 5000) + 20) + 1),
    'IDM_FORMAT_WIN_1252'                                        => (((40000 + 5000) + 20) + 2),
    'IDM_FORMAT_WIN_1253'                                        => (((40000 + 5000) + 20) + 3),
    'IDM_FORMAT_WIN_1254'                                        => (((40000 + 5000) + 20) + 4),
    'IDM_FORMAT_WIN_1255'                                        => (((40000 + 5000) + 20) + 5),
    'IDM_FORMAT_WIN_1256'                                        => (((40000 + 5000) + 20) + 6),
    'IDM_FORMAT_WIN_1257'                                        => (((40000 + 5000) + 20) + 7),
    'IDM_FORMAT_WIN_1258'                                        => (((40000 + 5000) + 20) + 8),
    'IDM_FORUM'                                                  => ((40000  + 7000)  + 4),
    'IDM_HELP'                                                   => ((40000  + 7000)  + 8),
    'IDM_HOMESWEETHOME'                                          => ((40000  + 7000)  + 1),
    'IDM_LANG'                                                   => (40000 + 6000),
    'IDM_LANGSTYLE_CONFIG_DLG'                                   => ((40000 + 6000) + 1),
    'IDM_LANG_ADA'                                               => ((40000 + 6000) + 42),
    'IDM_LANG_ASCII'                                             => ((40000 + 6000) + 15),
    'IDM_LANG_ASM'                                               => ((40000 + 6000) + 33),
    'IDM_LANG_ASN1'                                              => ((40000 + 6000) + 64),
    'IDM_LANG_ASP'                                               => ((40000 + 6000) + 9),
    'IDM_LANG_AU3'                                               => ((40000 + 6000) + 44),
    'IDM_LANG_AVS'                                               => ((40000 + 6000) + 65),
    'IDM_LANG_BAANC'                                             => ((40000 + 6000) + 59),
    'IDM_LANG_BASH'                                              => ((40000 + 6000) + 27),
    'IDM_LANG_BATCH'                                             => ((40000 + 6000) + 22),
    'IDM_LANG_BLITZBASIC'                                        => ((40000 + 6000) + 66),
    'IDM_LANG_C'                                                 => ((40000 + 6000) + 2),
    'IDM_LANG_CAML'                                              => ((40000 + 6000) + 40),
    'IDM_LANG_CMAKE'                                             => ((40000 + 6000) + 48),
    'IDM_LANG_COBOL'                                             => ((40000 + 6000) + 50),
    'IDM_LANG_COFFEESCRIPT'                                      => ((40000 + 6000) + 56),
    'IDM_LANG_CPP'                                               => ((40000 + 6000) + 3),
    'IDM_LANG_CS'                                                => ((40000 + 6000) + 23),
    'IDM_LANG_CSOUND'                                            => ((40000 + 6000) + 69),
    'IDM_LANG_CSS'                                               => ((40000 + 6000) + 10),
    'IDM_LANG_D'                                                 => ((40000 + 6000) + 51),
    'IDM_LANG_DIFF'                                              => ((40000 + 6000) + 34),
    'IDM_LANG_ERLANG'                                            => ((40000 + 6000) + 70),
    'IDM_LANG_ESCRIPT'                                           => ((40000 + 6000) + 71),
    'IDM_LANG_EXTERNAL'                                          => ((40000 + 6000) + 165),
    'IDM_LANG_EXTERNAL_LIMIT'                                    => ((40000 + 6000) + 179),
    'IDM_LANG_FLASH'                                             => ((40000 + 6000) + 28),
    'IDM_LANG_FORTH'                                             => ((40000 + 6000) + 72),
    'IDM_LANG_FORTRAN'                                           => ((40000 + 6000) + 26),
    'IDM_LANG_FORTRAN_77'                                        => ((40000 + 6000) + 58),
    'IDM_LANG_FREEBASIC'                                         => ((40000 + 6000) + 68),
    'IDM_LANG_GUI4CLI'                                           => ((40000 + 6000) + 52),
    'IDM_LANG_HASKELL'                                           => ((40000 + 6000) + 46),
    'IDM_LANG_HTML'                                              => ((40000 + 6000) + 5),
    'IDM_LANG_IHEX'                                              => ((40000 + 6000) + 61),
    'IDM_LANG_INI'                                               => ((40000 + 6000) + 19),
    'IDM_LANG_INNO'                                              => ((40000 + 6000) + 47),
    'IDM_LANG_JAVA'                                              => ((40000 + 6000) + 4),
    'IDM_LANG_JS'                                                => ((40000 + 6000) + 7),
    'IDM_LANG_JSON'                                              => ((40000 + 6000) + 57),
    'IDM_LANG_JSP'                                               => ((40000 + 6000) + 55),
    'IDM_LANG_KIX'                                               => ((40000 + 6000) + 41),
    'IDM_LANG_LATEX'                                             => ((40000 + 6000) + 73),
    'IDM_LANG_LISP'                                              => ((40000 + 6000) + 31),
    'IDM_LANG_LUA'                                               => ((40000 + 6000) + 24),
    'IDM_LANG_MAKEFILE'                                          => ((40000 + 6000) + 18),
    'IDM_LANG_MATLAB'                                            => ((40000 + 6000) + 45),
    'IDM_LANG_MMIXAL'                                            => ((40000 + 6000) + 74),
    'IDM_LANG_NIMROD'                                            => ((40000 + 6000) + 75),	# renamed v8.0
    'IDM_LANG_NIM'                                               => ((40000 + 6000) + 75),  # v8.0
    'IDM_LANG_NNCRONTAB'                                         => ((40000 + 6000) + 76),
    'IDM_LANG_NSIS'                                              => ((40000 + 6000) + 29),
    'IDM_LANG_OBJC'                                              => ((40000 + 6000) + 14),
    'IDM_LANG_OPENUDLDIR'                                        => ((40000 + 6000) + 300),
    'IDM_LANG_OSCRIPT'                                           => ((40000 + 6000) + 77),
    'IDM_LANG_PASCAL'                                            => ((40000 + 6000) + 11),
    'IDM_LANG_PERL'                                              => ((40000 + 6000) + 13),
    'IDM_LANG_PHP'                                               => ((40000 + 6000) + 8),
    'IDM_LANG_POWERSHELL'                                        => ((40000 + 6000) + 53),
    'IDM_LANG_PROPS'                                             => ((40000 + 6000) + 35),
    'IDM_LANG_PS'                                                => ((40000 + 6000) + 36),
    'IDM_LANG_PUREBASIC'                                         => ((40000 + 6000) + 67),
    'IDM_LANG_PYTHON'                                            => ((40000 + 6000) + 12),
    'IDM_LANG_R'                                                 => ((40000 + 6000) + 54),
    'IDM_LANG_RC'                                                => ((40000 + 6000) + 17),
    'IDM_LANG_REBOL'                                             => ((40000 + 6000) + 78),
    'IDM_LANG_REGISTRY'                                          => ((40000 + 6000) + 79),
    'IDM_LANG_RUBY'                                              => ((40000 + 6000) + 37),
    'IDM_LANG_RUST'                                              => ((40000 + 6000) + 80),
    'IDM_LANG_SCHEME'                                            => ((40000 + 6000) + 32),
    'IDM_LANG_SMALLTALK'                                         => ((40000 + 6000) + 38),
    'IDM_LANG_SPICE'                                             => ((40000 + 6000) + 81),
    'IDM_LANG_SQL'                                               => ((40000 + 6000) + 20),
    'IDM_LANG_SREC'                                              => ((40000 + 6000) + 60),
    'IDM_LANG_SWIFT'                                             => ((40000 + 6000) + 63),
    'IDM_LANG_TCL'                                               => ((40000 + 6000) + 30),
    'IDM_LANG_TEHEX'                                             => ((40000 + 6000) + 62),
    'IDM_LANG_TEX'                                               => ((40000 + 6000) + 25),
    'IDM_LANG_TEXT'                                              => ((40000 + 6000) + 16),
    'IDM_LANG_TXT2TAGS'                                          => ((40000 + 6000) + 82),
    'IDM_LANG_TYPESCRIPT'                                        => ((40000 + 6000) + 84),	# v8.1.4
    'IDM_LANG_UDLCOLLECTION_PROJECT_SITE'                        => ((40000 + 6000) + 301),	# v8.1.9.3
    'IDM_LANG_USER'                                              => ((40000 + 6000) + 180),
    'IDM_LANG_USER_DLG'                                          => ((40000 + 6000) + 250),
    'IDM_LANG_USER_LIMIT'                                        => ((40000 + 6000) + 210),
    'IDM_LANG_VB'                                                => ((40000 + 6000) + 21),
    'IDM_LANG_VERILOG'                                           => ((40000 + 6000) + 43),
    'IDM_LANG_VHDL'                                              => ((40000 + 6000) + 39),
    'IDM_LANG_VISUALPROLOG'                                      => ((40000 + 6000) + 83),
    'IDM_LANG_XML'                                               => ((40000 + 6000) + 6),
    'IDM_LANG_YAML'                                              => ((40000 + 6000) + 49),
    'IDM_MACRO_PLAYBACKRECORDEDMACRO'                            => ((40000 + 2000) + 21),
    'IDM_MACRO_RUNMULTIMACRODLG'                                 => ((40000 + 2000) + 32),
    'IDM_MACRO_SAVECURRENTMACRO'                                 => ((40000 + 2000) + 25),
    'IDM_MACRO_STARTRECORDINGMACRO'                              => ((40000 + 2000) + 18),
    'IDM_MACRO_STOPRECORDINGMACRO'                               => ((40000 + 2000) + 19),
    'IDM_MISC'                                                   => (40000 + 3500),
    'IDM_ONLINEDOCUMENT'                                         => ((40000  + 7000)  + 3),     # new name (v7.8 and newer)
    'IDM_ONLINEHELP'                                             => ((40000  + 7000)  + 3),     # old name (before v7.8)
    #'IDM_ONLINESUPPORT'                                          => ((40000  + 7000)  + 11),	# removed v8.0; don't support even in previous versions because the service no longer exists
    'IDM_OPEN_ALL_RECENT_FILE'                                   => ((40000 + 2000) + 40),
    'IDM_PROJECTPAGE'                                            => ((40000  + 7000)  + 2),
    'IDM_SEARCH'                                                 => (40000 + 3000),
    'IDM_SEARCH_ALLSTYLESTOCLIP'                                 => ((40000 + 3000) + 60), # v7.9.1
    'IDM_SEARCH_CLEARALLMARKS'                                   => ((40000 + 3000) + 32),
    'IDM_SEARCH_CLEAR_BOOKMARKS'                                 => ((40000 + 3000) + 8),
    'IDM_SEARCH_COPYMARKEDLINES'                                 => ((40000 + 3000) + 19),
    'IDM_SEARCH_CUTMARKEDLINES'                                  => ((40000 + 3000) + 18),
    'IDM_SEARCH_DELETEMARKEDLINES'                               => ((40000 + 3000) + 21),
    'IDM_SEARCH_DELETEUNMARKEDLINES'                             => ((40000 + 3000) + 51),
    'IDM_SEARCH_FIND'                                            => ((40000 + 3000) + 1),
    'IDM_SEARCH_FINDCHARINRANGE'                                 => ((40000 + 3000) + 52),
    'IDM_SEARCH_FINDINCREMENT'                                   => ((40000 + 3000) + 11),
    'IDM_SEARCH_FINDINFILES'                                     => ((40000 + 3000) + 13),
    'IDM_SEARCH_FINDNEXT'                                        => ((40000 + 3000) + 2),
    'IDM_SEARCH_FINDPREV'                                        => ((40000 + 3000) + 10),
    'IDM_SEARCH_GONEXTMARKER1'                                   => ((40000 + 3000) + 39),
    'IDM_SEARCH_GONEXTMARKER2'                                   => ((40000 + 3000) + 40),
    'IDM_SEARCH_GONEXTMARKER3'                                   => ((40000 + 3000) + 41),
    'IDM_SEARCH_GONEXTMARKER4'                                   => ((40000 + 3000) + 42),
    'IDM_SEARCH_GONEXTMARKER5'                                   => ((40000 + 3000) + 43),
    'IDM_SEARCH_GONEXTMARKER_DEF'                                => ((40000 + 3000) + 44),
    'IDM_SEARCH_GOPREVMARKER1'                                   => ((40000 + 3000) + 33),
    'IDM_SEARCH_GOPREVMARKER2'                                   => ((40000 + 3000) + 34),
    'IDM_SEARCH_GOPREVMARKER3'                                   => ((40000 + 3000) + 35),
    'IDM_SEARCH_GOPREVMARKER4'                                   => ((40000 + 3000) + 36),
    'IDM_SEARCH_GOPREVMARKER5'                                   => ((40000 + 3000) + 37),
    'IDM_SEARCH_GOPREVMARKER_DEF'                                => ((40000 + 3000) + 38),
    'IDM_SEARCH_GOTOLINE'                                        => ((40000 + 3000) + 4),
    'IDM_SEARCH_GOTOMATCHINGBRACE'                               => ((40000 + 3000) + 9),
    'IDM_SEARCH_GOTONEXTFOUND'                                   => ((40000 + 3000) + 46),
    'IDM_SEARCH_GOTOPREVFOUND'                                   => ((40000 + 3000) + 47),
    'IDM_SEARCH_INVERSEMARKS'                                    => ((40000 + 3000) + 50),
    'IDM_SEARCH_MARK'                                            => ((40000 + 3000) + 54),
    'IDM_SEARCH_MARKALLEXT1'                                     => ((40000 + 3000) + 22),
    'IDM_SEARCH_MARKALLEXT2'                                     => ((40000 + 3000) + 24),
    'IDM_SEARCH_MARKALLEXT3'                                     => ((40000 + 3000) + 26),
    'IDM_SEARCH_MARKALLEXT4'                                     => ((40000 + 3000) + 28),
    'IDM_SEARCH_MARKALLEXT5'                                     => ((40000 + 3000) + 30),
    'IDM_SEARCH_MARKEDTOCLIP'                                    => ((40000 + 3000) + 61), # v7.9.1
    'IDM_SEARCH_MARKONEEXT1'                                     => ((40000 + 3000) + 62),	# v8.0
    'IDM_SEARCH_MARKONEEXT2'                                     => ((40000 + 3000) + 63),	# v8.0
    'IDM_SEARCH_MARKONEEXT3'                                     => ((40000 + 3000) + 64),	# v8.0
    'IDM_SEARCH_MARKONEEXT4'                                     => ((40000 + 3000) + 65),	# v8.0
    'IDM_SEARCH_MARKONEEXT5'                                     => ((40000 + 3000) + 66),	# v8.0
    'IDM_SEARCH_NEXT_BOOKMARK'                                   => ((40000 + 3000) + 6),
    'IDM_SEARCH_PASTEMARKEDLINES'                                => ((40000 + 3000) + 20),
    'IDM_SEARCH_PREV_BOOKMARK'                                   => ((40000 + 3000) + 7),
    'IDM_SEARCH_REPLACE'                                         => ((40000 + 3000) + 3),
    'IDM_SEARCH_SELECTMATCHINGBRACES'                            => ((40000 + 3000) + 53),
    'IDM_SEARCH_SETANDFINDNEXT'                                  => ((40000 + 3000) + 48),
    'IDM_SEARCH_SETANDFINDPREV'                                  => ((40000 + 3000) + 49),
    'IDM_SEARCH_STYLE1TOCLIP'                                    => ((40000 + 3000) + 55), # v7.9.1
    'IDM_SEARCH_STYLE2TOCLIP'                                    => ((40000 + 3000) + 56), # v7.9.1
    'IDM_SEARCH_STYLE3TOCLIP'                                    => ((40000 + 3000) + 57), # v7.9.1
    'IDM_SEARCH_STYLE4TOCLIP'                                    => ((40000 + 3000) + 58), # v7.9.1
    'IDM_SEARCH_STYLE5TOCLIP'                                    => ((40000 + 3000) + 59), # v7.9.1
    'IDM_SEARCH_TOGGLE_BOOKMARK'                                 => ((40000 + 3000) + 5),
    'IDM_SEARCH_UNMARKALLEXT1'                                   => ((40000 + 3000) + 23),
    'IDM_SEARCH_UNMARKALLEXT2'                                   => ((40000 + 3000) + 25),
    'IDM_SEARCH_UNMARKALLEXT3'                                   => ((40000 + 3000) + 27),
    'IDM_SEARCH_UNMARKALLEXT4'                                   => ((40000 + 3000) + 29),
    'IDM_SEARCH_UNMARKALLEXT5'                                   => ((40000 + 3000) + 31),
    'IDM_SEARCH_VOLATILE_FINDNEXT'                               => ((40000 + 3000) + 14),
    'IDM_SEARCH_VOLATILE_FINDPREV'                               => ((40000 + 3000) + 15),
    'IDM_SETTING'                                                => (40000 + 8000),
    'IDM_SETTING_EDITCONTEXTMENU'                                => ((40000 + 8000) + 18),
    'IDM_SETTING_IMPORTPLUGIN'                                   => ((40000 + 8000) + 5),
    'IDM_SETTING_IMPORTSTYLETHEMS'                               => ((40000 + 8000) + 6),
    'IDM_SETTING_OPENPLUGINSDIR'                                 => ((40000 + 8000) + 14),
    'IDM_SETTING_PLUGINADM'                                      => ((40000 + 8000) + 15),
    'IDM_SETTING_PREFERENCE'                                     => ((40000 + 8000) + 11),
    'IDM_SETTING_REMEMBER_LAST_SESSION'                          => ((40000 + 8000) + 10),
    'IDM_SETTING_SHORTCUT_MAPPER'                                => ((40000 + 8000) + 9),
    'IDM_SETTING_SHORTCUT_MAPPER_MACRO'                          => ((40000 + 8000) + 16),
    'IDM_SETTING_SHORTCUT_MAPPER_RUN'                            => ((40000 + 8000) + 17),
    'IDM_SETTING_TRAYICON'                                       => ((40000 + 8000) + 8),
    'IDM_SYSTRAYPOPUP'                                           => (40000 + 3100),
    'IDM_SYSTRAYPOPUP_ACTIVATE'                                  => ((40000 + 3100) + 1),
    'IDM_SYSTRAYPOPUP_CLOSE'                                     => ((40000 + 3100) + 5),
    'IDM_SYSTRAYPOPUP_NEWDOC'                                    => ((40000 + 3100) + 2),
    'IDM_SYSTRAYPOPUP_NEW_AND_PASTE'                             => ((40000 + 3100) + 3),
    'IDM_SYSTRAYPOPUP_OPENFILE'                                  => ((40000 + 3100) + 4),
    'IDM_TOOL'                                                   => (40000 + 8500),
    'IDM_TOOL_MD5_GENERATE'                                      => ((40000 + 8500) + 1),
    'IDM_TOOL_MD5_GENERATEFROMFILE'                              => ((40000 + 8500) + 2),
    'IDM_TOOL_MD5_GENERATEINTOCLIPBOARD'                         => ((40000 + 8500) + 3),
    'IDM_TOOL_SHA256_GENERATE'                                   => ((40000 + 8500) + 4),
    'IDM_TOOL_SHA256_GENERATEFROMFILE'                           => ((40000 + 8500) + 5),
    'IDM_TOOL_SHA256_GENERATEINTOCLIPBOARD'                      => ((40000 + 8500) + 6),
    'IDM_UPDATE_NPP'                                             => ((40000  + 7000)  + 6),
    'IDM_VIEW'                                                   => (40000 + 4000),
    'IDM_VIEW_ALL_CHARACTERS'                                    => ((40000 + 4000) + 19),
    'IDM_VIEW_ALWAYSONTOP'                                       => ((40000 + 4000) + 34),
    'IDM_VIEW_CLONE_TO_ANOTHER_VIEW'                             => 10002,
    'IDM_VIEW_CURLINE_HILITING'                                  => ((40000 + 4000) + 21),
    'IDM_VIEW_DISTRACTIONFREE'                                   => ((40000 + 4000) + 11),	# v8.0
    'IDM_VIEW_DOCCHANGEMARGIN'                                   => ((40000 + 4000) + 45),	# removed v8.4.6
    'IDM_VIEW_DOCLIST'                                           => ((40000 + 4000) + 70),	# v8.1.3
    'IDM_VIEW_DOC_MAP'                                           => ((40000 + 4000) + 80),
    'IDM_VIEW_DRAWTABBAR_CLOSEBOTTUN'                            => ((40000 + 4000) + 38),
    'IDM_VIEW_DRAWTABBAR_DBCLK2CLOSE'                            => ((40000 + 4000) + 39),
    'IDM_VIEW_DRAWTABBAR_INACIVETAB'                             => ((40000 + 4000) + 8),
    'IDM_VIEW_DRAWTABBAR_MULTILINE'                              => ((40000 + 4000) + 44),
    'IDM_VIEW_DRAWTABBAR_TOPBAR'                                 => ((40000 + 4000) + 7),
    'IDM_VIEW_DRAWTABBAR_VERTICAL'                               => ((40000 + 4000) + 43),
    'IDM_VIEW_EDGEBACKGROUND'                                    => ((40000 + 4000) + 28), # removed v7.9.x
    'IDM_VIEW_EDGELINE'                                          => ((40000 + 4000) + 27), # removed v7.9.x
    'IDM_VIEW_EDGENONE'                                          => ((40000 + 4000) + 37), # removed v7.9.x
    'IDM_VIEW_EOL'                                               => ((40000 + 4000) + 26),
    'IDM_VIEW_FILEBROWSER'                                       => ((40000 + 4000) + 85),
    'IDM_VIEW_FILESWITCHER_PANEL'                                => ((40000 + 4000) + 70),	# removed v8.1.3, but still supported in previous revs
    'IDM_VIEW_FOLD'                                              => ((40000 + 4000) + 50),
    'IDM_VIEW_FOLDALL'                                           => ((40000 + 4000) + 10), # v8.4.2
    'IDM_VIEW_FOLDERMAGIN'                                       => ((40000 + 4000) + 14),
    'IDM_VIEW_FOLDERMAGIN_ARROW'                                 => ((40000 + 4000) + 16),
    'IDM_VIEW_FOLDERMAGIN_BOX'                                   => ((40000 + 4000) + 18),
    'IDM_VIEW_FOLDERMAGIN_CIRCLE'                                => ((40000 + 4000) + 17),
    'IDM_VIEW_FOLDERMAGIN_SIMPLE'                                => ((40000 + 4000) + 15),
    'IDM_VIEW_FOLD_1'                                            => (((40000 + 4000) + 50) + 1),
    'IDM_VIEW_FOLD_2'                                            => (((40000 + 4000) + 50) + 2),
    'IDM_VIEW_FOLD_3'                                            => (((40000 + 4000) + 50) + 3),
    'IDM_VIEW_FOLD_4'                                            => (((40000 + 4000) + 50) + 4),
    'IDM_VIEW_FOLD_5'                                            => (((40000 + 4000) + 50) + 5),
    'IDM_VIEW_FOLD_6'                                            => (((40000 + 4000) + 50) + 6),
    'IDM_VIEW_FOLD_7'                                            => (((40000 + 4000) + 50) + 7),
    'IDM_VIEW_FOLD_8'                                            => (((40000 + 4000) + 50) + 8),
    'IDM_VIEW_FOLD_CURRENT'                                      => ((40000 + 4000) + 30),
    'IDM_VIEW_FULLSCREENTOGGLE'                                  => ((40000 + 4000) + 32),
    'IDM_VIEW_FUNC_LIST'                                         => ((40000 + 4000) + 84),
    'IDM_VIEW_GOTO_ANOTHER_VIEW'                                 => 10001,
    'IDM_VIEW_GOTO_NEW_INSTANCE'                                 => 10003,
    'IDM_VIEW_HIDELINES'                                         => ((40000 + 4000) + 42),
    'IDM_VIEW_INDENT_GUIDE'                                      => ((40000 + 4000) + 20),
    'IDM_VIEW_IN_CHROME'                                         => ((40000 + 4000) + 101),
    'IDM_VIEW_IN_EDGE'                                           => ((40000 + 4000) + 102),
    'IDM_VIEW_IN_FIREFOX'                                        => ((40000 + 4000) + 100),
    'IDM_VIEW_IN_IE'                                             => ((40000 + 4000) + 103),
    'IDM_VIEW_LINENUMBER'                                        => ((40000 + 4000) + 12),
    'IDM_VIEW_LOAD_IN_NEW_INSTANCE'                              => 10004,
    'IDM_VIEW_LOCKTABBAR'                                        => ((40000 + 4000) + 6),
    'IDM_VIEW_LWALIGN'                                           => ((40000 + 4000) + 47),
    'IDM_VIEW_LWDEF'                                             => ((40000 + 4000) + 46),
    'IDM_VIEW_LWINDENT'                                          => ((40000 + 4000) + 48),
    'IDM_VIEW_MONITORING'                                        => ((40000 + 4000) + 97),
    'IDM_VIEW_POSTIT'                                            => ((40000 + 4000) + 9),
    'IDM_VIEW_PROJECT_PANEL_1'                                   => ((40000 + 4000) + 81),
    'IDM_VIEW_PROJECT_PANEL_2'                                   => ((40000 + 4000) + 82),
    'IDM_VIEW_PROJECT_PANEL_3'                                   => ((40000 + 4000) + 83),
    'IDM_VIEW_REDUCETABBAR'                                      => ((40000 + 4000) + 5),
    'IDM_VIEW_REFRESHTABAR'                                      => ((40000 + 4000) + 40),
    'IDM_VIEW_SUMMARY'                                           => ((40000 + 4000) + 49),
    'IDM_VIEW_SWITCHTO_DOCLIST'                                  => ((40000 + 4000) + 109),	# v8.1.3
    'IDM_VIEW_SWITCHTO_FILEBROWSER'                              => ((40000 + 4000) + 107), # v7.9.1
    'IDM_VIEW_SWITCHTO_FUNC_LIST'                                => ((40000 + 4000) + 108), # v7.9.1
    'IDM_VIEW_SWITCHTO_OTHER_VIEW'                               => ((40000 + 4000) + 72),
    'IDM_VIEW_SWITCHTO_PROJECT_PANEL_1'                          => ((40000 + 4000) + 104), # v7.9.1
    'IDM_VIEW_SWITCHTO_PROJECT_PANEL_2'                          => ((40000 + 4000) + 105), # v7.9.1
    'IDM_VIEW_SWITCHTO_PROJECT_PANEL_3'                          => ((40000 + 4000) + 106), # v7.9.1
    'IDM_VIEW_SYMBOLMARGIN'                                      => ((40000 + 4000) + 13),
    'IDM_VIEW_SYNSCROLLH'                                        => ((40000 + 4000) + 36),
    'IDM_VIEW_SYNSCROLLV'                                        => ((40000 + 4000) + 35),
    'IDM_VIEW_TAB1'                                              => ((40000 + 4000) + 86),
    'IDM_VIEW_TAB2'                                              => ((40000 + 4000) + 87),
    'IDM_VIEW_TAB3'                                              => ((40000 + 4000) + 88),
    'IDM_VIEW_TAB4'                                              => ((40000 + 4000) + 89),
    'IDM_VIEW_TAB5'                                              => ((40000 + 4000) + 90),
    'IDM_VIEW_TAB6'                                              => ((40000 + 4000) + 91),
    'IDM_VIEW_TAB7'                                              => ((40000 + 4000) + 92),
    'IDM_VIEW_TAB8'                                              => ((40000 + 4000) + 93),
    'IDM_VIEW_TAB9'                                              => ((40000 + 4000) + 94),
    'IDM_VIEW_TAB_COLOUR_1'                                      => ((40000 + 4000) + 111),		# v8.4.6
    'IDM_VIEW_TAB_COLOUR_2'                                      => ((40000 + 4000) + 112),		# v8.4.6
    'IDM_VIEW_TAB_COLOUR_3'                                      => ((40000 + 4000) + 113),		# v8.4.6
    'IDM_VIEW_TAB_COLOUR_4'                                      => ((40000 + 4000) + 114),		# v8.4.6
    'IDM_VIEW_TAB_COLOUR_5'                                      => ((40000 + 4000) + 115),		# v8.4.6
    'IDM_VIEW_TAB_COLOUR_NONE'                                   => ((40000 + 4000) + 110),		# v8.4.6
    'IDM_VIEW_TAB_MOVEBACKWARD'                                  => ((40000 + 4000) + 99),
    'IDM_VIEW_TAB_MOVEFORWARD'                                   => ((40000 + 4000) + 98),
    'IDM_VIEW_TAB_NEXT'                                          => ((40000 + 4000) + 95),
    'IDM_VIEW_TAB_PREV'                                          => ((40000 + 4000) + 96),
    'IDM_VIEW_TAB_SPACE'                                         => ((40000 + 4000) + 25),
    'IDM_VIEW_TOGGLE_FOLDALL'                                    => ((40000 + 4000) + 10), # removed v8.4.2
    'IDM_VIEW_TOGGLE_UNFOLDALL'                                  => ((40000 + 4000) + 29), # removed v8.4.2
    'IDM_VIEW_TOOLBAR_ENLARGE'                                   => ((40000 + 4000) + 3),
    'IDM_VIEW_TOOLBAR_ENLARGE_SET2'                              => ((40000 + 4000) + 28),	# v8.0
    'IDM_VIEW_TOOLBAR_REDUCE'                                    => ((40000 + 4000) + 2),
    'IDM_VIEW_TOOLBAR_REDUCE_SET2'                               => ((40000 + 4000) + 27),	# v8.0
    'IDM_VIEW_TOOLBAR_STANDARD'                                  => ((40000 + 4000) + 4),
    'IDM_VIEW_UNFOLD'                                            => ((40000 + 4000) + 60),
    'IDM_VIEW_UNFOLDALL'                                         => ((40000 + 4000) + 29),  # v8.4.2
    'IDM_VIEW_UNFOLD_1'                                          => (((40000 + 4000) + 60) + 1),
    'IDM_VIEW_UNFOLD_2'                                          => (((40000 + 4000) + 60) + 2),
    'IDM_VIEW_UNFOLD_3'                                          => (((40000 + 4000) + 60) + 3),
    'IDM_VIEW_UNFOLD_4'                                          => (((40000 + 4000) + 60) + 4),
    'IDM_VIEW_UNFOLD_5'                                          => (((40000 + 4000) + 60) + 5),
    'IDM_VIEW_UNFOLD_6'                                          => (((40000 + 4000) + 60) + 6),
    'IDM_VIEW_UNFOLD_7'                                          => (((40000 + 4000) + 60) + 7),
    'IDM_VIEW_UNFOLD_8'                                          => (((40000 + 4000) + 60) + 8),
    'IDM_VIEW_UNFOLD_CURRENT'                                    => ((40000 + 4000) + 31),
    'IDM_VIEW_WRAP'                                              => ((40000 + 4000) + 22),
    'IDM_VIEW_WRAP_SYMBOL'                                       => ((40000 + 4000) + 41),
    'IDM_VIEW_ZOOMIN'                                            => ((40000 + 4000) + 23),
    'IDM_VIEW_ZOOMOUT'                                           => ((40000 + 4000) + 24),
    'IDM_VIEW_ZOOMRESTORE'                                       => ((40000 + 4000) + 33),
    'IDM_WIKIFAQ'                                                => ((40000  + 7000)  + 7),
    'IDM_WINDOW_COPY_NAME'                                       => ((11000 + 59) + 1),     # v8.3.2
    'IDM_WINDOW_COPY_PATH'                                       => ((11000 + 59) + 2),     # v8.3.2
    'IDM_WINDOW_MRU_FIRST'                                       => (11000 + 20),     # v8.3.2
    'IDM_WINDOW_MRU_LIMIT'                                       => (11000 + 59),     # v8.3.2, changed v8.4.3
    'IDM_WINDOW_SORT_FN_ASC'                                     => (11000 + 2),     # v8.3.2
    'IDM_WINDOW_SORT_FN_DSC'                                     => (11000 + 3),     # v8.3.2
    'IDM_WINDOW_SORT_FP_ASC'                                     => (11000 + 4),     # v8.3.2
    'IDM_WINDOW_SORT_FP_DSC'                                     => (11000 + 5),     # v8.3.2
    'IDM_WINDOW_SORT_FS_ASC'                                     => (11000 + 8),     # v8.3.2
    'IDM_WINDOW_SORT_FS_DSC'                                     => (11000 + 9),     # v8.3.2
    'IDM_WINDOW_SORT_FT_ASC'                                     => (11000 + 6),     # v8.3.2
    'IDM_WINDOW_SORT_FT_DSC'                                     => (11000 + 7),     # v8.3.2
    'IDM_WINDOW_WINDOWS'                                         => (11000 + 1),     # v8.3.2
    'IDR_DROPLIST_MENU'                                          => 14000,      # v8.4.3
    'IDR_WINDOWS_MENU'                                           => 11000,     # v8.3.2
);

=head2 OTHER USEFUL ENUMERATIONS

=over

=item DEPRECATED %ENCODINGKEY

Deprecated: The %ENCODINGKEY hash variable no longer exists. Use L</%BUFFERENCODING> for the correct values.

This deprecated hash incorrectly assumed there was a simple numerical offset between the values of
L<notepad-E<gt>getEncoding|Win32::Mechanize::NotepadPlusPlus::Notepad/getEncoding> and the
C<$NPPIDM{IDM_FORMAT_...}> entries in L</%NPPIDM>.

=item %BUFFERENCODING

The numerical values from this hash can be passed to
L<notepad-E<gt>setEncoding|Win32::Mechanize::NotepadPlusPlus::Notepad/setEncoding>
to change the encoding of the buffer; the numerical values returned from
L<notepad-E<gt>getEncoding|Win32::Mechanize::NotepadPlusPlus::Notepad/getEncoding>
can be passed as keys for this hash to convert the encoding number back to a string.

Keys or values ending in _BOM indicate the Unicode Byte Order Mark will be included
as the first bytes in the saved file.

    Key                     | Value         | Description
    ------------------------+---------------+-----------------
    ANSI                    | 0             | 256 codepoints
    UTF8_BOM                | 1             | UTF-8 Encoding, using Byte Order Mark (BOM) at beginning of file
    UCS2_BE_BOM             | 2             | UCS-2 Big Endian, using Byte Order Mark (BOM) at beginning of file
    UCS2_LE_BOM             | 3             | UCS-2 Little Endian, using Byte Order Mark (BOM) at beginning of file
    UTF16_BE_BOM            | 2             | UTF-16 Big Endian, using Byte Order Mark (BOM) at beginning of file
    UTF16_LE_BOM            | 3             | UTF-16 Little Endian, using Byte Order Mark (BOM) at beginning of file
    UTF8                    | 4             | UTF-8 Encoding, _not_ using Byte Order Mark (BOM) at beginning of file
    ------------------------+---------------+-----------------
    COOKIE                  | 4             | Alias for UTF8         (name used in PythonScript BUFFERENCODING enum)
    uni8Bit                 | 0             | Alias for ANSI         (from enum UniMode in source code)
    uniUTF8                 | 1             | Alias for UTF8_BOM     (from enum UniMode in source code)
    uni16BE                 | 2             | Alias for UCS2_BE_BOM/UTF16_BE_BOM  (from enum UniMode in source code)
    uni16LE                 | 3             | Alias for UCS2_LE_BOM/UTF16_LE_BOM  (from enum UniMode in source code)
    uniCookie               | 4             | Alias for UTF8_NO_BOM  (from enum UniMode in source code)
    ------------------------+---------------+-----------------
    0                       | ANSI          | (string)
    1                       | UTF8_BOM      | (string)
    2                       | UCS2_BE_BOM   | (string)
    3                       | UCS2_LE_BOM   | (string)
    4                       | UTF8_NO_BOM   | (string)

=cut

our %BUFFERENCODING = (
    # name => number
    ANSI            => 0,
    UTF8_BOM        => 1,
    UCS2_BE_BOM     => 2,
    UCS2_LE_BOM     => 3,
    UTF16_BE_BOM    => 2,
    UTF16_LE_BOM    => 3,
    UTF8            => 4,
    COOKIE          => 4,   # pythonscript compatible

    # number => text
    0               => 'ANSI',
    1               => 'UTF8_BOM',
    2               => 'UTF16_BE_BOM',
    3               => 'UTF16_LE_BOM',
    4               => 'UTF8',

    # enum UniMode compatible strings
    uni8Bit         => 0,
    uniUTF8         => 1,
    uni16BE         => 2,
    uni16LE         => 3,
    uniCookie       => 4,
);

=item %MACROSTATUS

These are the values returned by
L<notepad-E<gt>getCurrentMacroStatus|Win32::Mechanize::NotepadPlusPlus::Notepad/getCurrentMacroStatus>
This hash provides a two way map: so its keys include both the string names (with the integers as values)
and the integers (with the string names as values).

    Name                    | Integer       | Description
    ------------------------+---------------+-----------------
    Idle                    | 0             | No macro activity (normal/default state)
    RecordInProgress        | 1             | Macro recording has started
    RecordingStopped        | 2             | Macro recording has completed
    PlayingBack             | 3             | Macro is being played back (rare)

The C<PlayingBack> state is not common, because your script has to have called
C<getCurrentMacroStatus> during the brief time that the macro playback is in
progress.  (Unless you have a complicated search/replace and a large document,
it's not likely to see this state.)

=cut

our %MACROSTATUS = (
    # name => number
    Idle                => 0,
    RecordInProgress    => 1,
    RecordingStopped    => 2,
    PlayingBack         => 3,
    # number => name
    0                   => 'Idle',
    1                   => 'RecordInProgress',
    2                   => 'RecordingStopped',
    3                   => 'PlayingBack',
);

=back

=head1 INSTALLATION

Installed as part of L<Win32::Mechanize::NotepadPlusPlus>

=head1 AUTHOR

Peter C. Jones C<E<lt>petercj AT cpan DOT orgE<gt>>

Please report any bugs or feature requests emailing C<E<lt>bug-Win32-Mechanize-NotepadPlusPlus AT rt.cpan.orgE<gt>>
or thru the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Win32-Mechanize-NotepadPlusPlus>,
or thru the repository's interface at L<https://github.com/pryrt/Win32-Mechanize-NotepadPlusPlus/issues>.

=head1 COPYRIGHT

Copyright (C) 2019,2020 Peter C. Jones

=head1 LICENSE

This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See L<http://dev.perl.org/licenses/> for more information.

=cut

1;


Powered by Groonga
Maintained by Kenichi Ishigaki <ishigaki@cpan.org>. If you find anything, submit it on GitHub.