diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..940794e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,288 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+**/Properties/launchSettings.json
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Typescript v1 declaration files
+typings/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..606befa
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,342 @@
+
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ {description}
+ Copyright (C) {year} {fullname}
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ {signature of Ty Coon}, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..04b1cd3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,21 @@
+# SurroundSelection
+Notepad++ plugin to automatically surround the selection in quotes/brackets/parenthesis/etc.
+
+**Note:** This is still in early development. It has not been tested with non-US keyboard layouts.
+
+## Usage
+Select some text and type one of the following characters:
+- `'`
+- `"`
+- `(`
+- `{`
+- `[`
+
+## Installation
+No public release is currently available.
+
+## Development
+The code has been developed using MSVC 2013. Building the code will generate the DLL which can be used by Notepad++. For convenience, MSVC copies the DLL into the Notepad++ plugin directory.
+
+## License
+This code is released under the [GNU General Public License version 2](http://www.gnu.org/licenses/gpl-2.0.txt).
diff --git a/SurroundSelection.sln b/SurroundSelection.sln
new file mode 100644
index 0000000..eaf606c
--- /dev/null
+++ b/SurroundSelection.sln
@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.40629.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SurroundSelection", "src\SurroundSelection.vcxproj", "{1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Debug|Win32.Build.0 = Debug|Win32
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Debug|x64.ActiveCfg = Debug|x64
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Debug|x64.Build.0 = Debug|x64
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Release|Win32.ActiveCfg = Release|Win32
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Release|Win32.Build.0 = Release|Win32
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Release|x64.ActiveCfg = Release|x64
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/src/Dialogs/AboutDialog.cpp b/src/Dialogs/AboutDialog.cpp
new file mode 100644
index 0000000..872f2f1
--- /dev/null
+++ b/src/Dialogs/AboutDialog.cpp
@@ -0,0 +1,73 @@
+// This file is part of SurroundSelection.
+//
+// Copyright (C)2017 Justin Dailey
+//
+// SurroundSelection is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#include
+#include "PluginInterface.h"
+#include "resource.h"
+#include "Hyperlinks.h"
+#include "Version.h"
+
+#ifdef _WIN64
+#define BITNESS TEXT("(64 bit)")
+#else
+#define BITNESS TEXT("(32 bit)")
+#endif
+
+INT_PTR CALLBACK abtDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
+ switch(uMsg) {
+ case WM_INITDIALOG:
+ ConvertStaticToHyperlink(hwndDlg, IDC_GITHUB);
+ ConvertStaticToHyperlink(hwndDlg, IDC_README);
+ Edit_SetText(GetDlgItem(hwndDlg, IDC_VERSION), TEXT("SurroundSelection v") VERSION_TEXT TEXT(" ") VERSION_STAGE TEXT(" ") BITNESS);
+ return true;
+ case WM_COMMAND:
+ switch(LOWORD(wParam)) {
+ case IDOK:
+ DestroyWindow(hwndDlg);
+ return true;
+ case IDC_GITHUB:
+ ShellExecute(hwndDlg, TEXT("open"), TEXT("https://github.com/dail8859/SurroundSelection/"), NULL, NULL, SW_SHOWNORMAL);
+ return true;
+ }
+ case WM_DESTROY:
+ DestroyWindow(hwndDlg);
+ return true;
+ }
+ return false;
+}
+
+void ShowAboutDialog(HINSTANCE hInstance, const wchar_t *lpTemplateName, HWND hWndParent) {
+ HWND hSelf = CreateDialogParam((HINSTANCE)hInstance, lpTemplateName, hWndParent, abtDlgProc, NULL);
+
+ // Go to center
+ RECT rc;
+ GetClientRect(hWndParent, &rc);
+ POINT center;
+ int w = rc.right - rc.left;
+ int h = rc.bottom - rc.top;
+ center.x = rc.left + w / 2;
+ center.y = rc.top + h / 2;
+ ClientToScreen(hWndParent, ¢er);
+
+ RECT dlgRect;
+ GetClientRect(hSelf, &dlgRect);
+ int x = center.x - (dlgRect.right - dlgRect.left) / 2;
+ int y = center.y - (dlgRect.bottom - dlgRect.top) / 2;
+
+ SetWindowPos(hSelf, HWND_TOP, x, y, (dlgRect.right - dlgRect.left), (dlgRect.bottom - dlgRect.top), SWP_SHOWWINDOW);
+}
diff --git a/src/Dialogs/AboutDialog.h b/src/Dialogs/AboutDialog.h
new file mode 100644
index 0000000..e389ae7
--- /dev/null
+++ b/src/Dialogs/AboutDialog.h
@@ -0,0 +1,21 @@
+// This file is part of Scintillua++.
+//
+// Copyright (C)2017 Justin Dailey
+//
+// Scintillua++ is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#pragma once
+
+void ShowAboutDialog(HINSTANCE hInstance, const wchar_t *lpTemplateName, HWND hWndParent);
diff --git a/src/Dialogs/Hyperlinks.cpp b/src/Dialogs/Hyperlinks.cpp
new file mode 100644
index 0000000..7b8ebe0
--- /dev/null
+++ b/src/Dialogs/Hyperlinks.cpp
@@ -0,0 +1,166 @@
+// Hyperlinks.cpp
+//
+// Copyright 2002 Neal Stublen
+// All rights reserved.
+//
+// http://www.awesoftware.com
+//
+
+#include
+
+#include "Hyperlinks.h"
+
+
+#define PROP_ORIGINAL_FONT TEXT("_Hyperlink_Original_Font_")
+#define PROP_ORIGINAL_PROC TEXT("_Hyperlink_Original_Proc_")
+#define PROP_STATIC_HYPERLINK TEXT("_Hyperlink_From_Static_")
+#define PROP_UNDERLINE_FONT TEXT("_Hyperlink_Underline_Font_")
+
+
+LRESULT CALLBACK _HyperlinkParentProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ WNDPROC pfnOrigProc = (WNDPROC) GetProp(hwnd, PROP_ORIGINAL_PROC);
+
+ switch (message)
+ {
+ case WM_CTLCOLORSTATIC:
+ {
+ HDC hdc = (HDC) wParam;
+ HWND hwndCtl = (HWND) lParam;
+
+ BOOL fHyperlink = (NULL != GetProp(hwndCtl, PROP_STATIC_HYPERLINK));
+ if (fHyperlink)
+ {
+ LRESULT lr = CallWindowProc(pfnOrigProc, hwnd, message, wParam, lParam);
+ SetTextColor(hdc, RGB(0, 0, 192));
+ return lr;
+ }
+
+ break;
+ }
+ case WM_DESTROY:
+ {
+ SetWindowLongPtr(hwnd, GWLP_WNDPROC, reinterpret_cast(pfnOrigProc));
+ RemoveProp(hwnd, PROP_ORIGINAL_PROC);
+ break;
+ }
+ }
+ return CallWindowProc(pfnOrigProc, hwnd, message, wParam, lParam);
+}
+
+LRESULT CALLBACK _HyperlinkProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ WNDPROC pfnOrigProc = (WNDPROC) GetProp(hwnd, PROP_ORIGINAL_PROC);
+
+ switch (message)
+ {
+ case WM_DESTROY:
+ {
+ SetWindowLongPtr(hwnd, GWLP_WNDPROC, reinterpret_cast(pfnOrigProc));
+ RemoveProp(hwnd, PROP_ORIGINAL_PROC);
+
+ HFONT hOrigFont = (HFONT) GetProp(hwnd, PROP_ORIGINAL_FONT);
+ SendMessage(hwnd, WM_SETFONT, (WPARAM) hOrigFont, 0);
+ RemoveProp(hwnd, PROP_ORIGINAL_FONT);
+
+ HFONT hFont = (HFONT) GetProp(hwnd, PROP_UNDERLINE_FONT);
+ DeleteObject(hFont);
+ RemoveProp(hwnd, PROP_UNDERLINE_FONT);
+
+ RemoveProp(hwnd, PROP_STATIC_HYPERLINK);
+
+ break;
+ }
+ case WM_MOUSEMOVE:
+ {
+ if (GetCapture() != hwnd)
+ {
+ HFONT hFont = (HFONT) GetProp(hwnd, PROP_UNDERLINE_FONT);
+ SendMessage(hwnd, WM_SETFONT, (WPARAM) hFont, FALSE);
+ InvalidateRect(hwnd, NULL, FALSE);
+ SetCapture(hwnd);
+ }
+ else
+ {
+ RECT rect;
+ GetWindowRect(hwnd, &rect);
+
+ POINT pt = { LOWORD(lParam), HIWORD(lParam) };
+ ClientToScreen(hwnd, &pt);
+
+ if (!PtInRect(&rect, pt))
+ {
+ HFONT hFont = (HFONT) GetProp(hwnd, PROP_ORIGINAL_FONT);
+ SendMessage(hwnd, WM_SETFONT, (WPARAM) hFont, FALSE);
+ InvalidateRect(hwnd, NULL, FALSE);
+ ReleaseCapture();
+ }
+ }
+ break;
+ }
+ case WM_SETCURSOR:
+ {
+ // Since IDC_HAND is not available on all operating systems,
+ // we will load the arrow cursor if IDC_HAND is not present.
+ HCURSOR hCursor = LoadCursor(NULL, IDC_HAND);
+ if (NULL == hCursor)
+ {
+ hCursor = LoadCursor(NULL, IDC_ARROW);
+ }
+ SetCursor(hCursor);
+ return TRUE;
+ }
+ }
+
+ return CallWindowProc(pfnOrigProc, hwnd, message, wParam, lParam);
+}
+
+BOOL ConvertStaticToHyperlink(HWND hwndCtl)
+{
+ // Subclass the parent so we can color the controls as we desire.
+
+ HWND hwndParent = GetParent(hwndCtl);
+ if (NULL != hwndParent)
+ {
+ WNDPROC pfnOrigProc = (WNDPROC) GetWindowLongPtr(hwndParent, GWLP_WNDPROC);
+ if (pfnOrigProc != _HyperlinkParentProc)
+ {
+ SetProp(hwndParent, PROP_ORIGINAL_PROC, (HANDLE) pfnOrigProc);
+ SetWindowLongPtr(hwndParent, GWLP_WNDPROC, reinterpret_cast(_HyperlinkParentProc));
+ }
+ }
+
+ // Make sure the control will send notifications.
+
+ LONG_PTR dwStyle = GetWindowLongPtr(hwndCtl, GWL_STYLE);
+ SetWindowLongPtr(hwndCtl, GWL_STYLE, dwStyle | SS_NOTIFY);
+
+ // Subclass the existing control.
+
+ WNDPROC pfnOrigProc = (WNDPROC) GetWindowLongPtr(hwndCtl, GWLP_WNDPROC);
+ SetProp(hwndCtl, PROP_ORIGINAL_PROC, (HANDLE) pfnOrigProc);
+ SetWindowLongPtr(hwndCtl, GWLP_WNDPROC, reinterpret_cast(_HyperlinkProc));
+
+ // Create an updated font by adding an underline.
+
+ HFONT hOrigFont = (HFONT) SendMessage(hwndCtl, WM_GETFONT, 0, 0);
+ SetProp(hwndCtl, PROP_ORIGINAL_FONT, (HANDLE) hOrigFont);
+
+ LOGFONT lf;
+ GetObject(hOrigFont, sizeof(lf), &lf);
+ lf.lfUnderline = TRUE;
+
+ HFONT hFont = CreateFontIndirect(&lf);
+ SetProp(hwndCtl, PROP_UNDERLINE_FONT, (HANDLE) hFont);
+
+ // Set a flag on the control so we know what color it should be.
+
+ SetProp(hwndCtl, PROP_STATIC_HYPERLINK, (HANDLE) 1);
+
+ return TRUE;
+}
+
+BOOL ConvertStaticToHyperlink(HWND hwndParent, UINT uiCtlId)
+{
+ return ConvertStaticToHyperlink(GetDlgItem(hwndParent, uiCtlId));
+}
diff --git a/src/Dialogs/Hyperlinks.h b/src/Dialogs/Hyperlinks.h
new file mode 100644
index 0000000..6dda1f4
--- /dev/null
+++ b/src/Dialogs/Hyperlinks.h
@@ -0,0 +1,15 @@
+// Hyperlinks.h
+//
+// Copyright 2002 Neal Stublen
+// All rights reserved.
+//
+// http://www.awesoftware.com
+//
+
+#ifndef HYPERLINKS_H
+#define HYPERLINKS_H
+
+BOOL ConvertStaticToHyperlink(HWND hwndCtl);
+BOOL ConvertStaticToHyperlink(HWND hwndParent, UINT uiCtlId);
+
+#endif
\ No newline at end of file
diff --git a/src/Dialogs/Version.rc b/src/Dialogs/Version.rc
new file mode 100644
index 0000000..bb0e4eb
--- /dev/null
+++ b/src/Dialogs/Version.rc
@@ -0,0 +1,37 @@
+#include
+#include "Version.h"
+
+
+//
+// Version Information resources
+//
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+1 VERSIONINFO
+ FILEVERSION VERSION_NUM
+ PRODUCTVERSION VERSION_NUM
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS VS_FF_SPECIALBUILD
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE VFT2_UNKNOWN
+{
+ BLOCK "StringFileInfo"
+ {
+ BLOCK "040904b0"
+ {
+ VALUE "Comments", "Notepad++ plugin"
+ VALUE "CompanyName", "Justin Dailey "
+ VALUE "FileDescription", "Notepad++ plugin"
+ VALUE "FileVersion", VERSION_TEXT
+ VALUE "InternalName", "SurroundSelection"
+ VALUE "OriginalFilename", "SurroundSelection.dll"
+ VALUE "ProductName", "SurroundSelection"
+ VALUE "ProductVersion", VERSION_TEXT
+ VALUE "SpecialBuild", "UNICODE"
+ }
+ }
+ BLOCK "VarFileInfo"
+ {
+ VALUE "Translation", 0x0409, 0x01B5
+ }
+}
diff --git a/src/Dialogs/resource.h b/src/Dialogs/resource.h
new file mode 100644
index 0000000..5d8a2db
--- /dev/null
+++ b/src/Dialogs/resource.h
@@ -0,0 +1,8 @@
+#ifndef IDC_STATIC
+#define IDC_STATIC (-1)
+#endif
+
+#define IDD_ABOUTDLG 101
+#define IDC_GITHUB 1000
+#define IDC_VERSION 1001
+#define IDC_README 1002
diff --git a/src/Dialogs/resource.rc b/src/Dialogs/resource.rc
new file mode 100644
index 0000000..e7fb827
--- /dev/null
+++ b/src/Dialogs/resource.rc
@@ -0,0 +1,22 @@
+
+#include
+#include
+#include
+#include "resource.h"
+
+
+//
+// Dialog resources
+//
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+IDD_ABOUTDLG DIALOGEX 0, 0, 223, 130
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_BORDER | WS_SYSMENU
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+{
+ PUSHBUTTON "Close", IDOK, 86, 109, 50, 14
+ GROUPBOX "", IDC_VERSION, 10, 9, 201, 93, BS_CENTER
+ LTEXT "Author: Justin Dailey ", IDC_STATIC, 30, 26, 180, 8
+ LTEXT "The SurroundSelection code is hosted on", IDC_STATIC, 30, 43, 180, 8
+ LTEXT "GitHub", IDC_GITHUB, 152, 43, 27, 8, SS_LEFT | SS_NOTIFY, WS_EX_LEFT
+ LTEXT "This code is licensed under GPLv2", IDC_STATIC, 30, 80, 180, 8
+}
diff --git a/src/Main.cpp b/src/Main.cpp
new file mode 100644
index 0000000..d07cc36
--- /dev/null
+++ b/src/Main.cpp
@@ -0,0 +1,197 @@
+// This file is part of SurroundSelection.
+//
+// Copyright (C)2017 Justin Dailey
+//
+// SurroundSelection is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#include "PluginInterface.h"
+#include "ScintillaGateway.h"
+#include "resource.h"
+#include "AboutDialog.h"
+
+#include
+#include
+
+static HANDLE _hModule;
+static NppData nppData;
+static HHOOK hook = NULL;
+static bool hasFocus = true;
+static ScintillaGateway editor;
+
+static void showAbout();
+
+FuncItem funcItem[] = {
+ { TEXT("About..."), showAbout, 0, false, nullptr }
+};
+
+static void showAbout() {
+ ShowAboutDialog((HINSTANCE)_hModule, MAKEINTRESOURCE(IDD_ABOUTDLG), nppData._nppHandle);
+}
+
+static HWND GetCurrentScintilla() {
+ int which = 0;
+ SendMessage(nppData._nppHandle, NPPM_GETCURRENTSCINTILLA, SCI_UNUSED, (LPARAM)&which);
+ return (which == 0) ? nppData._scintillaMainHandle : nppData._scintillaSecondHandle;
+}
+
+static void SurroundSelectionsWith(char ch1, char ch2) {
+ std::vector> selections;
+
+ int num = editor.GetSelections();
+ for (int i = 0; i < num; ++i) {
+ int start = editor.GetSelectionNStart(i);
+ int end = editor.GetSelectionNEnd(i);
+
+ if (start != end /* && editor.LineFromPosition(start) == editor.LineFromPosition(end) */)
+ selections.push_back(std::make_pair(start, end));
+ }
+
+ // Sort so they are replaced top to bottom
+ std::sort(selections.begin(), selections.end());
+
+ int offset = 0;
+ int i = 0;
+ editor.BeginUndoAction();
+ for (const auto &selection : selections) {
+ editor.SetTargetRange(selection.first + offset, selection.second + offset);
+
+ std::string target(editor.GetTargetText(NULL), '\0');
+ editor.GetTargetText(&target[0]);
+
+ // Add in the characters
+ target.insert(target.begin(), 1, ch1);
+ target.insert(target.end(), 1, ch2);
+
+ editor.ReplaceTarget(-1, target.c_str());
+
+ editor.SetSelectionNStart(i, selection.first + offset + 1);
+ editor.SetSelectionNEnd(i, selection.second + offset + 2 - 1);
+
+ offset += 2;
+ ++i;
+ }
+
+ editor.EndUndoAction();
+}
+
+LRESULT CALLBACK KeyboardProc(int ncode, WPARAM wparam, LPARAM lparam) {
+ if (ncode == HC_ACTION) {
+ if ((HIWORD(lparam) & KF_UP) == 0) {
+ if (hasFocus && !(GetKeyState(VK_CONTROL) & KF_UP) && !(GetKeyState(VK_MENU) & KF_UP)) {
+ char ch1 = 0, ch2 = 0;
+
+ if (wparam == VK_OEM_7) {
+ if (GetKeyState(VK_SHIFT) & KF_UP) {
+ ch1 = ch2 = '"';
+ }
+ else {
+ ch1 = ch2 = '\'';
+ }
+ }
+ else if (wparam == VK_OEM_4) {
+ if (GetKeyState(VK_SHIFT) & KF_UP) {
+ ch1 = '{';
+ ch2 = '}';
+ }
+ else {
+ ch1 = '[';
+ ch2 = ']';
+ }
+ }
+ else if (wparam == 0x39) {
+ if (GetKeyState(VK_SHIFT) & KF_UP) {
+ ch1 = '(';
+ ch2 = ')';
+ }
+ }
+ //else if (wparam == VK_OEM_COMMA) {
+ // if (GetKeyState(VK_SHIFT) & KF_UP) {
+ // ch1 = '<';
+ // ch2 = '>';
+ // }
+ //}
+
+ if (ch1 != 0 && editor.GetSelectionEmpty() == 0) {
+ SurroundSelectionsWith(ch1, ch2);
+ return TRUE; // This key has been "handled" and won't propogate
+ }
+ }
+ }
+ }
+ return CallNextHookEx(hook, ncode, wparam, lparam); //pass control to next hook in the hook chain.
+}
+
+
+BOOL APIENTRY DllMain(HANDLE hModule, DWORD reasonForCall, LPVOID lpReserved) {
+ switch (reasonForCall) {
+ case DLL_PROCESS_ATTACH:
+ _hModule = hModule;
+ break;
+ case DLL_PROCESS_DETACH:
+ break;
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ break;
+ }
+ return TRUE;
+}
+
+extern "C" __declspec(dllexport) void setInfo(NppData notepadPlusData) {
+ nppData = notepadPlusData;
+
+ // Set this as early as possible so its in a valid state
+ editor.SetScintillaInstance(nppData._scintillaMainHandle);
+}
+
+extern "C" __declspec(dllexport) const wchar_t *getName() {
+ return TEXT("SurroundSelection");
+}
+
+extern "C" __declspec(dllexport) FuncItem *getFuncsArray(int *nbF) {
+ *nbF = sizeof(funcItem) / sizeof(funcItem[0]);;
+ return funcItem;
+}
+
+extern "C" __declspec(dllexport) void beNotified(SCNotification *notifyCode) {
+ switch (notifyCode->nmhdr.code) {
+ case SCN_FOCUSIN:
+ hasFocus = true;
+ break;
+ case SCN_FOCUSOUT:
+ hasFocus = false;
+ break;
+ case NPPN_READY:
+ hook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, (HINSTANCE)_hModule, ::GetCurrentThreadId());
+ break;
+ case NPPN_SHUTDOWN:
+ if (hook != NULL) UnhookWindowsHookEx(hook);
+ break;
+ case NPPN_BUFFERACTIVATED:
+ editor.SetScintillaInstance(GetCurrentScintilla());
+ break;
+ }
+ return;
+}
+
+extern "C" __declspec(dllexport) LRESULT messageProc(UINT Message, WPARAM wParam, LPARAM lParam) {
+ return TRUE;
+}
+
+#ifdef UNICODE
+extern "C" __declspec(dllexport) BOOL isUnicode() {
+ return TRUE;
+}
+#endif //UNICODE
diff --git a/src/Npp/Notepad_plus_msgs.h b/src/Npp/Notepad_plus_msgs.h
new file mode 100644
index 0000000..46d2288
--- /dev/null
+++ b/src/Npp/Notepad_plus_msgs.h
@@ -0,0 +1,599 @@
+// This file is part of Notepad++ project
+// Copyright (C)2003 Don HO
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// Note that the GPL places important restrictions on "derived works", yet
+// it does not provide a detailed definition of that term. To avoid
+// misunderstandings, we consider an application to constitute a
+// "derivative work" for the purpose of this license if it does any of the
+// following:
+// 1. Integrates source code from Notepad++.
+// 2. Integrates/includes/aggregates Notepad++ into a proprietary executable
+// installer, such as those produced by InstallShield.
+// 3. Links to a library or executes a program that does any of the above.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+#ifndef NOTEPAD_PLUS_MSGS_H
+#define NOTEPAD_PLUS_MSGS_H
+
+#include
+#include
+
+enum LangType {L_TEXT, L_PHP , L_C, L_CPP, L_CS, L_OBJC, L_JAVA, L_RC,\
+ L_HTML, L_XML, L_MAKEFILE, L_PASCAL, L_BATCH, L_INI, L_ASCII, L_USER,\
+ L_ASP, L_SQL, L_VB, L_JS, L_CSS, L_PERL, L_PYTHON, L_LUA, \
+ L_TEX, L_FORTRAN, L_BASH, L_FLASH, L_NSIS, L_TCL, L_LISP, L_SCHEME,\
+ L_ASM, L_DIFF, L_PROPS, L_PS, L_RUBY, L_SMALLTALK, L_VHDL, L_KIX, L_AU3,\
+ L_CAML, L_ADA, L_VERILOG, L_MATLAB, L_HASKELL, L_INNO, L_SEARCHRESULT,\
+ L_CMAKE, L_YAML, L_COBOL, L_GUI4CLI, L_D, L_POWERSHELL, L_R, L_JSP,\
+ L_COFFEESCRIPT, L_JSON, L_JAVASCRIPT, L_FORTRAN_77,\
+ // Don't use L_JS, use L_JAVASCRIPT instead
+ // The end of enumated language type, so it should be always at the end
+ L_EXTERNAL};
+
+enum winVer{ WV_UNKNOWN, WV_WIN32S, WV_95, WV_98, WV_ME, WV_NT, WV_W2K, WV_XP, WV_S2003, WV_XPX64, WV_VISTA, WV_WIN7, WV_WIN8, WV_WIN81, WV_WIN10};
+
+
+
+//Here you can find how to use these messages : http://docs.notepad-plus-plus.org/index.php/Messages_And_Notifications
+#define NPPMSG (WM_USER + 1000)
+
+ #define NPPM_GETCURRENTSCINTILLA (NPPMSG + 4)
+ #define NPPM_GETCURRENTLANGTYPE (NPPMSG + 5)
+ #define NPPM_SETCURRENTLANGTYPE (NPPMSG + 6)
+
+ #define NPPM_GETNBOPENFILES (NPPMSG + 7)
+ #define ALL_OPEN_FILES 0
+ #define PRIMARY_VIEW 1
+ #define SECOND_VIEW 2
+
+ #define NPPM_GETOPENFILENAMES (NPPMSG + 8)
+
+
+ #define NPPM_MODELESSDIALOG (NPPMSG + 12)
+ #define MODELESSDIALOGADD 0
+ #define MODELESSDIALOGREMOVE 1
+
+ #define NPPM_GETNBSESSIONFILES (NPPMSG + 13)
+ #define NPPM_GETSESSIONFILES (NPPMSG + 14)
+ #define NPPM_SAVESESSION (NPPMSG + 15)
+ #define NPPM_SAVECURRENTSESSION (NPPMSG + 16)
+
+ struct sessionInfo {
+ TCHAR* sessionFilePathName;
+ int nbFile;
+ TCHAR** files;
+ };
+
+ #define NPPM_GETOPENFILENAMESPRIMARY (NPPMSG + 17)
+ #define NPPM_GETOPENFILENAMESSECOND (NPPMSG + 18)
+
+ #define NPPM_CREATESCINTILLAHANDLE (NPPMSG + 20)
+ #define NPPM_DESTROYSCINTILLAHANDLE (NPPMSG + 21)
+ #define NPPM_GETNBUSERLANG (NPPMSG + 22)
+
+ #define NPPM_GETCURRENTDOCINDEX (NPPMSG + 23)
+ #define MAIN_VIEW 0
+ #define SUB_VIEW 1
+
+ #define NPPM_SETSTATUSBAR (NPPMSG + 24)
+ #define STATUSBAR_DOC_TYPE 0
+ #define STATUSBAR_DOC_SIZE 1
+ #define STATUSBAR_CUR_POS 2
+ #define STATUSBAR_EOF_FORMAT 3
+ #define STATUSBAR_UNICODE_TYPE 4
+ #define STATUSBAR_TYPING_MODE 5
+
+ #define NPPM_GETMENUHANDLE (NPPMSG + 25)
+ #define NPPPLUGINMENU 0
+ #define NPPMAINMENU 1
+ // INT NPPM_GETMENUHANDLE(INT menuChoice, 0)
+ // Return: menu handle (HMENU) of choice (plugin menu handle or Notepad++ main menu handle)
+
+ #define NPPM_ENCODESCI (NPPMSG + 26)
+ //ascii file to unicode
+ //int NPPM_ENCODESCI(MAIN_VIEW/SUB_VIEW, 0)
+ //return new unicodeMode
+
+ #define NPPM_DECODESCI (NPPMSG + 27)
+ //unicode file to ascii
+ //int NPPM_DECODESCI(MAIN_VIEW/SUB_VIEW, 0)
+ //return old unicodeMode
+
+ #define NPPM_ACTIVATEDOC (NPPMSG + 28)
+ //void NPPM_ACTIVATEDOC(int view, int index2Activate)
+
+ #define NPPM_LAUNCHFINDINFILESDLG (NPPMSG + 29)
+ //void NPPM_LAUNCHFINDINFILESDLG(TCHAR * dir2Search, TCHAR * filtre)
+
+ #define NPPM_DMMSHOW (NPPMSG + 30)
+ //void NPPM_DMMSHOW(0, tTbData->hClient)
+
+ #define NPPM_DMMHIDE (NPPMSG + 31)
+ //void NPPM_DMMHIDE(0, tTbData->hClient)
+
+ #define NPPM_DMMUPDATEDISPINFO (NPPMSG + 32)
+ //void NPPM_DMMUPDATEDISPINFO(0, tTbData->hClient)
+
+ #define NPPM_DMMREGASDCKDLG (NPPMSG + 33)
+ //void NPPM_DMMREGASDCKDLG(0, &tTbData)
+
+ #define NPPM_LOADSESSION (NPPMSG + 34)
+ //void NPPM_LOADSESSION(0, const TCHAR* file name)
+
+ #define NPPM_DMMVIEWOTHERTAB (NPPMSG + 35)
+ //void WM_DMM_VIEWOTHERTAB(0, tTbData->pszName)
+
+ #define NPPM_RELOADFILE (NPPMSG + 36)
+ //BOOL NPPM_RELOADFILE(BOOL withAlert, TCHAR *filePathName2Reload)
+
+ #define NPPM_SWITCHTOFILE (NPPMSG + 37)
+ //BOOL NPPM_SWITCHTOFILE(0, TCHAR *filePathName2switch)
+
+ #define NPPM_SAVECURRENTFILE (NPPMSG + 38)
+ //BOOL NPPM_SAVECURRENTFILE(0, 0)
+
+ #define NPPM_SAVEALLFILES (NPPMSG + 39)
+ //BOOL NPPM_SAVEALLFILES(0, 0)
+
+ #define NPPM_SETMENUITEMCHECK (NPPMSG + 40)
+ //void WM_PIMENU_CHECK(UINT funcItem[X]._cmdID, TRUE/FALSE)
+
+ #define NPPM_ADDTOOLBARICON (NPPMSG + 41)
+ //void WM_ADDTOOLBARICON(UINT funcItem[X]._cmdID, toolbarIcons icon)
+ struct toolbarIcons {
+ HBITMAP hToolbarBmp;
+ HICON hToolbarIcon;
+ };
+
+ #define NPPM_GETWINDOWSVERSION (NPPMSG + 42)
+ //winVer NPPM_GETWINDOWSVERSION(0, 0)
+
+ #define NPPM_DMMGETPLUGINHWNDBYNAME (NPPMSG + 43)
+ //HWND WM_DMM_GETPLUGINHWNDBYNAME(const TCHAR *windowName, const TCHAR *moduleName)
+ // if moduleName is NULL, then return value is NULL
+ // if windowName is NULL, then the first found window handle which matches with the moduleName will be returned
+
+ #define NPPM_MAKECURRENTBUFFERDIRTY (NPPMSG + 44)
+ //BOOL NPPM_MAKECURRENTBUFFERDIRTY(0, 0)
+
+ #define NPPM_GETENABLETHEMETEXTUREFUNC (NPPMSG + 45)
+ //BOOL NPPM_GETENABLETHEMETEXTUREFUNC(0, 0)
+
+ #define NPPM_GETPLUGINSCONFIGDIR (NPPMSG + 46)
+ //void NPPM_GETPLUGINSCONFIGDIR(int strLen, TCHAR *str)
+
+ #define NPPM_MSGTOPLUGIN (NPPMSG + 47)
+ //BOOL NPPM_MSGTOPLUGIN(TCHAR *destModuleName, CommunicationInfo *info)
+ // return value is TRUE when the message arrive to the destination plugins.
+ // if destModule or info is NULL, then return value is FALSE
+ struct CommunicationInfo {
+ long internalMsg;
+ const TCHAR * srcModuleName;
+ void * info; // defined by plugin
+ };
+
+ #define NPPM_MENUCOMMAND (NPPMSG + 48)
+ //void NPPM_MENUCOMMAND(0, int cmdID)
+ // uncomment //#include "menuCmdID.h"
+ // in the beginning of this file then use the command symbols defined in "menuCmdID.h" file
+ // to access all the Notepad++ menu command items
+
+ #define NPPM_TRIGGERTABBARCONTEXTMENU (NPPMSG + 49)
+ //void NPPM_TRIGGERTABBARCONTEXTMENU(int view, int index2Activate)
+
+ #define NPPM_GETNPPVERSION (NPPMSG + 50)
+ // int NPPM_GETNPPVERSION(0, 0)
+ // return version
+ // ex : v4.6
+ // HIWORD(version) == 4
+ // LOWORD(version) == 6
+
+ #define NPPM_HIDETABBAR (NPPMSG + 51)
+ // BOOL NPPM_HIDETABBAR(0, BOOL hideOrNot)
+ // if hideOrNot is set as TRUE then tab bar will be hidden
+ // otherwise it'll be shown.
+ // return value : the old status value
+
+ #define NPPM_ISTABBARHIDDEN (NPPMSG + 52)
+ // BOOL NPPM_ISTABBARHIDDEN(0, 0)
+ // returned value : TRUE if tab bar is hidden, otherwise FALSE
+
+ #define NPPM_GETPOSFROMBUFFERID (NPPMSG + 57)
+ // INT NPPM_GETPOSFROMBUFFERID(INT bufferID, INT priorityView)
+ // Return VIEW|INDEX from a buffer ID. -1 if the bufferID non existing
+ // if priorityView set to SUB_VIEW, then SUB_VIEW will be search firstly
+ //
+ // VIEW takes 2 highest bits and INDEX (0 based) takes the rest (30 bits)
+ // Here's the values for the view :
+ // MAIN_VIEW 0
+ // SUB_VIEW 1
+
+ #define NPPM_GETFULLPATHFROMBUFFERID (NPPMSG + 58)
+ // INT NPPM_GETFULLPATHFROMBUFFERID(INT bufferID, TCHAR *fullFilePath)
+ // Get full path file name from a bufferID.
+ // Return -1 if the bufferID non existing, otherwise the number of TCHAR copied/to copy
+ // User should call it with fullFilePath be NULL to get the number of TCHAR (not including the nul character),
+ // allocate fullFilePath with the return values + 1, then call it again to get full path file name
+
+ #define NPPM_GETBUFFERIDFROMPOS (NPPMSG + 59)
+ // LRESULT NPPM_GETBUFFERIDFROMPOS(INT index, INT iView)
+ // wParam: Position of document
+ // lParam: View to use, 0 = Main, 1 = Secondary
+ // Returns 0 if invalid
+
+ #define NPPM_GETCURRENTBUFFERID (NPPMSG + 60)
+ // LRESULT NPPM_GETCURRENTBUFFERID(0, 0)
+ // Returns active Buffer
+
+ #define NPPM_RELOADBUFFERID (NPPMSG + 61)
+ // VOID NPPM_RELOADBUFFERID(0, 0)
+ // Reloads Buffer
+ // wParam: Buffer to reload
+ // lParam: 0 if no alert, else alert
+
+
+ #define NPPM_GETBUFFERLANGTYPE (NPPMSG + 64)
+ // INT NPPM_GETBUFFERLANGTYPE(INT bufferID, 0)
+ // wParam: BufferID to get LangType from
+ // lParam: 0
+ // Returns as int, see LangType. -1 on error
+
+ #define NPPM_SETBUFFERLANGTYPE (NPPMSG + 65)
+ // BOOL NPPM_SETBUFFERLANGTYPE(INT bufferID, INT langType)
+ // wParam: BufferID to set LangType of
+ // lParam: LangType
+ // Returns TRUE on success, FALSE otherwise
+ // use int, see LangType for possible values
+ // L_USER and L_EXTERNAL are not supported
+
+ #define NPPM_GETBUFFERENCODING (NPPMSG + 66)
+ // INT NPPM_GETBUFFERENCODING(INT bufferID, 0)
+ // wParam: BufferID to get encoding from
+ // lParam: 0
+ // returns as int, see UniMode. -1 on error
+
+ #define NPPM_SETBUFFERENCODING (NPPMSG + 67)
+ // BOOL NPPM_SETBUFFERENCODING(INT bufferID, INT encoding)
+ // wParam: BufferID to set encoding of
+ // lParam: encoding
+ // Returns TRUE on success, FALSE otherwise
+ // use int, see UniMode
+ // Can only be done on new, unedited files
+
+ #define NPPM_GETBUFFERFORMAT (NPPMSG + 68)
+ // INT NPPM_GETBUFFERFORMAT(INT bufferID, 0)
+ // wParam: BufferID to get format from
+ // lParam: 0
+ // returns as int, see formatType. -1 on error
+
+ #define NPPM_SETBUFFERFORMAT (NPPMSG + 69)
+ // BOOL NPPM_SETBUFFERFORMAT(INT bufferID, INT format)
+ // wParam: BufferID to set format of
+ // lParam: format
+ // Returns TRUE on success, FALSE otherwise
+ // use int, see formatType
+
+/*
+ #define NPPM_ADDREBAR (NPPMSG + 57)
+ // BOOL NPPM_ADDREBAR(0, REBARBANDINFO *)
+ // Returns assigned ID in wID value of struct pointer
+ #define NPPM_UPDATEREBAR (NPPMSG + 58)
+ // BOOL NPPM_ADDREBAR(INT ID, REBARBANDINFO *)
+ //Use ID assigned with NPPM_ADDREBAR
+ #define NPPM_REMOVEREBAR (NPPMSG + 59)
+ // BOOL NPPM_ADDREBAR(INT ID, 0)
+ //Use ID assigned with NPPM_ADDREBAR
+*/
+
+ #define NPPM_HIDETOOLBAR (NPPMSG + 70)
+ // BOOL NPPM_HIDETOOLBAR(0, BOOL hideOrNot)
+ // if hideOrNot is set as TRUE then tool bar will be hidden
+ // otherwise it'll be shown.
+ // return value : the old status value
+
+ #define NPPM_ISTOOLBARHIDDEN (NPPMSG + 71)
+ // BOOL NPPM_ISTOOLBARHIDDEN(0, 0)
+ // returned value : TRUE if tool bar is hidden, otherwise FALSE
+
+ #define NPPM_HIDEMENU (NPPMSG + 72)
+ // BOOL NPPM_HIDEMENU(0, BOOL hideOrNot)
+ // if hideOrNot is set as TRUE then menu will be hidden
+ // otherwise it'll be shown.
+ // return value : the old status value
+
+ #define NPPM_ISMENUHIDDEN (NPPMSG + 73)
+ // BOOL NPPM_ISMENUHIDDEN(0, 0)
+ // returned value : TRUE if menu is hidden, otherwise FALSE
+
+ #define NPPM_HIDESTATUSBAR (NPPMSG + 74)
+ // BOOL NPPM_HIDESTATUSBAR(0, BOOL hideOrNot)
+ // if hideOrNot is set as TRUE then STATUSBAR will be hidden
+ // otherwise it'll be shown.
+ // return value : the old status value
+
+ #define NPPM_ISSTATUSBARHIDDEN (NPPMSG + 75)
+ // BOOL NPPM_ISSTATUSBARHIDDEN(0, 0)
+ // returned value : TRUE if STATUSBAR is hidden, otherwise FALSE
+
+ #define NPPM_GETSHORTCUTBYCMDID (NPPMSG + 76)
+ // BOOL NPPM_GETSHORTCUTBYCMDID(int cmdID, ShortcutKey *sk)
+ // get your plugin command current mapped shortcut into sk via cmdID
+ // You may need it after getting NPPN_READY notification
+ // returned value : TRUE if this function call is successful and shorcut is enable, otherwise FALSE
+
+ #define NPPM_DOOPEN (NPPMSG + 77)
+ // BOOL NPPM_DOOPEN(0, const TCHAR *fullPathName2Open)
+ // fullPathName2Open indicates the full file path name to be opened.
+ // The return value is TRUE (1) if the operation is successful, otherwise FALSE (0).
+
+ #define NPPM_SAVECURRENTFILEAS (NPPMSG + 78)
+ // BOOL NPPM_SAVECURRENTFILEAS (BOOL asCopy, const TCHAR* filename)
+
+ #define NPPM_GETCURRENTNATIVELANGENCODING (NPPMSG + 79)
+ // INT NPPM_GETCURRENTNATIVELANGENCODING(0, 0)
+ // returned value : the current native language enconding
+
+ #define NPPM_ALLOCATESUPPORTED (NPPMSG + 80)
+ // returns TRUE if NPPM_ALLOCATECMDID is supported
+ // Use to identify if subclassing is necessary
+
+ #define NPPM_ALLOCATECMDID (NPPMSG + 81)
+ // BOOL NPPM_ALLOCATECMDID(int numberRequested, int* startNumber)
+ // sets startNumber to the initial command ID if successful
+ // Returns: TRUE if successful, FALSE otherwise. startNumber will also be set to 0 if unsuccessful
+
+ #define NPPM_ALLOCATEMARKER (NPPMSG + 82)
+ // BOOL NPPM_ALLOCATEMARKER(int numberRequested, int* startNumber)
+ // sets startNumber to the initial command ID if successful
+ // Allocates a marker number to a plugin
+ // Returns: TRUE if successful, FALSE otherwise. startNumber will also be set to 0 if unsuccessful
+
+ #define NPPM_GETLANGUAGENAME (NPPMSG + 83)
+ // INT NPPM_GETLANGUAGENAME(int langType, TCHAR *langName)
+ // Get programing language name from the given language type (LangType)
+ // Return value is the number of copied character / number of character to copy (\0 is not included)
+ // You should call this function 2 times - the first time you pass langName as NULL to get the number of characters to copy.
+ // You allocate a buffer of the length of (the number of characters + 1) then call NPPM_GETLANGUAGENAME function the 2nd time
+ // by passing allocated buffer as argument langName
+
+ #define NPPM_GETLANGUAGEDESC (NPPMSG + 84)
+ // INT NPPM_GETLANGUAGEDESC(int langType, TCHAR *langDesc)
+ // Get programing language short description from the given language type (LangType)
+ // Return value is the number of copied character / number of character to copy (\0 is not included)
+ // You should call this function 2 times - the first time you pass langDesc as NULL to get the number of characters to copy.
+ // You allocate a buffer of the length of (the number of characters + 1) then call NPPM_GETLANGUAGEDESC function the 2nd time
+ // by passing allocated buffer as argument langDesc
+
+ #define NPPM_SHOWDOCSWITCHER (NPPMSG + 85)
+ // VOID NPPM_ISDOCSWITCHERSHOWN(0, BOOL toShowOrNot)
+ // Send this message to show or hide doc switcher.
+ // if toShowOrNot is TRUE then show doc switcher, otherwise hide it.
+
+ #define NPPM_ISDOCSWITCHERSHOWN (NPPMSG + 86)
+ // BOOL NPPM_ISDOCSWITCHERSHOWN(0, 0)
+ // Check to see if doc switcher is shown.
+
+ #define NPPM_GETAPPDATAPLUGINSALLOWED (NPPMSG + 87)
+ // BOOL NPPM_GETAPPDATAPLUGINSALLOWED(0, 0)
+ // Check to see if loading plugins from "%APPDATA%\Notepad++\plugins" is allowed.
+
+ #define NPPM_GETCURRENTVIEW (NPPMSG + 88)
+ // INT NPPM_GETCURRENTVIEW(0, 0)
+ // Return: current edit view of Notepad++. Only 2 possible values: 0 = Main, 1 = Secondary
+
+ #define NPPM_DOCSWITCHERDISABLECOLUMN (NPPMSG + 89)
+ // VOID NPPM_DOCSWITCHERDISABLECOLUMN(0, BOOL disableOrNot)
+ // Disable or enable extension column of doc switcher
+
+ #define NPPM_GETEDITORDEFAULTFOREGROUNDCOLOR (NPPMSG + 90)
+ // INT NPPM_GETEDITORDEFAULTFOREGROUNDCOLOR(0, 0)
+ // Return: current editor default foreground color. You should convert the returned value in COLORREF
+
+ #define NPPM_GETEDITORDEFAULTBACKGROUNDCOLOR (NPPMSG + 91)
+ // INT NPPM_GETEDITORDEFAULTBACKGROUNDCOLOR(0, 0)
+ // Return: current editor default background color. You should convert the returned value in COLORREF
+
+ #define NPPM_SETSMOOTHFONT (NPPMSG + 92)
+ // VOID NPPM_SETSMOOTHFONT(0, BOOL setSmoothFontOrNot)
+
+ #define NPPM_SETEDITORBORDEREDGE (NPPMSG + 93)
+ // VOID NPPM_SETEDITORBORDEREDGE(0, BOOL withEditorBorderEdgeOrNot)
+
+ #define NPPM_SAVEFILE (NPPMSG + 94)
+ // VOID NPPM_SAVEFILE(0, const TCHAR *fileNameToSave)
+
+ #define NPPM_DISABLEAUTOUPDATE (NPPMSG + 95) // 2119 in decimal
+ // VOID NPPM_DISABLEAUTOUPDATE(0, 0)
+
+#define RUNCOMMAND_USER (WM_USER + 3000)
+ #define NPPM_GETFULLCURRENTPATH (RUNCOMMAND_USER + FULL_CURRENT_PATH)
+ #define NPPM_GETCURRENTDIRECTORY (RUNCOMMAND_USER + CURRENT_DIRECTORY)
+ #define NPPM_GETFILENAME (RUNCOMMAND_USER + FILE_NAME)
+ #define NPPM_GETNAMEPART (RUNCOMMAND_USER + NAME_PART)
+ #define NPPM_GETEXTPART (RUNCOMMAND_USER + EXT_PART)
+ #define NPPM_GETCURRENTWORD (RUNCOMMAND_USER + CURRENT_WORD)
+ #define NPPM_GETNPPDIRECTORY (RUNCOMMAND_USER + NPP_DIRECTORY)
+ // BOOL NPPM_GETXXXXXXXXXXXXXXXX(size_t strLen, TCHAR *str)
+ // where str is the allocated TCHAR array,
+ // strLen is the allocated array size
+ // The return value is TRUE when get generic_string operation success
+ // Otherwise (allocated array size is too small) FALSE
+
+ #define NPPM_GETCURRENTLINE (RUNCOMMAND_USER + CURRENT_LINE)
+ // INT NPPM_GETCURRENTLINE(0, 0)
+ // return the caret current position line
+ #define NPPM_GETCURRENTCOLUMN (RUNCOMMAND_USER + CURRENT_COLUMN)
+ // INT NPPM_GETCURRENTCOLUMN(0, 0)
+ // return the caret current position column
+
+ #define VAR_NOT_RECOGNIZED 0
+ #define FULL_CURRENT_PATH 1
+ #define CURRENT_DIRECTORY 2
+ #define FILE_NAME 3
+ #define NAME_PART 4
+ #define EXT_PART 5
+ #define CURRENT_WORD 6
+ #define NPP_DIRECTORY 7
+ #define CURRENT_LINE 8
+ #define CURRENT_COLUMN 9
+
+
+// Notification code
+#define NPPN_FIRST 1000
+ #define NPPN_READY (NPPN_FIRST + 1) // To notify plugins that all the procedures of launchment of notepad++ are done.
+ //scnNotification->nmhdr.code = NPPN_READY;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = 0;
+
+ #define NPPN_TBMODIFICATION (NPPN_FIRST + 2) // To notify plugins that toolbar icons can be registered
+ //scnNotification->nmhdr.code = NPPN_TB_MODIFICATION;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = 0;
+
+ #define NPPN_FILEBEFORECLOSE (NPPN_FIRST + 3) // To notify plugins that the current file is about to be closed
+ //scnNotification->nmhdr.code = NPPN_FILEBEFORECLOSE;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILEOPENED (NPPN_FIRST + 4) // To notify plugins that the current file is just opened
+ //scnNotification->nmhdr.code = NPPN_FILEOPENED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILECLOSED (NPPN_FIRST + 5) // To notify plugins that the current file is just closed
+ //scnNotification->nmhdr.code = NPPN_FILECLOSED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILEBEFOREOPEN (NPPN_FIRST + 6) // To notify plugins that the current file is about to be opened
+ //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILEBEFORESAVE (NPPN_FIRST + 7) // To notify plugins that the current file is about to be saved
+ //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILESAVED (NPPN_FIRST + 8) // To notify plugins that the current file is just saved
+ //scnNotification->nmhdr.code = NPPN_FILESAVED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_SHUTDOWN (NPPN_FIRST + 9) // To notify plugins that Notepad++ is about to be shutdowned.
+ //scnNotification->nmhdr.code = NPPN_SHUTDOWN;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = 0;
+
+ #define NPPN_BUFFERACTIVATED (NPPN_FIRST + 10) // To notify plugins that a buffer was activated (put to foreground).
+ //scnNotification->nmhdr.code = NPPN_BUFFERACTIVATED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = activatedBufferID;
+
+ #define NPPN_LANGCHANGED (NPPN_FIRST + 11) // To notify plugins that the language in the current doc is just changed.
+ //scnNotification->nmhdr.code = NPPN_LANGCHANGED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = currentBufferID;
+
+ #define NPPN_WORDSTYLESUPDATED (NPPN_FIRST + 12) // To notify plugins that user initiated a WordStyleDlg change.
+ //scnNotification->nmhdr.code = NPPN_WORDSTYLESUPDATED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = currentBufferID;
+
+ #define NPPN_SHORTCUTREMAPPED (NPPN_FIRST + 13) // To notify plugins that plugin command shortcut is remapped.
+ //scnNotification->nmhdr.code = NPPN_SHORTCUTSREMAPPED;
+ //scnNotification->nmhdr.hwndFrom = ShortcutKeyStructurePointer;
+ //scnNotification->nmhdr.idFrom = cmdID;
+ //where ShortcutKeyStructurePointer is pointer of struct ShortcutKey:
+ //struct ShortcutKey {
+ // bool _isCtrl;
+ // bool _isAlt;
+ // bool _isShift;
+ // UCHAR _key;
+ //};
+
+ #define NPPN_FILEBEFORELOAD (NPPN_FIRST + 14) // To notify plugins that the current file is about to be loaded
+ //scnNotification->nmhdr.code = NPPN_FILEBEFOREOPEN;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = NULL;
+
+ #define NPPN_FILELOADFAILED (NPPN_FIRST + 15) // To notify plugins that file open operation failed
+ //scnNotification->nmhdr.code = NPPN_FILEOPENFAILED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_READONLYCHANGED (NPPN_FIRST + 16) // To notify plugins that current document change the readonly status,
+ //scnNotification->nmhdr.code = NPPN_READONLYCHANGED;
+ //scnNotification->nmhdr.hwndFrom = bufferID;
+ //scnNotification->nmhdr.idFrom = docStatus;
+ // where bufferID is BufferID
+ // docStatus can be combined by DOCSTAUS_READONLY and DOCSTAUS_BUFFERDIRTY
+
+ #define DOCSTAUS_READONLY 1
+ #define DOCSTAUS_BUFFERDIRTY 2
+
+ #define NPPN_DOCORDERCHANGED (NPPN_FIRST + 17) // To notify plugins that document order is changed
+ //scnNotification->nmhdr.code = NPPN_DOCORDERCHANGED;
+ //scnNotification->nmhdr.hwndFrom = newIndex;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_SNAPSHOTDIRTYFILELOADED (NPPN_FIRST + 18) // To notify plugins that a snapshot dirty file is loaded on startup
+ //scnNotification->nmhdr.code = NPPN_SNAPSHOTDIRTYFILELOADED;
+ //scnNotification->nmhdr.hwndFrom = NULL;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_BEFORESHUTDOWN (NPPN_FIRST + 19) // To notify plugins that Npp shutdown has been triggered, files have not been closed yet
+ //scnNotification->nmhdr.code = NPPN_BEFORESHUTDOWN;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = 0;
+
+ #define NPPN_CANCELSHUTDOWN (NPPN_FIRST + 20) // To notify plugins that Npp shutdown has been cancelled
+ //scnNotification->nmhdr.code = NPPN_CANCELSHUTDOWN;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = 0;
+
+ #define NPPN_FILEBEFORERENAME (NPPN_FIRST + 21) // To notify plugins that file is to be renamed
+ //scnNotification->nmhdr.code = NPPN_FILEBEFORERENAME;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILERENAMECANCEL (NPPN_FIRST + 22) // To notify plugins that file rename has been cancelled
+ //scnNotification->nmhdr.code = NPPN_FILERENAMECANCEL;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILERENAMED (NPPN_FIRST + 23) // To notify plugins that file has been renamed
+ //scnNotification->nmhdr.code = NPPN_FILERENAMED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILEBEFOREDELETE (NPPN_FIRST + 24) // To notify plugins that file is to be deleted
+ //scnNotification->nmhdr.code = NPPN_FILEBEFOREDELETE;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILEDELETEFAILED (NPPN_FIRST + 25) // To notify plugins that file deletion has failed
+ //scnNotification->nmhdr.code = NPPN_FILEDELETEFAILED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+ #define NPPN_FILEDELETED (NPPN_FIRST + 26) // To notify plugins that file has been deleted
+ //scnNotification->nmhdr.code = NPPN_FILEDELETED;
+ //scnNotification->nmhdr.hwndFrom = hwndNpp;
+ //scnNotification->nmhdr.idFrom = BufferID;
+
+#endif //NOTEPAD_PLUS_MSGS_H
diff --git a/src/Npp/PluginInterface.h b/src/Npp/PluginInterface.h
new file mode 100644
index 0000000..a636c0e
--- /dev/null
+++ b/src/Npp/PluginInterface.h
@@ -0,0 +1,87 @@
+// This file is part of Notepad++ project
+// Copyright (C)2003 Don HO
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// Note that the GPL places important restrictions on "derived works", yet
+// it does not provide a detailed definition of that term. To avoid
+// misunderstandings, we consider an application to constitute a
+// "derivative work" for the purpose of this license if it does any of the
+// following:
+// 1. Integrates source code from Notepad++.
+// 2. Integrates/includes/aggregates Notepad++ into a proprietary executable
+// installer, such as those produced by InstallShield.
+// 3. Links to a library or executes a program that does any of the above.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+#ifndef PLUGININTERFACE_H
+#define PLUGININTERFACE_H
+
+#ifndef SCINTILLA_H
+#include "Scintilla.h"
+#endif //SCINTILLA_H
+
+#ifndef NOTEPAD_PLUS_MSGS_H
+#include "Notepad_plus_msgs.h"
+#endif //NOTEPAD_PLUS_MSGS_H
+
+const int nbChar = 64;
+
+typedef const TCHAR * (__cdecl * PFUNCGETNAME)();
+
+struct NppData
+{
+ HWND _nppHandle;
+ HWND _scintillaMainHandle;
+ HWND _scintillaSecondHandle;
+};
+
+typedef void (__cdecl * PFUNCSETINFO)(NppData);
+typedef void (__cdecl * PFUNCPLUGINCMD)();
+typedef void (__cdecl * PBENOTIFIED)(SCNotification *);
+typedef LRESULT (__cdecl * PMESSAGEPROC)(UINT Message, WPARAM wParam, LPARAM lParam);
+
+
+struct ShortcutKey
+{
+ bool _isCtrl;
+ bool _isAlt;
+ bool _isShift;
+ UCHAR _key;
+};
+
+struct FuncItem
+{
+ TCHAR _itemName[nbChar];
+ PFUNCPLUGINCMD _pFunc;
+ int _cmdID;
+ bool _init2Check;
+ ShortcutKey *_pShKey;
+};
+
+typedef FuncItem * (__cdecl * PFUNCGETFUNCSARRAY)(int *);
+
+// You should implement (or define an empty function body) those functions which are called by Notepad++ plugin manager
+extern "C" __declspec(dllexport) void setInfo(NppData);
+extern "C" __declspec(dllexport) const TCHAR * getName();
+extern "C" __declspec(dllexport) FuncItem * getFuncsArray(int *);
+extern "C" __declspec(dllexport) void beNotified(SCNotification *);
+extern "C" __declspec(dllexport) LRESULT messageProc(UINT Message, WPARAM wParam, LPARAM lParam);
+
+// This API return always true now, since Notepad++ isn't compiled in ANSI mode anymore
+extern "C" __declspec(dllexport) BOOL isUnicode();
+
+
+#endif //PLUGININTERFACE_H
diff --git a/src/Npp/Scintilla.h b/src/Npp/Scintilla.h
new file mode 100644
index 0000000..079e3a4
--- /dev/null
+++ b/src/Npp/Scintilla.h
@@ -0,0 +1,1177 @@
+/* Scintilla source code edit control */
+/** @file Scintilla.h
+ ** Interface to the edit control.
+ **/
+/* Copyright 1998-2003 by Neil Hodgson
+ * The License.txt file describes the conditions under which this software may be distributed. */
+
+/* Most of this file is automatically generated from the Scintilla.iface interface definition
+ * file which contains any comments about the definitions. HFacer.py does the generation. */
+
+#ifndef SCINTILLA_H
+#define SCINTILLA_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(_WIN32)
+/* Return false on failure: */
+int Scintilla_RegisterClasses(void *hInstance);
+int Scintilla_ReleaseResources(void);
+#endif
+int Scintilla_LinkLexers(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Here should be placed typedefs for uptr_t, an unsigned integer type large enough to
+ * hold a pointer and sptr_t, a signed integer large enough to hold a pointer.
+ * May need to be changed for 64 bit platforms. */
+#if defined(_WIN32)
+#include
+#endif
+#ifdef MAXULONG_PTR
+typedef ULONG_PTR uptr_t;
+typedef LONG_PTR sptr_t;
+#else
+typedef unsigned long uptr_t;
+typedef long sptr_t;
+#endif
+
+typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);
+
+/* ++Autogenerated -- start of section automatically generated from Scintilla.iface */
+#define INVALID_POSITION -1
+#define SCI_START 2000
+#define SCI_OPTIONAL_START 3000
+#define SCI_LEXER_START 4000
+#define SCI_ADDTEXT 2001
+#define SCI_ADDSTYLEDTEXT 2002
+#define SCI_INSERTTEXT 2003
+#define SCI_CHANGEINSERTION 2672
+#define SCI_CLEARALL 2004
+#define SCI_DELETERANGE 2645
+#define SCI_CLEARDOCUMENTSTYLE 2005
+#define SCI_GETLENGTH 2006
+#define SCI_GETCHARAT 2007
+#define SCI_GETCURRENTPOS 2008
+#define SCI_GETANCHOR 2009
+#define SCI_GETSTYLEAT 2010
+#define SCI_REDO 2011
+#define SCI_SETUNDOCOLLECTION 2012
+#define SCI_SELECTALL 2013
+#define SCI_SETSAVEPOINT 2014
+#define SCI_GETSTYLEDTEXT 2015
+#define SCI_CANREDO 2016
+#define SCI_MARKERLINEFROMHANDLE 2017
+#define SCI_MARKERDELETEHANDLE 2018
+#define SCI_GETUNDOCOLLECTION 2019
+#define SCWS_INVISIBLE 0
+#define SCWS_VISIBLEALWAYS 1
+#define SCWS_VISIBLEAFTERINDENT 2
+#define SCI_GETVIEWWS 2020
+#define SCI_SETVIEWWS 2021
+#define SCI_POSITIONFROMPOINT 2022
+#define SCI_POSITIONFROMPOINTCLOSE 2023
+#define SCI_GOTOLINE 2024
+#define SCI_GOTOPOS 2025
+#define SCI_SETANCHOR 2026
+#define SCI_GETCURLINE 2027
+#define SCI_GETENDSTYLED 2028
+#define SC_EOL_CRLF 0
+#define SC_EOL_CR 1
+#define SC_EOL_LF 2
+#define SCI_CONVERTEOLS 2029
+#define SCI_GETEOLMODE 2030
+#define SCI_SETEOLMODE 2031
+#define SCI_STARTSTYLING 2032
+#define SCI_SETSTYLING 2033
+#define SCI_GETBUFFEREDDRAW 2034
+#define SCI_SETBUFFEREDDRAW 2035
+#define SCI_SETTABWIDTH 2036
+#define SCI_GETTABWIDTH 2121
+#define SCI_CLEARTABSTOPS 2675
+#define SCI_ADDTABSTOP 2676
+#define SCI_GETNEXTTABSTOP 2677
+#define SC_CP_UTF8 65001
+#define SCI_SETCODEPAGE 2037
+#define SC_IME_WINDOWED 0
+#define SC_IME_INLINE 1
+#define SCI_GETIMEINTERACTION 2678
+#define SCI_SETIMEINTERACTION 2679
+#define MARKER_MAX 31
+#define SC_MARK_CIRCLE 0
+#define SC_MARK_ROUNDRECT 1
+#define SC_MARK_ARROW 2
+#define SC_MARK_SMALLRECT 3
+#define SC_MARK_SHORTARROW 4
+#define SC_MARK_EMPTY 5
+#define SC_MARK_ARROWDOWN 6
+#define SC_MARK_MINUS 7
+#define SC_MARK_PLUS 8
+#define SC_MARK_VLINE 9
+#define SC_MARK_LCORNER 10
+#define SC_MARK_TCORNER 11
+#define SC_MARK_BOXPLUS 12
+#define SC_MARK_BOXPLUSCONNECTED 13
+#define SC_MARK_BOXMINUS 14
+#define SC_MARK_BOXMINUSCONNECTED 15
+#define SC_MARK_LCORNERCURVE 16
+#define SC_MARK_TCORNERCURVE 17
+#define SC_MARK_CIRCLEPLUS 18
+#define SC_MARK_CIRCLEPLUSCONNECTED 19
+#define SC_MARK_CIRCLEMINUS 20
+#define SC_MARK_CIRCLEMINUSCONNECTED 21
+#define SC_MARK_BACKGROUND 22
+#define SC_MARK_DOTDOTDOT 23
+#define SC_MARK_ARROWS 24
+#define SC_MARK_PIXMAP 25
+#define SC_MARK_FULLRECT 26
+#define SC_MARK_LEFTRECT 27
+#define SC_MARK_AVAILABLE 28
+#define SC_MARK_UNDERLINE 29
+#define SC_MARK_RGBAIMAGE 30
+#define SC_MARK_BOOKMARK 31
+#define SC_MARK_CHARACTER 10000
+#define SC_MARKNUM_FOLDEREND 25
+#define SC_MARKNUM_FOLDEROPENMID 26
+#define SC_MARKNUM_FOLDERMIDTAIL 27
+#define SC_MARKNUM_FOLDERTAIL 28
+#define SC_MARKNUM_FOLDERSUB 29
+#define SC_MARKNUM_FOLDER 30
+#define SC_MARKNUM_FOLDEROPEN 31
+#define SC_MASK_FOLDERS 0xFE000000
+#define SCI_MARKERDEFINE 2040
+#define SCI_MARKERSETFORE 2041
+#define SCI_MARKERSETBACK 2042
+#define SCI_MARKERSETBACKSELECTED 2292
+#define SCI_MARKERENABLEHIGHLIGHT 2293
+#define SCI_MARKERADD 2043
+#define SCI_MARKERDELETE 2044
+#define SCI_MARKERDELETEALL 2045
+#define SCI_MARKERGET 2046
+#define SCI_MARKERNEXT 2047
+#define SCI_MARKERPREVIOUS 2048
+#define SCI_MARKERDEFINEPIXMAP 2049
+#define SCI_MARKERADDSET 2466
+#define SCI_MARKERSETALPHA 2476
+#define SC_MAX_MARGIN 4
+#define SC_MARGIN_SYMBOL 0
+#define SC_MARGIN_NUMBER 1
+#define SC_MARGIN_BACK 2
+#define SC_MARGIN_FORE 3
+#define SC_MARGIN_TEXT 4
+#define SC_MARGIN_RTEXT 5
+#define SCI_SETMARGINTYPEN 2240
+#define SCI_GETMARGINTYPEN 2241
+#define SCI_SETMARGINWIDTHN 2242
+#define SCI_GETMARGINWIDTHN 2243
+#define SCI_SETMARGINMASKN 2244
+#define SCI_GETMARGINMASKN 2245
+#define SCI_SETMARGINSENSITIVEN 2246
+#define SCI_GETMARGINSENSITIVEN 2247
+#define SCI_SETMARGINCURSORN 2248
+#define SCI_GETMARGINCURSORN 2249
+#define STYLE_DEFAULT 32
+#define STYLE_LINENUMBER 33
+#define STYLE_BRACELIGHT 34
+#define STYLE_BRACEBAD 35
+#define STYLE_CONTROLCHAR 36
+#define STYLE_INDENTGUIDE 37
+#define STYLE_CALLTIP 38
+#define STYLE_LASTPREDEFINED 39
+#define STYLE_MAX 255
+#define SC_CHARSET_ANSI 0
+#define SC_CHARSET_DEFAULT 1
+#define SC_CHARSET_BALTIC 186
+#define SC_CHARSET_CHINESEBIG5 136
+#define SC_CHARSET_EASTEUROPE 238
+#define SC_CHARSET_GB2312 134
+#define SC_CHARSET_GREEK 161
+#define SC_CHARSET_HANGUL 129
+#define SC_CHARSET_MAC 77
+#define SC_CHARSET_OEM 255
+#define SC_CHARSET_RUSSIAN 204
+#define SC_CHARSET_CYRILLIC 1251
+#define SC_CHARSET_SHIFTJIS 128
+#define SC_CHARSET_SYMBOL 2
+#define SC_CHARSET_TURKISH 162
+#define SC_CHARSET_JOHAB 130
+#define SC_CHARSET_HEBREW 177
+#define SC_CHARSET_ARABIC 178
+#define SC_CHARSET_VIETNAMESE 163
+#define SC_CHARSET_THAI 222
+#define SC_CHARSET_8859_15 1000
+#define SCI_STYLECLEARALL 2050
+#define SCI_STYLESETFORE 2051
+#define SCI_STYLESETBACK 2052
+#define SCI_STYLESETBOLD 2053
+#define SCI_STYLESETITALIC 2054
+#define SCI_STYLESETSIZE 2055
+#define SCI_STYLESETFONT 2056
+#define SCI_STYLESETEOLFILLED 2057
+#define SCI_STYLERESETDEFAULT 2058
+#define SCI_STYLESETUNDERLINE 2059
+#define SC_CASE_MIXED 0
+#define SC_CASE_UPPER 1
+#define SC_CASE_LOWER 2
+#define SCI_STYLEGETFORE 2481
+#define SCI_STYLEGETBACK 2482
+#define SCI_STYLEGETBOLD 2483
+#define SCI_STYLEGETITALIC 2484
+#define SCI_STYLEGETSIZE 2485
+#define SCI_STYLEGETFONT 2486
+#define SCI_STYLEGETEOLFILLED 2487
+#define SCI_STYLEGETUNDERLINE 2488
+#define SCI_STYLEGETCASE 2489
+#define SCI_STYLEGETCHARACTERSET 2490
+#define SCI_STYLEGETVISIBLE 2491
+#define SCI_STYLEGETCHANGEABLE 2492
+#define SCI_STYLEGETHOTSPOT 2493
+#define SCI_STYLESETCASE 2060
+#define SC_FONT_SIZE_MULTIPLIER 100
+#define SCI_STYLESETSIZEFRACTIONAL 2061
+#define SCI_STYLEGETSIZEFRACTIONAL 2062
+#define SC_WEIGHT_NORMAL 400
+#define SC_WEIGHT_SEMIBOLD 600
+#define SC_WEIGHT_BOLD 700
+#define SCI_STYLESETWEIGHT 2063
+#define SCI_STYLEGETWEIGHT 2064
+#define SCI_STYLESETCHARACTERSET 2066
+#define SCI_STYLESETHOTSPOT 2409
+#define SCI_SETSELFORE 2067
+#define SCI_SETSELBACK 2068
+#define SCI_GETSELALPHA 2477
+#define SCI_SETSELALPHA 2478
+#define SCI_GETSELEOLFILLED 2479
+#define SCI_SETSELEOLFILLED 2480
+#define SCI_SETCARETFORE 2069
+#define SCI_ASSIGNCMDKEY 2070
+#define SCI_CLEARCMDKEY 2071
+#define SCI_CLEARALLCMDKEYS 2072
+#define SCI_SETSTYLINGEX 2073
+#define SCI_STYLESETVISIBLE 2074
+#define SCI_GETCARETPERIOD 2075
+#define SCI_SETCARETPERIOD 2076
+#define SCI_SETWORDCHARS 2077
+#define SCI_GETWORDCHARS 2646
+#define SCI_BEGINUNDOACTION 2078
+#define SCI_ENDUNDOACTION 2079
+#define INDIC_PLAIN 0
+#define INDIC_SQUIGGLE 1
+#define INDIC_TT 2
+#define INDIC_DIAGONAL 3
+#define INDIC_STRIKE 4
+#define INDIC_HIDDEN 5
+#define INDIC_BOX 6
+#define INDIC_ROUNDBOX 7
+#define INDIC_STRAIGHTBOX 8
+#define INDIC_DASH 9
+#define INDIC_DOTS 10
+#define INDIC_SQUIGGLELOW 11
+#define INDIC_DOTBOX 12
+#define INDIC_SQUIGGLEPIXMAP 13
+#define INDIC_COMPOSITIONTHICK 14
+#define INDIC_COMPOSITIONTHIN 15
+#define INDIC_FULLBOX 16
+#define INDIC_TEXTFORE 17
+#define INDIC_IME 32
+#define INDIC_IME_MAX 35
+#define INDIC_MAX 35
+#define INDIC_CONTAINER 8
+#define INDIC0_MASK 0x20
+#define INDIC1_MASK 0x40
+#define INDIC2_MASK 0x80
+#define INDICS_MASK 0xE0
+#define SCI_INDICSETSTYLE 2080
+#define SCI_INDICGETSTYLE 2081
+#define SCI_INDICSETFORE 2082
+#define SCI_INDICGETFORE 2083
+#define SCI_INDICSETUNDER 2510
+#define SCI_INDICGETUNDER 2511
+#define SCI_INDICSETHOVERSTYLE 2680
+#define SCI_INDICGETHOVERSTYLE 2681
+#define SCI_INDICSETHOVERFORE 2682
+#define SCI_INDICGETHOVERFORE 2683
+#define SC_INDICVALUEBIT 0x1000000
+#define SC_INDICVALUEMASK 0xFFFFFF
+#define SC_INDICFLAG_VALUEFORE 1
+#define SCI_INDICSETFLAGS 2684
+#define SCI_INDICGETFLAGS 2685
+#define SCI_SETWHITESPACEFORE 2084
+#define SCI_SETWHITESPACEBACK 2085
+#define SCI_SETWHITESPACESIZE 2086
+#define SCI_GETWHITESPACESIZE 2087
+#define SCI_SETSTYLEBITS 2090
+#define SCI_GETSTYLEBITS 2091
+#define SCI_SETLINESTATE 2092
+#define SCI_GETLINESTATE 2093
+#define SCI_GETMAXLINESTATE 2094
+#define SCI_GETCARETLINEVISIBLE 2095
+#define SCI_SETCARETLINEVISIBLE 2096
+#define SCI_GETCARETLINEBACK 2097
+#define SCI_SETCARETLINEBACK 2098
+#define SCI_STYLESETCHANGEABLE 2099
+#define SCI_AUTOCSHOW 2100
+#define SCI_AUTOCCANCEL 2101
+#define SCI_AUTOCACTIVE 2102
+#define SCI_AUTOCPOSSTART 2103
+#define SCI_AUTOCCOMPLETE 2104
+#define SCI_AUTOCSTOPS 2105
+#define SCI_AUTOCSETSEPARATOR 2106
+#define SCI_AUTOCGETSEPARATOR 2107
+#define SCI_AUTOCSELECT 2108
+#define SCI_AUTOCSETCANCELATSTART 2110
+#define SCI_AUTOCGETCANCELATSTART 2111
+#define SCI_AUTOCSETFILLUPS 2112
+#define SCI_AUTOCSETCHOOSESINGLE 2113
+#define SCI_AUTOCGETCHOOSESINGLE 2114
+#define SCI_AUTOCSETIGNORECASE 2115
+#define SCI_AUTOCGETIGNORECASE 2116
+#define SCI_USERLISTSHOW 2117
+#define SCI_AUTOCSETAUTOHIDE 2118
+#define SCI_AUTOCGETAUTOHIDE 2119
+#define SCI_AUTOCSETDROPRESTOFWORD 2270
+#define SCI_AUTOCGETDROPRESTOFWORD 2271
+#define SCI_REGISTERIMAGE 2405
+#define SCI_CLEARREGISTEREDIMAGES 2408
+#define SCI_AUTOCGETTYPESEPARATOR 2285
+#define SCI_AUTOCSETTYPESEPARATOR 2286
+#define SCI_AUTOCSETMAXWIDTH 2208
+#define SCI_AUTOCGETMAXWIDTH 2209
+#define SCI_AUTOCSETMAXHEIGHT 2210
+#define SCI_AUTOCGETMAXHEIGHT 2211
+#define SCI_SETINDENT 2122
+#define SCI_GETINDENT 2123
+#define SCI_SETUSETABS 2124
+#define SCI_GETUSETABS 2125
+#define SCI_SETLINEINDENTATION 2126
+#define SCI_GETLINEINDENTATION 2127
+#define SCI_GETLINEINDENTPOSITION 2128
+#define SCI_GETCOLUMN 2129
+#define SCI_COUNTCHARACTERS 2633
+#define SCI_SETHSCROLLBAR 2130
+#define SCI_GETHSCROLLBAR 2131
+#define SC_IV_NONE 0
+#define SC_IV_REAL 1
+#define SC_IV_LOOKFORWARD 2
+#define SC_IV_LOOKBOTH 3
+#define SCI_SETINDENTATIONGUIDES 2132
+#define SCI_GETINDENTATIONGUIDES 2133
+#define SCI_SETHIGHLIGHTGUIDE 2134
+#define SCI_GETHIGHLIGHTGUIDE 2135
+#define SCI_GETLINEENDPOSITION 2136
+#define SCI_GETCODEPAGE 2137
+#define SCI_GETCARETFORE 2138
+#define SCI_GETREADONLY 2140
+#define SCI_SETCURRENTPOS 2141
+#define SCI_SETSELECTIONSTART 2142
+#define SCI_GETSELECTIONSTART 2143
+#define SCI_SETSELECTIONEND 2144
+#define SCI_GETSELECTIONEND 2145
+#define SCI_SETEMPTYSELECTION 2556
+#define SCI_SETPRINTMAGNIFICATION 2146
+#define SCI_GETPRINTMAGNIFICATION 2147
+#define SC_PRINT_NORMAL 0
+#define SC_PRINT_INVERTLIGHT 1
+#define SC_PRINT_BLACKONWHITE 2
+#define SC_PRINT_COLOURONWHITE 3
+#define SC_PRINT_COLOURONWHITEDEFAULTBG 4
+#define SCI_SETPRINTCOLOURMODE 2148
+#define SCI_GETPRINTCOLOURMODE 2149
+#define SCFIND_WHOLEWORD 0x2
+#define SCFIND_MATCHCASE 0x4
+#define SCFIND_WORDSTART 0x00100000
+#define SCFIND_REGEXP 0x00200000
+#define SCFIND_POSIX 0x00400000
+#define SCFIND_CXX11REGEX 0x00800000
+#define SCI_FINDTEXT 2150
+#define SCI_FORMATRANGE 2151
+#define SCI_GETFIRSTVISIBLELINE 2152
+#define SCI_GETLINE 2153
+#define SCI_GETLINECOUNT 2154
+#define SCI_SETMARGINLEFT 2155
+#define SCI_GETMARGINLEFT 2156
+#define SCI_SETMARGINRIGHT 2157
+#define SCI_GETMARGINRIGHT 2158
+#define SCI_GETMODIFY 2159
+#define SCI_SETSEL 2160
+#define SCI_GETSELTEXT 2161
+#define SCI_GETTEXTRANGE 2162
+#define SCI_HIDESELECTION 2163
+#define SCI_POINTXFROMPOSITION 2164
+#define SCI_POINTYFROMPOSITION 2165
+#define SCI_LINEFROMPOSITION 2166
+#define SCI_POSITIONFROMLINE 2167
+#define SCI_LINESCROLL 2168
+#define SCI_SCROLLCARET 2169
+#define SCI_SCROLLRANGE 2569
+#define SCI_REPLACESEL 2170
+#define SCI_SETREADONLY 2171
+#define SCI_NULL 2172
+#define SCI_CANPASTE 2173
+#define SCI_CANUNDO 2174
+#define SCI_EMPTYUNDOBUFFER 2175
+#define SCI_UNDO 2176
+#define SCI_CUT 2177
+#define SCI_COPY 2178
+#define SCI_PASTE 2179
+#define SCI_CLEAR 2180
+#define SCI_SETTEXT 2181
+#define SCI_GETTEXT 2182
+#define SCI_GETTEXTLENGTH 2183
+#define SCI_GETDIRECTFUNCTION 2184
+#define SCI_GETDIRECTPOINTER 2185
+#define SCI_SETOVERTYPE 2186
+#define SCI_GETOVERTYPE 2187
+#define SCI_SETCARETWIDTH 2188
+#define SCI_GETCARETWIDTH 2189
+#define SCI_SETTARGETSTART 2190
+#define SCI_GETTARGETSTART 2191
+#define SCI_SETTARGETEND 2192
+#define SCI_GETTARGETEND 2193
+#define SCI_SETTARGETRANGE 2686
+#define SCI_GETTARGETTEXT 2687
+#define SCI_REPLACETARGET 2194
+#define SCI_REPLACETARGETRE 2195
+#define SCI_SEARCHINTARGET 2197
+#define SCI_SETSEARCHFLAGS 2198
+#define SCI_GETSEARCHFLAGS 2199
+#define SCI_CALLTIPSHOW 2200
+#define SCI_CALLTIPCANCEL 2201
+#define SCI_CALLTIPACTIVE 2202
+#define SCI_CALLTIPPOSSTART 2203
+#define SCI_CALLTIPSETPOSSTART 2214
+#define SCI_CALLTIPSETHLT 2204
+#define SCI_CALLTIPSETBACK 2205
+#define SCI_CALLTIPSETFORE 2206
+#define SCI_CALLTIPSETFOREHLT 2207
+#define SCI_CALLTIPUSESTYLE 2212
+#define SCI_CALLTIPSETPOSITION 2213
+#define SCI_VISIBLEFROMDOCLINE 2220
+#define SCI_DOCLINEFROMVISIBLE 2221
+#define SCI_WRAPCOUNT 2235
+#define SC_FOLDLEVELBASE 0x400
+#define SC_FOLDLEVELWHITEFLAG 0x1000
+#define SC_FOLDLEVELHEADERFLAG 0x2000
+#define SC_FOLDLEVELNUMBERMASK 0x0FFF
+#define SCI_SETFOLDLEVEL 2222
+#define SCI_GETFOLDLEVEL 2223
+#define SCI_GETLASTCHILD 2224
+#define SCI_GETFOLDPARENT 2225
+#define SCI_SHOWLINES 2226
+#define SCI_HIDELINES 2227
+#define SCI_GETLINEVISIBLE 2228
+#define SCI_GETALLLINESVISIBLE 2236
+#define SCI_SETFOLDEXPANDED 2229
+#define SCI_GETFOLDEXPANDED 2230
+#define SCI_TOGGLEFOLD 2231
+#define SC_FOLDACTION_CONTRACT 0
+#define SC_FOLDACTION_EXPAND 1
+#define SC_FOLDACTION_TOGGLE 2
+#define SCI_FOLDLINE 2237
+#define SCI_FOLDCHILDREN 2238
+#define SCI_EXPANDCHILDREN 2239
+#define SCI_FOLDALL 2662
+#define SCI_ENSUREVISIBLE 2232
+#define SC_AUTOMATICFOLD_SHOW 0x0001
+#define SC_AUTOMATICFOLD_CLICK 0x0002
+#define SC_AUTOMATICFOLD_CHANGE 0x0004
+#define SCI_SETAUTOMATICFOLD 2663
+#define SCI_GETAUTOMATICFOLD 2664
+#define SC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002
+#define SC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004
+#define SC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008
+#define SC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010
+#define SC_FOLDFLAG_LEVELNUMBERS 0x0040
+#define SC_FOLDFLAG_LINESTATE 0x0080
+#define SCI_SETFOLDFLAGS 2233
+#define SCI_ENSUREVISIBLEENFORCEPOLICY 2234
+#define SCI_SETTABINDENTS 2260
+#define SCI_GETTABINDENTS 2261
+#define SCI_SETBACKSPACEUNINDENTS 2262
+#define SCI_GETBACKSPACEUNINDENTS 2263
+#define SC_TIME_FOREVER 10000000
+#define SCI_SETMOUSEDWELLTIME 2264
+#define SCI_GETMOUSEDWELLTIME 2265
+#define SCI_WORDSTARTPOSITION 2266
+#define SCI_WORDENDPOSITION 2267
+#define SC_WRAP_NONE 0
+#define SC_WRAP_WORD 1
+#define SC_WRAP_CHAR 2
+#define SC_WRAP_WHITESPACE 3
+#define SCI_SETWRAPMODE 2268
+#define SCI_GETWRAPMODE 2269
+#define SC_WRAPVISUALFLAG_NONE 0x0000
+#define SC_WRAPVISUALFLAG_END 0x0001
+#define SC_WRAPVISUALFLAG_START 0x0002
+#define SC_WRAPVISUALFLAG_MARGIN 0x0004
+#define SCI_SETWRAPVISUALFLAGS 2460
+#define SCI_GETWRAPVISUALFLAGS 2461
+#define SC_WRAPVISUALFLAGLOC_DEFAULT 0x0000
+#define SC_WRAPVISUALFLAGLOC_END_BY_TEXT 0x0001
+#define SC_WRAPVISUALFLAGLOC_START_BY_TEXT 0x0002
+#define SCI_SETWRAPVISUALFLAGSLOCATION 2462
+#define SCI_GETWRAPVISUALFLAGSLOCATION 2463
+#define SCI_SETWRAPSTARTINDENT 2464
+#define SCI_GETWRAPSTARTINDENT 2465
+#define SC_WRAPINDENT_FIXED 0
+#define SC_WRAPINDENT_SAME 1
+#define SC_WRAPINDENT_INDENT 2
+#define SCI_SETWRAPINDENTMODE 2472
+#define SCI_GETWRAPINDENTMODE 2473
+#define SC_CACHE_NONE 0
+#define SC_CACHE_CARET 1
+#define SC_CACHE_PAGE 2
+#define SC_CACHE_DOCUMENT 3
+#define SCI_SETLAYOUTCACHE 2272
+#define SCI_GETLAYOUTCACHE 2273
+#define SCI_SETSCROLLWIDTH 2274
+#define SCI_GETSCROLLWIDTH 2275
+#define SCI_SETSCROLLWIDTHTRACKING 2516
+#define SCI_GETSCROLLWIDTHTRACKING 2517
+#define SCI_TEXTWIDTH 2276
+#define SCI_SETENDATLASTLINE 2277
+#define SCI_GETENDATLASTLINE 2278
+#define SCI_TEXTHEIGHT 2279
+#define SCI_SETVSCROLLBAR 2280
+#define SCI_GETVSCROLLBAR 2281
+#define SCI_APPENDTEXT 2282
+#define SCI_GETTWOPHASEDRAW 2283
+#define SCI_SETTWOPHASEDRAW 2284
+#define SC_PHASES_ONE 0
+#define SC_PHASES_TWO 1
+#define SC_PHASES_MULTIPLE 2
+#define SCI_GETPHASESDRAW 2673
+#define SCI_SETPHASESDRAW 2674
+#define SC_EFF_QUALITY_MASK 0xF
+#define SC_EFF_QUALITY_DEFAULT 0
+#define SC_EFF_QUALITY_NON_ANTIALIASED 1
+#define SC_EFF_QUALITY_ANTIALIASED 2
+#define SC_EFF_QUALITY_LCD_OPTIMIZED 3
+#define SCI_SETFONTQUALITY 2611
+#define SCI_GETFONTQUALITY 2612
+#define SCI_SETFIRSTVISIBLELINE 2613
+#define SC_MULTIPASTE_ONCE 0
+#define SC_MULTIPASTE_EACH 1
+#define SCI_SETMULTIPASTE 2614
+#define SCI_GETMULTIPASTE 2615
+#define SCI_GETTAG 2616
+#define SCI_TARGETFROMSELECTION 2287
+#define SCI_LINESJOIN 2288
+#define SCI_LINESSPLIT 2289
+#define SCI_SETFOLDMARGINCOLOUR 2290
+#define SCI_SETFOLDMARGINHICOLOUR 2291
+#define SCI_LINEDOWN 2300
+#define SCI_LINEDOWNEXTEND 2301
+#define SCI_LINEUP 2302
+#define SCI_LINEUPEXTEND 2303
+#define SCI_CHARLEFT 2304
+#define SCI_CHARLEFTEXTEND 2305
+#define SCI_CHARRIGHT 2306
+#define SCI_CHARRIGHTEXTEND 2307
+#define SCI_WORDLEFT 2308
+#define SCI_WORDLEFTEXTEND 2309
+#define SCI_WORDRIGHT 2310
+#define SCI_WORDRIGHTEXTEND 2311
+#define SCI_HOME 2312
+#define SCI_HOMEEXTEND 2313
+#define SCI_LINEEND 2314
+#define SCI_LINEENDEXTEND 2315
+#define SCI_DOCUMENTSTART 2316
+#define SCI_DOCUMENTSTARTEXTEND 2317
+#define SCI_DOCUMENTEND 2318
+#define SCI_DOCUMENTENDEXTEND 2319
+#define SCI_PAGEUP 2320
+#define SCI_PAGEUPEXTEND 2321
+#define SCI_PAGEDOWN 2322
+#define SCI_PAGEDOWNEXTEND 2323
+#define SCI_EDITTOGGLEOVERTYPE 2324
+#define SCI_CANCEL 2325
+#define SCI_DELETEBACK 2326
+#define SCI_TAB 2327
+#define SCI_BACKTAB 2328
+#define SCI_NEWLINE 2329
+#define SCI_FORMFEED 2330
+#define SCI_VCHOME 2331
+#define SCI_VCHOMEEXTEND 2332
+#define SCI_ZOOMIN 2333
+#define SCI_ZOOMOUT 2334
+#define SCI_DELWORDLEFT 2335
+#define SCI_DELWORDRIGHT 2336
+#define SCI_DELWORDRIGHTEND 2518
+#define SCI_LINECUT 2337
+#define SCI_LINEDELETE 2338
+#define SCI_LINETRANSPOSE 2339
+#define SCI_LINEDUPLICATE 2404
+#define SCI_LOWERCASE 2340
+#define SCI_UPPERCASE 2341
+#define SCI_LINESCROLLDOWN 2342
+#define SCI_LINESCROLLUP 2343
+#define SCI_DELETEBACKNOTLINE 2344
+#define SCI_HOMEDISPLAY 2345
+#define SCI_HOMEDISPLAYEXTEND 2346
+#define SCI_LINEENDDISPLAY 2347
+#define SCI_LINEENDDISPLAYEXTEND 2348
+#define SCI_HOMEWRAP 2349
+#define SCI_HOMEWRAPEXTEND 2450
+#define SCI_LINEENDWRAP 2451
+#define SCI_LINEENDWRAPEXTEND 2452
+#define SCI_VCHOMEWRAP 2453
+#define SCI_VCHOMEWRAPEXTEND 2454
+#define SCI_LINECOPY 2455
+#define SCI_MOVECARETINSIDEVIEW 2401
+#define SCI_LINELENGTH 2350
+#define SCI_BRACEHIGHLIGHT 2351
+#define SCI_BRACEHIGHLIGHTINDICATOR 2498
+#define SCI_BRACEBADLIGHT 2352
+#define SCI_BRACEBADLIGHTINDICATOR 2499
+#define SCI_BRACEMATCH 2353
+#define SCI_GETVIEWEOL 2355
+#define SCI_SETVIEWEOL 2356
+#define SCI_GETDOCPOINTER 2357
+#define SCI_SETDOCPOINTER 2358
+#define SCI_SETMODEVENTMASK 2359
+#define EDGE_NONE 0
+#define EDGE_LINE 1
+#define EDGE_BACKGROUND 2
+#define SCI_GETEDGECOLUMN 2360
+#define SCI_SETEDGECOLUMN 2361
+#define SCI_GETEDGEMODE 2362
+#define SCI_SETEDGEMODE 2363
+#define SCI_GETEDGECOLOUR 2364
+#define SCI_SETEDGECOLOUR 2365
+#define SCI_SEARCHANCHOR 2366
+#define SCI_SEARCHNEXT 2367
+#define SCI_SEARCHPREV 2368
+#define SCI_LINESONSCREEN 2370
+#define SCI_USEPOPUP 2371
+#define SCI_SELECTIONISRECTANGLE 2372
+#define SCI_SETZOOM 2373
+#define SCI_GETZOOM 2374
+#define SCI_CREATEDOCUMENT 2375
+#define SCI_ADDREFDOCUMENT 2376
+#define SCI_RELEASEDOCUMENT 2377
+#define SCI_GETMODEVENTMASK 2378
+#define SCI_SETFOCUS 2380
+#define SCI_GETFOCUS 2381
+#define SC_STATUS_OK 0
+#define SC_STATUS_FAILURE 1
+#define SC_STATUS_BADALLOC 2
+#define SC_STATUS_WARN_START 1000
+#define SC_STATUS_WARN_REGEX 1001
+#define SCI_SETSTATUS 2382
+#define SCI_GETSTATUS 2383
+#define SCI_SETMOUSEDOWNCAPTURES 2384
+#define SCI_GETMOUSEDOWNCAPTURES 2385
+#define SC_CURSORNORMAL -1
+#define SC_CURSORARROW 2
+#define SC_CURSORWAIT 4
+#define SC_CURSORREVERSEARROW 7
+#define SCI_SETCURSOR 2386
+#define SCI_GETCURSOR 2387
+#define SCI_SETCONTROLCHARSYMBOL 2388
+#define SCI_GETCONTROLCHARSYMBOL 2389
+#define SCI_WORDPARTLEFT 2390
+#define SCI_WORDPARTLEFTEXTEND 2391
+#define SCI_WORDPARTRIGHT 2392
+#define SCI_WORDPARTRIGHTEXTEND 2393
+#define VISIBLE_SLOP 0x01
+#define VISIBLE_STRICT 0x04
+#define SCI_SETVISIBLEPOLICY 2394
+#define SCI_DELLINELEFT 2395
+#define SCI_DELLINERIGHT 2396
+#define SCI_SETXOFFSET 2397
+#define SCI_GETXOFFSET 2398
+#define SCI_CHOOSECARETX 2399
+#define SCI_GRABFOCUS 2400
+#define CARET_SLOP 0x01
+#define CARET_STRICT 0x04
+#define CARET_JUMPS 0x10
+#define CARET_EVEN 0x08
+#define SCI_SETXCARETPOLICY 2402
+#define SCI_SETYCARETPOLICY 2403
+#define SCI_SETPRINTWRAPMODE 2406
+#define SCI_GETPRINTWRAPMODE 2407
+#define SCI_SETHOTSPOTACTIVEFORE 2410
+#define SCI_GETHOTSPOTACTIVEFORE 2494
+#define SCI_SETHOTSPOTACTIVEBACK 2411
+#define SCI_GETHOTSPOTACTIVEBACK 2495
+#define SCI_SETHOTSPOTACTIVEUNDERLINE 2412
+#define SCI_GETHOTSPOTACTIVEUNDERLINE 2496
+#define SCI_SETHOTSPOTSINGLELINE 2421
+#define SCI_GETHOTSPOTSINGLELINE 2497
+#define SCI_PARADOWN 2413
+#define SCI_PARADOWNEXTEND 2414
+#define SCI_PARAUP 2415
+#define SCI_PARAUPEXTEND 2416
+#define SCI_POSITIONBEFORE 2417
+#define SCI_POSITIONAFTER 2418
+#define SCI_POSITIONRELATIVE 2670
+#define SCI_COPYRANGE 2419
+#define SCI_COPYTEXT 2420
+#define SC_SEL_STREAM 0
+#define SC_SEL_RECTANGLE 1
+#define SC_SEL_LINES 2
+#define SC_SEL_THIN 3
+#define SCI_SETSELECTIONMODE 2422
+#define SCI_GETSELECTIONMODE 2423
+#define SCI_GETLINESELSTARTPOSITION 2424
+#define SCI_GETLINESELENDPOSITION 2425
+#define SCI_LINEDOWNRECTEXTEND 2426
+#define SCI_LINEUPRECTEXTEND 2427
+#define SCI_CHARLEFTRECTEXTEND 2428
+#define SCI_CHARRIGHTRECTEXTEND 2429
+#define SCI_HOMERECTEXTEND 2430
+#define SCI_VCHOMERECTEXTEND 2431
+#define SCI_LINEENDRECTEXTEND 2432
+#define SCI_PAGEUPRECTEXTEND 2433
+#define SCI_PAGEDOWNRECTEXTEND 2434
+#define SCI_STUTTEREDPAGEUP 2435
+#define SCI_STUTTEREDPAGEUPEXTEND 2436
+#define SCI_STUTTEREDPAGEDOWN 2437
+#define SCI_STUTTEREDPAGEDOWNEXTEND 2438
+#define SCI_WORDLEFTEND 2439
+#define SCI_WORDLEFTENDEXTEND 2440
+#define SCI_WORDRIGHTEND 2441
+#define SCI_WORDRIGHTENDEXTEND 2442
+#define SCI_SETWHITESPACECHARS 2443
+#define SCI_GETWHITESPACECHARS 2647
+#define SCI_SETPUNCTUATIONCHARS 2648
+#define SCI_GETPUNCTUATIONCHARS 2649
+#define SCI_SETCHARSDEFAULT 2444
+#define SCI_AUTOCGETCURRENT 2445
+#define SCI_AUTOCGETCURRENTTEXT 2610
+#define SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE 0
+#define SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE 1
+#define SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR 2634
+#define SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR 2635
+#define SC_MULTIAUTOC_ONCE 0
+#define SC_MULTIAUTOC_EACH 1
+#define SCI_AUTOCSETMULTI 2636
+#define SCI_AUTOCGETMULTI 2637
+#define SC_ORDER_PRESORTED 0
+#define SC_ORDER_PERFORMSORT 1
+#define SC_ORDER_CUSTOM 2
+#define SCI_AUTOCSETORDER 2660
+#define SCI_AUTOCGETORDER 2661
+#define SCI_ALLOCATE 2446
+#define SCI_TARGETASUTF8 2447
+#define SCI_SETLENGTHFORENCODE 2448
+#define SCI_ENCODEDFROMUTF8 2449
+#define SCI_FINDCOLUMN 2456
+#define SCI_GETCARETSTICKY 2457
+#define SCI_SETCARETSTICKY 2458
+#define SC_CARETSTICKY_OFF 0
+#define SC_CARETSTICKY_ON 1
+#define SC_CARETSTICKY_WHITESPACE 2
+#define SCI_TOGGLECARETSTICKY 2459
+#define SCI_SETPASTECONVERTENDINGS 2467
+#define SCI_GETPASTECONVERTENDINGS 2468
+#define SCI_SELECTIONDUPLICATE 2469
+#define SC_ALPHA_TRANSPARENT 0
+#define SC_ALPHA_OPAQUE 255
+#define SC_ALPHA_NOALPHA 256
+#define SCI_SETCARETLINEBACKALPHA 2470
+#define SCI_GETCARETLINEBACKALPHA 2471
+#define CARETSTYLE_INVISIBLE 0
+#define CARETSTYLE_LINE 1
+#define CARETSTYLE_BLOCK 2
+#define SCI_SETCARETSTYLE 2512
+#define SCI_GETCARETSTYLE 2513
+#define SCI_SETINDICATORCURRENT 2500
+#define SCI_GETINDICATORCURRENT 2501
+#define SCI_SETINDICATORVALUE 2502
+#define SCI_GETINDICATORVALUE 2503
+#define SCI_INDICATORFILLRANGE 2504
+#define SCI_INDICATORCLEARRANGE 2505
+#define SCI_INDICATORALLONFOR 2506
+#define SCI_INDICATORVALUEAT 2507
+#define SCI_INDICATORSTART 2508
+#define SCI_INDICATOREND 2509
+#define SCI_SETPOSITIONCACHE 2514
+#define SCI_GETPOSITIONCACHE 2515
+#define SCI_COPYALLOWLINE 2519
+#define SCI_GETCHARACTERPOINTER 2520
+#define SCI_GETRANGEPOINTER 2643
+#define SCI_GETGAPPOSITION 2644
+#define SCI_INDICSETALPHA 2523
+#define SCI_INDICGETALPHA 2524
+#define SCI_INDICSETOUTLINEALPHA 2558
+#define SCI_INDICGETOUTLINEALPHA 2559
+#define SCI_SETEXTRAASCENT 2525
+#define SCI_GETEXTRAASCENT 2526
+#define SCI_SETEXTRADESCENT 2527
+#define SCI_GETEXTRADESCENT 2528
+#define SCI_MARKERSYMBOLDEFINED 2529
+#define SCI_MARGINSETTEXT 2530
+#define SCI_MARGINGETTEXT 2531
+#define SCI_MARGINSETSTYLE 2532
+#define SCI_MARGINGETSTYLE 2533
+#define SCI_MARGINSETSTYLES 2534
+#define SCI_MARGINGETSTYLES 2535
+#define SCI_MARGINTEXTCLEARALL 2536
+#define SCI_MARGINSETSTYLEOFFSET 2537
+#define SCI_MARGINGETSTYLEOFFSET 2538
+#define SC_MARGINOPTION_NONE 0
+#define SC_MARGINOPTION_SUBLINESELECT 1
+#define SCI_SETMARGINOPTIONS 2539
+#define SCI_GETMARGINOPTIONS 2557
+#define SCI_ANNOTATIONSETTEXT 2540
+#define SCI_ANNOTATIONGETTEXT 2541
+#define SCI_ANNOTATIONSETSTYLE 2542
+#define SCI_ANNOTATIONGETSTYLE 2543
+#define SCI_ANNOTATIONSETSTYLES 2544
+#define SCI_ANNOTATIONGETSTYLES 2545
+#define SCI_ANNOTATIONGETLINES 2546
+#define SCI_ANNOTATIONCLEARALL 2547
+#define ANNOTATION_HIDDEN 0
+#define ANNOTATION_STANDARD 1
+#define ANNOTATION_BOXED 2
+#define ANNOTATION_INDENTED 3
+#define SCI_ANNOTATIONSETVISIBLE 2548
+#define SCI_ANNOTATIONGETVISIBLE 2549
+#define SCI_ANNOTATIONSETSTYLEOFFSET 2550
+#define SCI_ANNOTATIONGETSTYLEOFFSET 2551
+#define SCI_RELEASEALLEXTENDEDSTYLES 2552
+#define SCI_ALLOCATEEXTENDEDSTYLES 2553
+#define UNDO_MAY_COALESCE 1
+#define SCI_ADDUNDOACTION 2560
+#define SCI_CHARPOSITIONFROMPOINT 2561
+#define SCI_CHARPOSITIONFROMPOINTCLOSE 2562
+#define SCI_SETMOUSESELECTIONRECTANGULARSWITCH 2668
+#define SCI_GETMOUSESELECTIONRECTANGULARSWITCH 2669
+#define SCI_SETMULTIPLESELECTION 2563
+#define SCI_GETMULTIPLESELECTION 2564
+#define SCI_SETADDITIONALSELECTIONTYPING 2565
+#define SCI_GETADDITIONALSELECTIONTYPING 2566
+#define SCI_SETADDITIONALCARETSBLINK 2567
+#define SCI_GETADDITIONALCARETSBLINK 2568
+#define SCI_SETADDITIONALCARETSVISIBLE 2608
+#define SCI_GETADDITIONALCARETSVISIBLE 2609
+#define SCI_GETSELECTIONS 2570
+#define SCI_GETSELECTIONEMPTY 2650
+#define SCI_CLEARSELECTIONS 2571
+#define SCI_SETSELECTION 2572
+#define SCI_ADDSELECTION 2573
+#define SCI_DROPSELECTIONN 2671
+#define SCI_SETMAINSELECTION 2574
+#define SCI_GETMAINSELECTION 2575
+#define SCI_SETSELECTIONNCARET 2576
+#define SCI_GETSELECTIONNCARET 2577
+#define SCI_SETSELECTIONNANCHOR 2578
+#define SCI_GETSELECTIONNANCHOR 2579
+#define SCI_SETSELECTIONNCARETVIRTUALSPACE 2580
+#define SCI_GETSELECTIONNCARETVIRTUALSPACE 2581
+#define SCI_SETSELECTIONNANCHORVIRTUALSPACE 2582
+#define SCI_GETSELECTIONNANCHORVIRTUALSPACE 2583
+#define SCI_SETSELECTIONNSTART 2584
+#define SCI_GETSELECTIONNSTART 2585
+#define SCI_SETSELECTIONNEND 2586
+#define SCI_GETSELECTIONNEND 2587
+#define SCI_SETRECTANGULARSELECTIONCARET 2588
+#define SCI_GETRECTANGULARSELECTIONCARET 2589
+#define SCI_SETRECTANGULARSELECTIONANCHOR 2590
+#define SCI_GETRECTANGULARSELECTIONANCHOR 2591
+#define SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE 2592
+#define SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE 2593
+#define SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE 2594
+#define SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE 2595
+#define SCVS_NONE 0
+#define SCVS_RECTANGULARSELECTION 1
+#define SCVS_USERACCESSIBLE 2
+#define SCI_SETVIRTUALSPACEOPTIONS 2596
+#define SCI_GETVIRTUALSPACEOPTIONS 2597
+#define SCI_SETRECTANGULARSELECTIONMODIFIER 2598
+#define SCI_GETRECTANGULARSELECTIONMODIFIER 2599
+#define SCI_SETADDITIONALSELFORE 2600
+#define SCI_SETADDITIONALSELBACK 2601
+#define SCI_SETADDITIONALSELALPHA 2602
+#define SCI_GETADDITIONALSELALPHA 2603
+#define SCI_SETADDITIONALCARETFORE 2604
+#define SCI_GETADDITIONALCARETFORE 2605
+#define SCI_ROTATESELECTION 2606
+#define SCI_SWAPMAINANCHORCARET 2607
+#define SCI_CHANGELEXERSTATE 2617
+#define SCI_CONTRACTEDFOLDNEXT 2618
+#define SCI_VERTICALCENTRECARET 2619
+#define SCI_MOVESELECTEDLINESUP 2620
+#define SCI_MOVESELECTEDLINESDOWN 2621
+#define SCI_SETIDENTIFIER 2622
+#define SCI_GETIDENTIFIER 2623
+#define SCI_RGBAIMAGESETWIDTH 2624
+#define SCI_RGBAIMAGESETHEIGHT 2625
+#define SCI_RGBAIMAGESETSCALE 2651
+#define SCI_MARKERDEFINERGBAIMAGE 2626
+#define SCI_REGISTERRGBAIMAGE 2627
+#define SCI_SCROLLTOSTART 2628
+#define SCI_SCROLLTOEND 2629
+#define SC_TECHNOLOGY_DEFAULT 0
+#define SC_TECHNOLOGY_DIRECTWRITE 1
+#define SC_TECHNOLOGY_DIRECTWRITERETAIN 2
+#define SC_TECHNOLOGY_DIRECTWRITEDC 3
+#define SCI_SETTECHNOLOGY 2630
+#define SCI_GETTECHNOLOGY 2631
+#define SCI_CREATELOADER 2632
+#define SCI_FINDINDICATORSHOW 2640
+#define SCI_FINDINDICATORFLASH 2641
+#define SCI_FINDINDICATORHIDE 2642
+#define SCI_VCHOMEDISPLAY 2652
+#define SCI_VCHOMEDISPLAYEXTEND 2653
+#define SCI_GETCARETLINEVISIBLEALWAYS 2654
+#define SCI_SETCARETLINEVISIBLEALWAYS 2655
+#define SC_LINE_END_TYPE_DEFAULT 0
+#define SC_LINE_END_TYPE_UNICODE 1
+#define SCI_SETLINEENDTYPESALLOWED 2656
+#define SCI_GETLINEENDTYPESALLOWED 2657
+#define SCI_GETLINEENDTYPESACTIVE 2658
+#define SCI_SETREPRESENTATION 2665
+#define SCI_GETREPRESENTATION 2666
+#define SCI_CLEARREPRESENTATION 2667
+#define SCI_STARTRECORD 3001
+#define SCI_STOPRECORD 3002
+#define SCI_SETLEXER 4001
+#define SCI_GETLEXER 4002
+#define SCI_COLOURISE 4003
+#define SCI_SETPROPERTY 4004
+// #define KEYWORDSET_MAX 8
+#define KEYWORDSET_MAX 30
+#define SCI_SETKEYWORDS 4005
+#define SCI_SETLEXERLANGUAGE 4006
+#define SCI_LOADLEXERLIBRARY 4007
+#define SCI_GETPROPERTY 4008
+#define SCI_GETPROPERTYEXPANDED 4009
+#define SCI_GETPROPERTYINT 4010
+#define SCI_GETSTYLEBITSNEEDED 4011
+#define SCI_GETLEXERLANGUAGE 4012
+#define SCI_PRIVATELEXERCALL 4013
+#define SCI_PROPERTYNAMES 4014
+#define SC_TYPE_BOOLEAN 0
+#define SC_TYPE_INTEGER 1
+#define SC_TYPE_STRING 2
+#define SCI_PROPERTYTYPE 4015
+#define SCI_DESCRIBEPROPERTY 4016
+#define SCI_DESCRIBEKEYWORDSETS 4017
+#define SCI_GETLINEENDTYPESSUPPORTED 4018
+#define SCI_ALLOCATESUBSTYLES 4020
+#define SCI_GETSUBSTYLESSTART 4021
+#define SCI_GETSUBSTYLESLENGTH 4022
+#define SCI_GETSTYLEFROMSUBSTYLE 4027
+#define SCI_GETPRIMARYSTYLEFROMSTYLE 4028
+#define SCI_FREESUBSTYLES 4023
+#define SCI_SETIDENTIFIERS 4024
+#define SCI_DISTANCETOSECONDARYSTYLES 4025
+#define SCI_GETSUBSTYLEBASES 4026
+#define SC_MOD_INSERTTEXT 0x1
+#define SC_MOD_DELETETEXT 0x2
+#define SC_MOD_CHANGESTYLE 0x4
+#define SC_MOD_CHANGEFOLD 0x8
+#define SC_PERFORMED_USER 0x10
+#define SC_PERFORMED_UNDO 0x20
+#define SC_PERFORMED_REDO 0x40
+#define SC_MULTISTEPUNDOREDO 0x80
+#define SC_LASTSTEPINUNDOREDO 0x100
+#define SC_MOD_CHANGEMARKER 0x200
+#define SC_MOD_BEFOREINSERT 0x400
+#define SC_MOD_BEFOREDELETE 0x800
+#define SC_MULTILINEUNDOREDO 0x1000
+#define SC_STARTACTION 0x2000
+#define SC_MOD_CHANGEINDICATOR 0x4000
+#define SC_MOD_CHANGELINESTATE 0x8000
+#define SC_MOD_CHANGEMARGIN 0x10000
+#define SC_MOD_CHANGEANNOTATION 0x20000
+#define SC_MOD_CONTAINER 0x40000
+#define SC_MOD_LEXERSTATE 0x80000
+#define SC_MOD_INSERTCHECK 0x100000
+#define SC_MOD_CHANGETABSTOPS 0x200000
+#define SC_MODEVENTMASKALL 0x3FFFFF
+#define SC_SEARCHRESULT_LINEBUFFERMAXLENGTH 1024
+#define SC_UPDATE_CONTENT 0x1
+#define SC_UPDATE_SELECTION 0x2
+#define SC_UPDATE_V_SCROLL 0x4
+#define SC_UPDATE_H_SCROLL 0x8
+#define SCEN_CHANGE 768
+#define SCEN_SETFOCUS 512
+#define SCEN_KILLFOCUS 256
+#define SCK_DOWN 300
+#define SCK_UP 301
+#define SCK_LEFT 302
+#define SCK_RIGHT 303
+#define SCK_HOME 304
+#define SCK_END 305
+#define SCK_PRIOR 306
+#define SCK_NEXT 307
+#define SCK_DELETE 308
+#define SCK_INSERT 309
+#define SCK_ESCAPE 7
+#define SCK_BACK 8
+#define SCK_TAB 9
+#define SCK_RETURN 13
+#define SCK_ADD 310
+#define SCK_SUBTRACT 311
+#define SCK_DIVIDE 312
+#define SCK_WIN 313
+#define SCK_RWIN 314
+#define SCK_MENU 315
+#define SCMOD_NORM 0
+#define SCMOD_SHIFT 1
+#define SCMOD_CTRL 2
+#define SCMOD_ALT 4
+#define SCMOD_SUPER 8
+#define SCMOD_META 16
+#define SCN_STYLENEEDED 2000
+#define SCN_CHARADDED 2001
+#define SCN_SAVEPOINTREACHED 2002
+#define SCN_SAVEPOINTLEFT 2003
+#define SCN_MODIFYATTEMPTRO 2004
+#define SCN_KEY 2005
+#define SCN_DOUBLECLICK 2006
+#define SCN_UPDATEUI 2007
+#define SCN_MODIFIED 2008
+#define SCN_MACRORECORD 2009
+#define SCN_MARGINCLICK 2010
+#define SCN_NEEDSHOWN 2011
+#define SCN_PAINTED 2013
+#define SCN_USERLISTSELECTION 2014
+#define SCN_URIDROPPED 2015
+#define SCN_DWELLSTART 2016
+#define SCN_DWELLEND 2017
+#define SCN_ZOOM 2018
+#define SCN_HOTSPOTCLICK 2019
+#define SCN_HOTSPOTDOUBLECLICK 2020
+#define SCN_CALLTIPCLICK 2021
+#define SCN_AUTOCSELECTION 2022
+#define SCN_INDICATORCLICK 2023
+#define SCN_INDICATORRELEASE 2024
+#define SCN_AUTOCCANCELLED 2025
+#define SCN_AUTOCCHARDELETED 2026
+#define SCN_HOTSPOTRELEASECLICK 2027
+#define SCN_FOCUSIN 2028
+#define SCN_FOCUSOUT 2029
+#define SCN_SCROLLED 2080
+#define SCN_FOLDINGSTATECHANGED 2081
+/* --Autogenerated -- end of section automatically generated from Scintilla.iface */
+
+/* These structures are defined to be exactly the same shape as the Win32
+ * CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs.
+ * So older code that treats Scintilla as a RichEdit will work. */
+
+#if defined(__cplusplus) && defined(SCI_NAMESPACE)
+namespace Scintilla {
+#endif
+
+struct Sci_CharacterRange {
+ long cpMin;
+ long cpMax;
+};
+
+struct Sci_TextRange {
+ struct Sci_CharacterRange chrg;
+ char *lpstrText;
+};
+
+struct Sci_TextToFind {
+ struct Sci_CharacterRange chrg;
+ const char *lpstrText;
+ struct Sci_CharacterRange chrgText;
+};
+
+#define CharacterRange Sci_CharacterRange
+#define TextRange Sci_TextRange
+#define TextToFind Sci_TextToFind
+
+typedef void *Sci_SurfaceID;
+
+struct Sci_Rectangle {
+ int left;
+ int top;
+ int right;
+ int bottom;
+};
+
+/* This structure is used in printing and requires some of the graphics types
+ * from Platform.h. Not needed by most client code. */
+
+struct Sci_RangeToFormat {
+ Sci_SurfaceID hdc;
+ Sci_SurfaceID hdcTarget;
+ struct Sci_Rectangle rc;
+ struct Sci_Rectangle rcPage;
+ struct Sci_CharacterRange chrg;
+};
+
+#define RangeToFormat Sci_RangeToFormat
+
+struct Sci_NotifyHeader {
+ /* Compatible with Windows NMHDR.
+ * hwndFrom is really an environment specific window handle or pointer
+ * but most clients of Scintilla.h do not have this type visible. */
+ void *hwndFrom;
+ uptr_t idFrom;
+ unsigned int code;
+};
+
+#define NotifyHeader Sci_NotifyHeader
+
+struct SCNotification {
+ struct Sci_NotifyHeader nmhdr;
+ int position;
+ /* SCN_STYLENEEDED, SCN_DOUBLECLICK, SCN_MODIFIED, SCN_MARGINCLICK, */
+ /* SCN_NEEDSHOWN, SCN_DWELLSTART, SCN_DWELLEND, SCN_CALLTIPCLICK, */
+ /* SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, SCN_HOTSPOTRELEASECLICK, */
+ /* SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */
+ /* SCN_USERLISTSELECTION, SCN_AUTOCSELECTION */
+
+ int ch; /* SCN_CHARADDED, SCN_KEY */
+ int modifiers;
+ /* SCN_KEY, SCN_DOUBLECLICK, SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, */
+ /* SCN_HOTSPOTRELEASECLICK, SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */
+
+ int modificationType; /* SCN_MODIFIED */
+ const char *text;
+ /* SCN_MODIFIED, SCN_USERLISTSELECTION, SCN_AUTOCSELECTION, SCN_URIDROPPED */
+
+ int length; /* SCN_MODIFIED */
+ int linesAdded; /* SCN_MODIFIED */
+ int message; /* SCN_MACRORECORD */
+ uptr_t wParam; /* SCN_MACRORECORD */
+ sptr_t lParam; /* SCN_MACRORECORD */
+ int line; /* SCN_MODIFIED */
+ int foldLevelNow; /* SCN_MODIFIED */
+ int foldLevelPrev; /* SCN_MODIFIED */
+ int margin; /* SCN_MARGINCLICK */
+ int listType; /* SCN_USERLISTSELECTION */
+ int x; /* SCN_DWELLSTART, SCN_DWELLEND */
+ int y; /* SCN_DWELLSTART, SCN_DWELLEND */
+ int token; /* SCN_MODIFIED with SC_MOD_CONTAINER */
+ int annotationLinesAdded; /* SCN_MODIFIED with SC_MOD_CHANGEANNOTATION */
+ int updated; /* SCN_UPDATEUI */
+};
+
+struct SearchResultMarking {
+ long _start;
+ long _end;
+};
+
+struct SearchResultMarkings {
+ long _length;
+ SearchResultMarking *_markings;
+};
+
+#if defined(__cplusplus) && defined(SCI_NAMESPACE)
+}
+#endif
+
+#ifdef INCLUDE_DEPRECATED_FEATURES
+
+#define SC_CP_DBCS 1
+#define SCI_SETUSEPALETTE 2039
+#define SCI_GETUSEPALETTE 2139
+#define SCI_SETKEYSUNICODE 2521
+#define SCI_GETKEYSUNICODE 2522
+
+#endif
+
+#endif
diff --git a/src/Npp/menuCmdID.h b/src/Npp/menuCmdID.h
new file mode 100644
index 0000000..eb171bf
--- /dev/null
+++ b/src/Npp/menuCmdID.h
@@ -0,0 +1,522 @@
+// This file is part of Notepad++ project
+// Copyright (C)2003 Don HO
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// Note that the GPL places important restrictions on "derived works", yet
+// it does not provide a detailed definition of that term. To avoid
+// misunderstandings, we consider an application to constitute a
+// "derivative work" for the purpose of this license if it does any of the
+// following:
+// 1. Integrates source code from Notepad++.
+// 2. Integrates/includes/aggregates Notepad++ into a proprietary executable
+// installer, such as those produced by InstallShield.
+// 3. Links to a library or executes a program that does any of the above.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+#ifndef MENUCMDID_H
+#define MENUCMDID_H
+
+#define IDM 40000
+
+#define IDM_FILE (IDM + 1000)
+// IMPORTANT: If list below is modified, you have to change the value of IDM_FILEMENU_LASTONE and IDM_FILEMENU_EXISTCMDPOSITION
+ #define IDM_FILE_NEW (IDM_FILE + 1)
+ #define IDM_FILE_OPEN (IDM_FILE + 2)
+ #define IDM_FILE_CLOSE (IDM_FILE + 3)
+ #define IDM_FILE_CLOSEALL (IDM_FILE + 4)
+ #define IDM_FILE_CLOSEALL_BUT_CURRENT (IDM_FILE + 5)
+ #define IDM_FILE_SAVE (IDM_FILE + 6)
+ #define IDM_FILE_SAVEALL (IDM_FILE + 7)
+ #define IDM_FILE_SAVEAS (IDM_FILE + 8)
+ #define IDM_FILE_CLOSEALL_TOLEFT (IDM_FILE + 9)
+ #define IDM_FILE_PRINT (IDM_FILE + 10)
+ #define IDM_FILE_PRINTNOW 1001
+ #define IDM_FILE_EXIT (IDM_FILE + 11)
+ #define IDM_FILE_LOADSESSION (IDM_FILE + 12)
+ #define IDM_FILE_SAVESESSION (IDM_FILE + 13)
+ #define IDM_FILE_RELOAD (IDM_FILE + 14)
+ #define IDM_FILE_SAVECOPYAS (IDM_FILE + 15)
+ #define IDM_FILE_DELETE (IDM_FILE + 16)
+ #define IDM_FILE_RENAME (IDM_FILE + 17)
+ #define IDM_FILE_CLOSEALL_TORIGHT (IDM_FILE + 18)
+ #define IDM_FILE_OPEN_FOLDER (IDM_FILE + 19)
+ #define IDM_FILE_OPEN_CMD (IDM_FILE + 20)
+ #define IDM_FILE_RESTORELASTCLOSEDFILE (IDM_FILE + 21)
+ #define IDM_FILE_OPENFOLDERASWORSPACE (IDM_FILE + 22)
+// IMPORTANT: If list above is modified, you have to change the following values:
+
+// To be updated if new menu item(s) is (are) added in menu "File"
+ #define IDM_FILEMENU_LASTONE IDM_FILE_OPENFOLDERASWORSPACE
+
+// 0 based position of command "Exit" including the bars in the file menu
+// and without counting "Recent files history" items
+
+// 0 New
+// 1 Open...
+// 2 Open Containing Folder
+// 3 Open Folder as Workspace
+// 4 Reload from Disk
+// 5 Save
+// 6 Save As...
+// 7 Save a Copy As...
+// 8 Save All
+// 9 Rename...
+//10 Close
+//11 Close All
+//12 Close More
+//13 Move to Recycle Bin
+//14 --------
+//15 Load Session...
+//16 Save Session...
+//17 --------
+//18 Print...
+//19 Print Now
+//20 --------
+//21 Exit
+ #define IDM_FILEMENU_EXISTCMDPOSITION 21
+
+
+#define IDM_EDIT (IDM + 2000)
+ #define IDM_EDIT_CUT (IDM_EDIT + 1)
+ #define IDM_EDIT_COPY (IDM_EDIT + 2)
+ #define IDM_EDIT_UNDO (IDM_EDIT + 3)
+ #define IDM_EDIT_REDO (IDM_EDIT + 4)
+ #define IDM_EDIT_PASTE (IDM_EDIT + 5)
+ #define IDM_EDIT_DELETE (IDM_EDIT + 6)
+ #define IDM_EDIT_SELECTALL (IDM_EDIT + 7)
+ #define IDM_EDIT_BEGINENDSELECT (IDM_EDIT + 20)
+
+ #define IDM_EDIT_INS_TAB (IDM_EDIT + 8)
+ #define IDM_EDIT_RMV_TAB (IDM_EDIT + 9)
+ #define IDM_EDIT_DUP_LINE (IDM_EDIT + 10)
+ #define IDM_EDIT_TRANSPOSE_LINE (IDM_EDIT + 11)
+ #define IDM_EDIT_SPLIT_LINES (IDM_EDIT + 12)
+ #define IDM_EDIT_JOIN_LINES (IDM_EDIT + 13)
+ #define IDM_EDIT_LINE_UP (IDM_EDIT + 14)
+ #define IDM_EDIT_LINE_DOWN (IDM_EDIT + 15)
+ #define IDM_EDIT_UPPERCASE (IDM_EDIT + 16)
+ #define IDM_EDIT_LOWERCASE (IDM_EDIT + 17)
+ #define IDM_EDIT_REMOVEEMPTYLINES (IDM_EDIT + 55)
+ #define IDM_EDIT_REMOVEEMPTYLINESWITHBLANK (IDM_EDIT + 56)
+ #define IDM_EDIT_BLANKLINEABOVECURRENT (IDM_EDIT + 57)
+ #define IDM_EDIT_BLANKLINEBELOWCURRENT (IDM_EDIT + 58)
+ #define IDM_EDIT_SORTLINES_LEXICOGRAPHIC_ASCENDING (IDM_EDIT + 59)
+ #define IDM_EDIT_SORTLINES_LEXICOGRAPHIC_DESCENDING (IDM_EDIT + 60)
+ #define IDM_EDIT_SORTLINES_INTEGER_ASCENDING (IDM_EDIT + 61)
+ #define IDM_EDIT_SORTLINES_INTEGER_DESCENDING (IDM_EDIT + 62)
+ #define IDM_EDIT_SORTLINES_DECIMALCOMMA_ASCENDING (IDM_EDIT + 63)
+ #define IDM_EDIT_SORTLINES_DECIMALCOMMA_DESCENDING (IDM_EDIT + 64)
+ #define IDM_EDIT_SORTLINES_DECIMALDOT_ASCENDING (IDM_EDIT + 65)
+ #define IDM_EDIT_SORTLINES_DECIMALDOT_DESCENDING (IDM_EDIT + 66)
+
+// Menu macro
+ #define IDM_MACRO_STARTRECORDINGMACRO (IDM_EDIT + 18)
+ #define IDM_MACRO_STOPRECORDINGMACRO (IDM_EDIT + 19)
+ #define IDM_MACRO_PLAYBACKRECORDEDMACRO (IDM_EDIT + 21)
+//-----------
+
+ #define IDM_EDIT_BLOCK_COMMENT (IDM_EDIT + 22)
+ #define IDM_EDIT_STREAM_COMMENT (IDM_EDIT + 23)
+ #define IDM_EDIT_TRIMTRAILING (IDM_EDIT + 24)
+ #define IDM_EDIT_TRIMLINEHEAD (IDM_EDIT + 42)
+ #define IDM_EDIT_TRIM_BOTH (IDM_EDIT + 43)
+ #define IDM_EDIT_EOL2WS (IDM_EDIT + 44)
+ #define IDM_EDIT_TRIMALL (IDM_EDIT + 45)
+ #define IDM_EDIT_TAB2SW (IDM_EDIT + 46)
+ #define IDM_EDIT_SW2TAB_LEADING (IDM_EDIT + 53)
+ #define IDM_EDIT_SW2TAB_ALL (IDM_EDIT + 54)
+ #define IDM_EDIT_STREAM_UNCOMMENT (IDM_EDIT + 47)
+
+// Menu macro
+ #define IDM_MACRO_SAVECURRENTMACRO (IDM_EDIT + 25)
+//-----------
+
+ #define IDM_EDIT_RTL (IDM_EDIT + 26)
+ #define IDM_EDIT_LTR (IDM_EDIT + 27)
+ #define IDM_EDIT_SETREADONLY (IDM_EDIT + 28)
+ #define IDM_EDIT_FULLPATHTOCLIP (IDM_EDIT + 29)
+ #define IDM_EDIT_FILENAMETOCLIP (IDM_EDIT + 30)
+ #define IDM_EDIT_CURRENTDIRTOCLIP (IDM_EDIT + 31)
+
+// Menu macro
+ #define IDM_MACRO_RUNMULTIMACRODLG (IDM_EDIT + 32)
+//-----------
+
+ #define IDM_EDIT_CLEARREADONLY (IDM_EDIT + 33)
+ #define IDM_EDIT_COLUMNMODE (IDM_EDIT + 34)
+ #define IDM_EDIT_BLOCK_COMMENT_SET (IDM_EDIT + 35)
+ #define IDM_EDIT_BLOCK_UNCOMMENT (IDM_EDIT + 36)
+ #define IDM_EDIT_COLUMNMODETIP (IDM_EDIT + 37)
+ #define IDM_EDIT_PASTE_AS_HTML (IDM_EDIT + 38)
+ #define IDM_EDIT_PASTE_AS_RTF (IDM_EDIT + 39)
+ #define IDM_EDIT_COPY_BINARY (IDM_EDIT + 48)
+ #define IDM_EDIT_CUT_BINARY (IDM_EDIT + 49)
+ #define IDM_EDIT_PASTE_BINARY (IDM_EDIT + 50)
+ #define IDM_EDIT_CHAR_PANEL (IDM_EDIT + 51)
+ #define IDM_EDIT_CLIPBOARDHISTORY_PANEL (IDM_EDIT + 52)
+
+ #define IDM_EDIT_AUTOCOMPLETE (50000 + 0)
+ #define IDM_EDIT_AUTOCOMPLETE_CURRENTFILE (50000 + 1)
+ #define IDM_EDIT_FUNCCALLTIP (50000 + 2)
+ #define IDM_EDIT_AUTOCOMPLETE_PATH (50000 + 6)
+
+ //Belong to MENU FILE
+ #define IDM_OPEN_ALL_RECENT_FILE (IDM_EDIT + 40)
+ #define IDM_CLEAN_RECENT_FILE_LIST (IDM_EDIT + 41)
+
+#define IDM_SEARCH (IDM + 3000)
+ #define IDM_SEARCH_FIND (IDM_SEARCH + 1)
+ #define IDM_SEARCH_FINDNEXT (IDM_SEARCH + 2)
+ #define IDM_SEARCH_REPLACE (IDM_SEARCH + 3)
+ #define IDM_SEARCH_GOTOLINE (IDM_SEARCH + 4)
+ #define IDM_SEARCH_TOGGLE_BOOKMARK (IDM_SEARCH + 5)
+ #define IDM_SEARCH_NEXT_BOOKMARK (IDM_SEARCH + 6)
+ #define IDM_SEARCH_PREV_BOOKMARK (IDM_SEARCH + 7)
+ #define IDM_SEARCH_CLEAR_BOOKMARKS (IDM_SEARCH + 8)
+ #define IDM_SEARCH_GOTOMATCHINGBRACE (IDM_SEARCH + 9)
+ #define IDM_SEARCH_FINDPREV (IDM_SEARCH + 10)
+ #define IDM_SEARCH_FINDINCREMENT (IDM_SEARCH + 11)
+ #define IDM_SEARCH_FINDINFILES (IDM_SEARCH + 13)
+ #define IDM_SEARCH_VOLATILE_FINDNEXT (IDM_SEARCH + 14)
+ #define IDM_SEARCH_VOLATILE_FINDPREV (IDM_SEARCH + 15)
+ #define IDM_SEARCH_CUTMARKEDLINES (IDM_SEARCH + 18)
+ #define IDM_SEARCH_COPYMARKEDLINES (IDM_SEARCH + 19)
+ #define IDM_SEARCH_PASTEMARKEDLINES (IDM_SEARCH + 20)
+ #define IDM_SEARCH_DELETEMARKEDLINES (IDM_SEARCH + 21)
+ #define IDM_SEARCH_MARKALLEXT1 (IDM_SEARCH + 22)
+ #define IDM_SEARCH_UNMARKALLEXT1 (IDM_SEARCH + 23)
+ #define IDM_SEARCH_MARKALLEXT2 (IDM_SEARCH + 24)
+ #define IDM_SEARCH_UNMARKALLEXT2 (IDM_SEARCH + 25)
+ #define IDM_SEARCH_MARKALLEXT3 (IDM_SEARCH + 26)
+ #define IDM_SEARCH_UNMARKALLEXT3 (IDM_SEARCH + 27)
+ #define IDM_SEARCH_MARKALLEXT4 (IDM_SEARCH + 28)
+ #define IDM_SEARCH_UNMARKALLEXT4 (IDM_SEARCH + 29)
+ #define IDM_SEARCH_MARKALLEXT5 (IDM_SEARCH + 30)
+ #define IDM_SEARCH_UNMARKALLEXT5 (IDM_SEARCH + 31)
+ #define IDM_SEARCH_CLEARALLMARKS (IDM_SEARCH + 32)
+
+ #define IDM_SEARCH_GOPREVMARKER1 (IDM_SEARCH + 33)
+ #define IDM_SEARCH_GOPREVMARKER2 (IDM_SEARCH + 34)
+ #define IDM_SEARCH_GOPREVMARKER3 (IDM_SEARCH + 35)
+ #define IDM_SEARCH_GOPREVMARKER4 (IDM_SEARCH + 36)
+ #define IDM_SEARCH_GOPREVMARKER5 (IDM_SEARCH + 37)
+ #define IDM_SEARCH_GOPREVMARKER_DEF (IDM_SEARCH + 38)
+
+ #define IDM_SEARCH_GONEXTMARKER1 (IDM_SEARCH + 39)
+ #define IDM_SEARCH_GONEXTMARKER2 (IDM_SEARCH + 40)
+ #define IDM_SEARCH_GONEXTMARKER3 (IDM_SEARCH + 41)
+ #define IDM_SEARCH_GONEXTMARKER4 (IDM_SEARCH + 42)
+ #define IDM_SEARCH_GONEXTMARKER5 (IDM_SEARCH + 43)
+ #define IDM_SEARCH_GONEXTMARKER_DEF (IDM_SEARCH + 44)
+
+ #define IDM_FOCUS_ON_FOUND_RESULTS (IDM_SEARCH + 45)
+ #define IDM_SEARCH_GOTONEXTFOUND (IDM_SEARCH + 46)
+ #define IDM_SEARCH_GOTOPREVFOUND (IDM_SEARCH + 47)
+
+ #define IDM_SEARCH_SETANDFINDNEXT (IDM_SEARCH + 48)
+ #define IDM_SEARCH_SETANDFINDPREV (IDM_SEARCH + 49)
+ #define IDM_SEARCH_INVERSEMARKS (IDM_SEARCH + 50)
+ #define IDM_SEARCH_DELETEUNMARKEDLINES (IDM_SEARCH + 51)
+ #define IDM_SEARCH_FINDCHARINRANGE (IDM_SEARCH + 52)
+ #define IDM_SEARCH_SELECTMATCHINGBRACES (IDM_SEARCH + 53)
+ #define IDM_SEARCH_MARK (IDM_SEARCH + 54)
+
+#define IDM_MISC (IDM + 3500)
+ #define IDM_FILESWITCHER_FILESCLOSE (IDM_MISC + 1)
+ #define IDM_FILESWITCHER_FILESCLOSEOTHERS (IDM_MISC + 2)
+
+
+#define IDM_VIEW (IDM + 4000)
+ //#define IDM_VIEW_TOOLBAR_HIDE (IDM_VIEW + 1)
+ #define IDM_VIEW_TOOLBAR_REDUCE (IDM_VIEW + 2)
+ #define IDM_VIEW_TOOLBAR_ENLARGE (IDM_VIEW + 3)
+ #define IDM_VIEW_TOOLBAR_STANDARD (IDM_VIEW + 4)
+ #define IDM_VIEW_REDUCETABBAR (IDM_VIEW + 5)
+ #define IDM_VIEW_LOCKTABBAR (IDM_VIEW + 6)
+ #define IDM_VIEW_DRAWTABBAR_TOPBAR (IDM_VIEW + 7)
+ #define IDM_VIEW_DRAWTABBAR_INACIVETAB (IDM_VIEW + 8)
+ #define IDM_VIEW_POSTIT (IDM_VIEW + 9)
+ #define IDM_VIEW_TOGGLE_FOLDALL (IDM_VIEW + 10)
+ //#define IDM_VIEW_USER_DLG (IDM_VIEW + 11)
+ #define IDM_VIEW_LINENUMBER (IDM_VIEW + 12)
+ #define IDM_VIEW_SYMBOLMARGIN (IDM_VIEW + 13)
+ #define IDM_VIEW_FOLDERMAGIN (IDM_VIEW + 14)
+ #define IDM_VIEW_FOLDERMAGIN_SIMPLE (IDM_VIEW + 15)
+ #define IDM_VIEW_FOLDERMAGIN_ARROW (IDM_VIEW + 16)
+ #define IDM_VIEW_FOLDERMAGIN_CIRCLE (IDM_VIEW + 17)
+ #define IDM_VIEW_FOLDERMAGIN_BOX (IDM_VIEW + 18)
+ #define IDM_VIEW_ALL_CHARACTERS (IDM_VIEW + 19)
+ #define IDM_VIEW_INDENT_GUIDE (IDM_VIEW + 20)
+ #define IDM_VIEW_CURLINE_HILITING (IDM_VIEW + 21)
+ #define IDM_VIEW_WRAP (IDM_VIEW + 22)
+ #define IDM_VIEW_ZOOMIN (IDM_VIEW + 23)
+ #define IDM_VIEW_ZOOMOUT (IDM_VIEW + 24)
+ #define IDM_VIEW_TAB_SPACE (IDM_VIEW + 25)
+ #define IDM_VIEW_EOL (IDM_VIEW + 26)
+ #define IDM_VIEW_EDGELINE (IDM_VIEW + 27)
+ #define IDM_VIEW_EDGEBACKGROUND (IDM_VIEW + 28)
+ #define IDM_VIEW_TOGGLE_UNFOLDALL (IDM_VIEW + 29)
+ #define IDM_VIEW_FOLD_CURRENT (IDM_VIEW + 30)
+ #define IDM_VIEW_UNFOLD_CURRENT (IDM_VIEW + 31)
+ #define IDM_VIEW_FULLSCREENTOGGLE (IDM_VIEW + 32)
+ #define IDM_VIEW_ZOOMRESTORE (IDM_VIEW + 33)
+ #define IDM_VIEW_ALWAYSONTOP (IDM_VIEW + 34)
+ #define IDM_VIEW_SYNSCROLLV (IDM_VIEW + 35)
+ #define IDM_VIEW_SYNSCROLLH (IDM_VIEW + 36)
+ #define IDM_VIEW_EDGENONE (IDM_VIEW + 37)
+ #define IDM_VIEW_DRAWTABBAR_CLOSEBOTTUN (IDM_VIEW + 38)
+ #define IDM_VIEW_DRAWTABBAR_DBCLK2CLOSE (IDM_VIEW + 39)
+ #define IDM_VIEW_REFRESHTABAR (IDM_VIEW + 40)
+ #define IDM_VIEW_WRAP_SYMBOL (IDM_VIEW + 41)
+ #define IDM_VIEW_HIDELINES (IDM_VIEW + 42)
+ #define IDM_VIEW_DRAWTABBAR_VERTICAL (IDM_VIEW + 43)
+ #define IDM_VIEW_DRAWTABBAR_MULTILINE (IDM_VIEW + 44)
+ #define IDM_VIEW_DOCCHANGEMARGIN (IDM_VIEW + 45)
+ #define IDM_VIEW_LWDEF (IDM_VIEW + 46)
+ #define IDM_VIEW_LWALIGN (IDM_VIEW + 47)
+ #define IDM_VIEW_LWINDENT (IDM_VIEW + 48)
+ #define IDM_VIEW_SUMMARY (IDM_VIEW + 49)
+
+ #define IDM_VIEW_FOLD (IDM_VIEW + 50)
+ #define IDM_VIEW_FOLD_1 (IDM_VIEW_FOLD + 1)
+ #define IDM_VIEW_FOLD_2 (IDM_VIEW_FOLD + 2)
+ #define IDM_VIEW_FOLD_3 (IDM_VIEW_FOLD + 3)
+ #define IDM_VIEW_FOLD_4 (IDM_VIEW_FOLD + 4)
+ #define IDM_VIEW_FOLD_5 (IDM_VIEW_FOLD + 5)
+ #define IDM_VIEW_FOLD_6 (IDM_VIEW_FOLD + 6)
+ #define IDM_VIEW_FOLD_7 (IDM_VIEW_FOLD + 7)
+ #define IDM_VIEW_FOLD_8 (IDM_VIEW_FOLD + 8)
+
+ #define IDM_VIEW_UNFOLD (IDM_VIEW + 60)
+ #define IDM_VIEW_UNFOLD_1 (IDM_VIEW_UNFOLD + 1)
+ #define IDM_VIEW_UNFOLD_2 (IDM_VIEW_UNFOLD + 2)
+ #define IDM_VIEW_UNFOLD_3 (IDM_VIEW_UNFOLD + 3)
+ #define IDM_VIEW_UNFOLD_4 (IDM_VIEW_UNFOLD + 4)
+ #define IDM_VIEW_UNFOLD_5 (IDM_VIEW_UNFOLD + 5)
+ #define IDM_VIEW_UNFOLD_6 (IDM_VIEW_UNFOLD + 6)
+ #define IDM_VIEW_UNFOLD_7 (IDM_VIEW_UNFOLD + 7)
+ #define IDM_VIEW_UNFOLD_8 (IDM_VIEW_UNFOLD + 8)
+
+ #define IDM_VIEW_FILESWITCHER_PANEL (IDM_VIEW + 70)
+ #define IDM_VIEW_SWITCHTO_OTHER_VIEW (IDM_VIEW + 72)
+
+ #define IDM_VIEW_DOC_MAP (IDM_VIEW + 80)
+
+ #define IDM_VIEW_PROJECT_PANEL_1 (IDM_VIEW + 81)
+ #define IDM_VIEW_PROJECT_PANEL_2 (IDM_VIEW + 82)
+ #define IDM_VIEW_PROJECT_PANEL_3 (IDM_VIEW + 83)
+
+ #define IDM_VIEW_FUNC_LIST (IDM_VIEW + 84)
+ #define IDM_VIEW_FILEBROWSER (IDM_VIEW + 85)
+
+ #define IDM_VIEW_TAB1 (IDM_VIEW + 86)
+ #define IDM_VIEW_TAB2 (IDM_VIEW + 87)
+ #define IDM_VIEW_TAB3 (IDM_VIEW + 88)
+ #define IDM_VIEW_TAB4 (IDM_VIEW + 89)
+ #define IDM_VIEW_TAB5 (IDM_VIEW + 90)
+ #define IDM_VIEW_TAB6 (IDM_VIEW + 91)
+ #define IDM_VIEW_TAB7 (IDM_VIEW + 92)
+ #define IDM_VIEW_TAB8 (IDM_VIEW + 93)
+ #define IDM_VIEW_TAB9 (IDM_VIEW + 94)
+ #define IDM_VIEW_TAB_NEXT (IDM_VIEW + 95)
+ #define IDM_VIEW_TAB_PREV (IDM_VIEW + 96)
+ #define IDM_VIEW_MONITORING (IDM_VIEW + 97)
+
+ #define IDM_VIEW_GOTO_ANOTHER_VIEW 10001
+ #define IDM_VIEW_CLONE_TO_ANOTHER_VIEW 10002
+ #define IDM_VIEW_GOTO_NEW_INSTANCE 10003
+ #define IDM_VIEW_LOAD_IN_NEW_INSTANCE 10004
+
+
+#define IDM_FORMAT (IDM + 5000)
+ #define IDM_FORMAT_TODOS (IDM_FORMAT + 1)
+ #define IDM_FORMAT_TOUNIX (IDM_FORMAT + 2)
+ #define IDM_FORMAT_TOMAC (IDM_FORMAT + 3)
+ #define IDM_FORMAT_ANSI (IDM_FORMAT + 4)
+ #define IDM_FORMAT_UTF_8 (IDM_FORMAT + 5)
+ #define IDM_FORMAT_UCS_2BE (IDM_FORMAT + 6)
+ #define IDM_FORMAT_UCS_2LE (IDM_FORMAT + 7)
+ #define IDM_FORMAT_AS_UTF_8 (IDM_FORMAT + 8)
+ #define IDM_FORMAT_CONV2_ANSI (IDM_FORMAT + 9)
+ #define IDM_FORMAT_CONV2_AS_UTF_8 (IDM_FORMAT + 10)
+ #define IDM_FORMAT_CONV2_UTF_8 (IDM_FORMAT + 11)
+ #define IDM_FORMAT_CONV2_UCS_2BE (IDM_FORMAT + 12)
+ #define IDM_FORMAT_CONV2_UCS_2LE (IDM_FORMAT + 13)
+
+ #define IDM_FORMAT_ENCODE (IDM_FORMAT + 20)
+ #define IDM_FORMAT_WIN_1250 (IDM_FORMAT_ENCODE + 0)
+ #define IDM_FORMAT_WIN_1251 (IDM_FORMAT_ENCODE + 1)
+ #define IDM_FORMAT_WIN_1252 (IDM_FORMAT_ENCODE + 2)
+ #define IDM_FORMAT_WIN_1253 (IDM_FORMAT_ENCODE + 3)
+ #define IDM_FORMAT_WIN_1254 (IDM_FORMAT_ENCODE + 4)
+ #define IDM_FORMAT_WIN_1255 (IDM_FORMAT_ENCODE + 5)
+ #define IDM_FORMAT_WIN_1256 (IDM_FORMAT_ENCODE + 6)
+ #define IDM_FORMAT_WIN_1257 (IDM_FORMAT_ENCODE + 7)
+ #define IDM_FORMAT_WIN_1258 (IDM_FORMAT_ENCODE + 8)
+ #define IDM_FORMAT_ISO_8859_1 (IDM_FORMAT_ENCODE + 9)
+ #define IDM_FORMAT_ISO_8859_2 (IDM_FORMAT_ENCODE + 10)
+ #define IDM_FORMAT_ISO_8859_3 (IDM_FORMAT_ENCODE + 11)
+ #define IDM_FORMAT_ISO_8859_4 (IDM_FORMAT_ENCODE + 12)
+ #define IDM_FORMAT_ISO_8859_5 (IDM_FORMAT_ENCODE + 13)
+ #define IDM_FORMAT_ISO_8859_6 (IDM_FORMAT_ENCODE + 14)
+ #define IDM_FORMAT_ISO_8859_7 (IDM_FORMAT_ENCODE + 15)
+ #define IDM_FORMAT_ISO_8859_8 (IDM_FORMAT_ENCODE + 16)
+ #define IDM_FORMAT_ISO_8859_9 (IDM_FORMAT_ENCODE + 17)
+ #define IDM_FORMAT_ISO_8859_10 (IDM_FORMAT_ENCODE + 18)
+ #define IDM_FORMAT_ISO_8859_11 (IDM_FORMAT_ENCODE + 19)
+ #define IDM_FORMAT_ISO_8859_13 (IDM_FORMAT_ENCODE + 20)
+ #define IDM_FORMAT_ISO_8859_14 (IDM_FORMAT_ENCODE + 21)
+ #define IDM_FORMAT_ISO_8859_15 (IDM_FORMAT_ENCODE + 22)
+ #define IDM_FORMAT_ISO_8859_16 (IDM_FORMAT_ENCODE + 23)
+ #define IDM_FORMAT_DOS_437 (IDM_FORMAT_ENCODE + 24)
+ #define IDM_FORMAT_DOS_720 (IDM_FORMAT_ENCODE + 25)
+ #define IDM_FORMAT_DOS_737 (IDM_FORMAT_ENCODE + 26)
+ #define IDM_FORMAT_DOS_775 (IDM_FORMAT_ENCODE + 27)
+ #define IDM_FORMAT_DOS_850 (IDM_FORMAT_ENCODE + 28)
+ #define IDM_FORMAT_DOS_852 (IDM_FORMAT_ENCODE + 29)
+ #define IDM_FORMAT_DOS_855 (IDM_FORMAT_ENCODE + 30)
+ #define IDM_FORMAT_DOS_857 (IDM_FORMAT_ENCODE + 31)
+ #define IDM_FORMAT_DOS_858 (IDM_FORMAT_ENCODE + 32)
+ #define IDM_FORMAT_DOS_860 (IDM_FORMAT_ENCODE + 33)
+ #define IDM_FORMAT_DOS_861 (IDM_FORMAT_ENCODE + 34)
+ #define IDM_FORMAT_DOS_862 (IDM_FORMAT_ENCODE + 35)
+ #define IDM_FORMAT_DOS_863 (IDM_FORMAT_ENCODE + 36)
+ #define IDM_FORMAT_DOS_865 (IDM_FORMAT_ENCODE + 37)
+ #define IDM_FORMAT_DOS_866 (IDM_FORMAT_ENCODE + 38)
+ #define IDM_FORMAT_DOS_869 (IDM_FORMAT_ENCODE + 39)
+ #define IDM_FORMAT_BIG5 (IDM_FORMAT_ENCODE + 40)
+ #define IDM_FORMAT_GB2312 (IDM_FORMAT_ENCODE + 41)
+ #define IDM_FORMAT_SHIFT_JIS (IDM_FORMAT_ENCODE + 42)
+ #define IDM_FORMAT_KOREAN_WIN (IDM_FORMAT_ENCODE + 43)
+ #define IDM_FORMAT_EUC_KR (IDM_FORMAT_ENCODE + 44)
+ #define IDM_FORMAT_TIS_620 (IDM_FORMAT_ENCODE + 45)
+ #define IDM_FORMAT_MAC_CYRILLIC (IDM_FORMAT_ENCODE + 46)
+ #define IDM_FORMAT_KOI8U_CYRILLIC (IDM_FORMAT_ENCODE + 47)
+ #define IDM_FORMAT_KOI8R_CYRILLIC (IDM_FORMAT_ENCODE + 48)
+ #define IDM_FORMAT_ENCODE_END IDM_FORMAT_KOI8R_CYRILLIC
+
+ //#define IDM_FORMAT_CONVERT 200
+
+#define IDM_LANG (IDM + 6000)
+ #define IDM_LANGSTYLE_CONFIG_DLG (IDM_LANG + 1)
+ #define IDM_LANG_C (IDM_LANG + 2)
+ #define IDM_LANG_CPP (IDM_LANG + 3)
+ #define IDM_LANG_JAVA (IDM_LANG + 4)
+ #define IDM_LANG_HTML (IDM_LANG + 5)
+ #define IDM_LANG_XML (IDM_LANG + 6)
+ #define IDM_LANG_JS (IDM_LANG + 7)
+ #define IDM_LANG_PHP (IDM_LANG + 8)
+ #define IDM_LANG_ASP (IDM_LANG + 9)
+ #define IDM_LANG_CSS (IDM_LANG + 10)
+ #define IDM_LANG_PASCAL (IDM_LANG + 11)
+ #define IDM_LANG_PYTHON (IDM_LANG + 12)
+ #define IDM_LANG_PERL (IDM_LANG + 13)
+ #define IDM_LANG_OBJC (IDM_LANG + 14)
+ #define IDM_LANG_ASCII (IDM_LANG + 15)
+ #define IDM_LANG_TEXT (IDM_LANG + 16)
+ #define IDM_LANG_RC (IDM_LANG + 17)
+ #define IDM_LANG_MAKEFILE (IDM_LANG + 18)
+ #define IDM_LANG_INI (IDM_LANG + 19)
+ #define IDM_LANG_SQL (IDM_LANG + 20)
+ #define IDM_LANG_VB (IDM_LANG + 21)
+ #define IDM_LANG_BATCH (IDM_LANG + 22)
+ #define IDM_LANG_CS (IDM_LANG + 23)
+ #define IDM_LANG_LUA (IDM_LANG + 24)
+ #define IDM_LANG_TEX (IDM_LANG + 25)
+ #define IDM_LANG_FORTRAN (IDM_LANG + 26)
+ #define IDM_LANG_BASH (IDM_LANG + 27)
+ #define IDM_LANG_FLASH (IDM_LANG + 28)
+ #define IDM_LANG_NSIS (IDM_LANG + 29)
+ #define IDM_LANG_TCL (IDM_LANG + 30)
+ #define IDM_LANG_LISP (IDM_LANG + 31)
+ #define IDM_LANG_SCHEME (IDM_LANG + 32)
+ #define IDM_LANG_ASM (IDM_LANG + 33)
+ #define IDM_LANG_DIFF (IDM_LANG + 34)
+ #define IDM_LANG_PROPS (IDM_LANG + 35)
+ #define IDM_LANG_PS (IDM_LANG + 36)
+ #define IDM_LANG_RUBY (IDM_LANG + 37)
+ #define IDM_LANG_SMALLTALK (IDM_LANG + 38)
+ #define IDM_LANG_VHDL (IDM_LANG + 39)
+ #define IDM_LANG_CAML (IDM_LANG + 40)
+ #define IDM_LANG_KIX (IDM_LANG + 41)
+ #define IDM_LANG_ADA (IDM_LANG + 42)
+ #define IDM_LANG_VERILOG (IDM_LANG + 43)
+ #define IDM_LANG_AU3 (IDM_LANG + 44)
+ #define IDM_LANG_MATLAB (IDM_LANG + 45)
+ #define IDM_LANG_HASKELL (IDM_LANG + 46)
+ #define IDM_LANG_INNO (IDM_LANG + 47)
+ #define IDM_LANG_CMAKE (IDM_LANG + 48)
+ #define IDM_LANG_YAML (IDM_LANG + 49)
+ #define IDM_LANG_COBOL (IDM_LANG + 50)
+ #define IDM_LANG_D (IDM_LANG + 51)
+ #define IDM_LANG_GUI4CLI (IDM_LANG + 52)
+ #define IDM_LANG_POWERSHELL (IDM_LANG + 53)
+ #define IDM_LANG_R (IDM_LANG + 54)
+ #define IDM_LANG_JSP (IDM_LANG + 55)
+ #define IDM_LANG_COFFEESCRIPT (IDM_LANG + 56)
+ #define IDM_LANG_JSON (IDM_LANG + 57)
+ #define IDM_LANG_FORTRAN_77 (IDM_LANG + 58)
+
+ #define IDM_LANG_EXTERNAL (IDM_LANG + 65)
+ #define IDM_LANG_EXTERNAL_LIMIT (IDM_LANG + 79)
+
+ #define IDM_LANG_USER (IDM_LANG + 80) //46080
+ #define IDM_LANG_USER_LIMIT (IDM_LANG + 110) //46110
+ #define IDM_LANG_USER_DLG (IDM_LANG + 150)
+
+
+
+#define IDM_ABOUT (IDM + 7000)
+ #define IDM_HOMESWEETHOME (IDM_ABOUT + 1)
+ #define IDM_PROJECTPAGE (IDM_ABOUT + 2)
+ #define IDM_ONLINEHELP (IDM_ABOUT + 3)
+ #define IDM_FORUM (IDM_ABOUT + 4)
+ #define IDM_PLUGINSHOME (IDM_ABOUT + 5)
+ #define IDM_UPDATE_NPP (IDM_ABOUT + 6)
+ #define IDM_WIKIFAQ (IDM_ABOUT + 7)
+ #define IDM_HELP (IDM_ABOUT + 8)
+ #define IDM_CONFUPDATERPROXY (IDM_ABOUT + 9)
+ #define IDM_CMDLINEARGUMENTS (IDM_ABOUT + 10)
+ #define IDM_ONLINESUPPORT (IDM_ABOUT + 11)
+ #define IDM_DEBUGINFO (IDM_ABOUT + 12)
+
+
+#define IDM_SETTING (IDM + 8000)
+// #define IDM_SETTING_TAB_SIZE (IDM_SETTING + 1)
+// #define IDM_SETTING_TAB_REPLCESPACE (IDM_SETTING + 2)
+// #define IDM_SETTING_HISTORY_SIZE (IDM_SETTING + 3)
+// #define IDM_SETTING_EDGE_SIZE (IDM_SETTING + 4)
+ #define IDM_SETTING_IMPORTPLUGIN (IDM_SETTING + 5)
+ #define IDM_SETTING_IMPORTSTYLETHEMS (IDM_SETTING + 6)
+ #define IDM_SETTING_TRAYICON (IDM_SETTING + 8)
+ #define IDM_SETTING_SHORTCUT_MAPPER (IDM_SETTING + 9)
+ #define IDM_SETTING_REMEMBER_LAST_SESSION (IDM_SETTING + 10)
+ #define IDM_SETTING_PREFERECE (IDM_SETTING + 11)
+// #define IDM_SETTING_AUTOCNBCHAR (IDM_SETTING + 15)
+ #define IDM_SETTING_SHORTCUT_MAPPER_MACRO (IDM_SETTING + 16)
+ #define IDM_SETTING_SHORTCUT_MAPPER_RUN (IDM_SETTING + 17)
+ #define IDM_SETTING_EDITCONTEXTMENU (IDM_SETTING + 18)
+
+#define IDM_EXECUTE (IDM + 9000)
+
+#define IDM_SYSTRAYPOPUP (IDM + 3100)
+ #define IDM_SYSTRAYPOPUP_ACTIVATE (IDM_SYSTRAYPOPUP + 1)
+ #define IDM_SYSTRAYPOPUP_NEWDOC (IDM_SYSTRAYPOPUP + 2)
+ #define IDM_SYSTRAYPOPUP_NEW_AND_PASTE (IDM_SYSTRAYPOPUP + 3)
+ #define IDM_SYSTRAYPOPUP_OPENFILE (IDM_SYSTRAYPOPUP + 4)
+ #define IDM_SYSTRAYPOPUP_CLOSE (IDM_SYSTRAYPOPUP + 5)
+
+#endif //MENUCMDID_H
diff --git a/src/ScintillaGateway.h b/src/ScintillaGateway.h
new file mode 100644
index 0000000..887b239
--- /dev/null
+++ b/src/ScintillaGateway.h
@@ -0,0 +1,3037 @@
+// This file is part of ElasticTabstops.
+//
+// Copyright (C)2017 Justin Dailey
+//
+// ElasticTabstops is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#pragma once
+
+#include "Scintilla.h"
+
+#define SCI_UNUSED 0
+
+typedef struct {
+ unsigned char ch;
+ unsigned char style;
+} Cell;
+
+typedef int Colour;
+typedef int KeyModifier;
+
+class ScintillaGateway final {
+private:
+ HWND scintilla = nullptr;
+ SciFnDirect directFunction = nullptr;
+ sptr_t directPointer = 0;
+
+public:
+ ScintillaGateway() {}
+
+ explicit ScintillaGateway(HWND scintilla) {
+ SetScintillaInstance(scintilla);
+ }
+
+ void SetScintillaInstance(HWND scintilla) {
+ this->scintilla = scintilla;
+ directFunction = (SciFnDirect)SendMessage(scintilla, SCI_GETDIRECTFUNCTION, 0, 0);
+ directPointer = SendMessage(scintilla, SCI_GETDIRECTPOINTER, 0, 0);
+ }
+
+ HWND GetScintillaInstance() const {
+ return scintilla;
+ }
+
+ template
+ inline sptr_t Call(unsigned int message, T wParam = 0, U lParam = 0) const {
+ sptr_t retVal = directFunction(directPointer, message, (uptr_t)wParam, (sptr_t)lParam);
+ return retVal;
+ }
+
+ /* ++Autogenerated -- start of section automatically generated from Scintilla.iface */
+
+ void AddText(int length, const char* text) const {
+ Call(SCI_ADDTEXT, length, text);
+ }
+
+ void AddStyledText(int length, const Cell* c) const {
+ Call(SCI_ADDSTYLEDTEXT, length, c);
+ }
+
+ void InsertText(int pos, const char* text) const {
+ Call(SCI_INSERTTEXT, pos, text);
+ }
+
+ void ChangeInsertion(int length, const char* text) const {
+ Call(SCI_CHANGEINSERTION, length, text);
+ }
+
+ void ClearAll() const {
+ Call(SCI_CLEARALL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DeleteRange(int pos, int deleteLength) const {
+ Call(SCI_DELETERANGE, pos, deleteLength);
+ }
+
+ void ClearDocumentStyle() const {
+ Call(SCI_CLEARDOCUMENTSTYLE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int GetLength() const {
+ sptr_t res = Call(SCI_GETLENGTH, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetCharAt(int pos) const {
+ sptr_t res = Call(SCI_GETCHARAT, pos, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetCurrentPos() const {
+ sptr_t res = Call(SCI_GETCURRENTPOS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetAnchor() const {
+ sptr_t res = Call(SCI_GETANCHOR, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetStyleAt(int pos) const {
+ sptr_t res = Call(SCI_GETSTYLEAT, pos, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void Redo() const {
+ Call(SCI_REDO, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetUndoCollection(bool collectUndo) const {
+ Call(SCI_SETUNDOCOLLECTION, collectUndo, SCI_UNUSED);
+ }
+
+ void SelectAll() const {
+ Call(SCI_SELECTALL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetSavePoint() const {
+ Call(SCI_SETSAVEPOINT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int GetStyledText(Sci_TextRange* tr) const {
+ sptr_t res = Call(SCI_GETSTYLEDTEXT, SCI_UNUSED, tr);
+ return static_cast(res);
+ }
+
+ bool CanRedo() const {
+ sptr_t res = Call(SCI_CANREDO, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int MarkerLineFromHandle(int handle) const {
+ sptr_t res = Call(SCI_MARKERLINEFROMHANDLE, handle, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void MarkerDeleteHandle(int handle) const {
+ Call(SCI_MARKERDELETEHANDLE, handle, SCI_UNUSED);
+ }
+
+ bool GetUndoCollection() const {
+ sptr_t res = Call(SCI_GETUNDOCOLLECTION, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int GetViewWS() const {
+ sptr_t res = Call(SCI_GETVIEWWS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetViewWS(int viewWS) const {
+ Call(SCI_SETVIEWWS, viewWS, SCI_UNUSED);
+ }
+
+ int PositionFromPoint(int x, int y) const {
+ sptr_t res = Call(SCI_POSITIONFROMPOINT, x, y);
+ return static_cast(res);
+ }
+
+ int PositionFromPointClose(int x, int y) const {
+ sptr_t res = Call(SCI_POSITIONFROMPOINTCLOSE, x, y);
+ return static_cast(res);
+ }
+
+ void GotoLine(int line) const {
+ Call(SCI_GOTOLINE, line, SCI_UNUSED);
+ }
+
+ void GotoPos(int pos) const {
+ Call(SCI_GOTOPOS, pos, SCI_UNUSED);
+ }
+
+ void SetAnchor(int posAnchor) const {
+ Call(SCI_SETANCHOR, posAnchor, SCI_UNUSED);
+ }
+
+ int GetCurLine(int length, char* text) const {
+ sptr_t res = Call(SCI_GETCURLINE, length, text);
+ return static_cast(res);
+ }
+
+ int GetEndStyled() const {
+ sptr_t res = Call(SCI_GETENDSTYLED, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void ConvertEOLs(int eolMode) const {
+ Call(SCI_CONVERTEOLS, eolMode, SCI_UNUSED);
+ }
+
+ int GetEOLMode() const {
+ sptr_t res = Call(SCI_GETEOLMODE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetEOLMode(int eolMode) const {
+ Call(SCI_SETEOLMODE, eolMode, SCI_UNUSED);
+ }
+
+ void StartStyling(int pos, int mask) const {
+ Call(SCI_STARTSTYLING, pos, mask);
+ }
+
+ void SetStyling(int length, int style) const {
+ Call(SCI_SETSTYLING, length, style);
+ }
+
+ bool GetBufferedDraw() const {
+ sptr_t res = Call(SCI_GETBUFFEREDDRAW, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetBufferedDraw(bool buffered) const {
+ Call(SCI_SETBUFFEREDDRAW, buffered, SCI_UNUSED);
+ }
+
+ void SetTabWidth(int tabWidth) const {
+ Call(SCI_SETTABWIDTH, tabWidth, SCI_UNUSED);
+ }
+
+ int GetTabWidth() const {
+ sptr_t res = Call(SCI_GETTABWIDTH, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void ClearTabStops(int line) const {
+ Call(SCI_CLEARTABSTOPS, line, SCI_UNUSED);
+ }
+
+ void AddTabStop(int line, int x) const {
+ Call(SCI_ADDTABSTOP, line, x);
+ }
+
+ int GetNextTabStop(int line, int x) const {
+ sptr_t res = Call(SCI_GETNEXTTABSTOP, line, x);
+ return static_cast(res);
+ }
+
+ void SetCodePage(int codePage) const {
+ Call(SCI_SETCODEPAGE, codePage, SCI_UNUSED);
+ }
+
+ int GetIMEInteraction() const {
+ sptr_t res = Call(SCI_GETIMEINTERACTION, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetIMEInteraction(int imeInteraction) const {
+ Call(SCI_SETIMEINTERACTION, imeInteraction, SCI_UNUSED);
+ }
+
+ void MarkerDefine(int markerNumber, int markerSymbol) const {
+ Call(SCI_MARKERDEFINE, markerNumber, markerSymbol);
+ }
+
+ void MarkerSetFore(int markerNumber, Colour fore) const {
+ Call(SCI_MARKERSETFORE, markerNumber, fore);
+ }
+
+ void MarkerSetBack(int markerNumber, Colour back) const {
+ Call(SCI_MARKERSETBACK, markerNumber, back);
+ }
+
+ void MarkerSetBackSelected(int markerNumber, Colour back) const {
+ Call(SCI_MARKERSETBACKSELECTED, markerNumber, back);
+ }
+
+ void MarkerEnableHighlight(bool enabled) const {
+ Call(SCI_MARKERENABLEHIGHLIGHT, enabled, SCI_UNUSED);
+ }
+
+ int MarkerAdd(int line, int markerNumber) const {
+ sptr_t res = Call(SCI_MARKERADD, line, markerNumber);
+ return static_cast(res);
+ }
+
+ void MarkerDelete(int line, int markerNumber) const {
+ Call(SCI_MARKERDELETE, line, markerNumber);
+ }
+
+ void MarkerDeleteAll(int markerNumber) const {
+ Call(SCI_MARKERDELETEALL, markerNumber, SCI_UNUSED);
+ }
+
+ int MarkerGet(int line) const {
+ sptr_t res = Call(SCI_MARKERGET, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int MarkerNext(int lineStart, int markerMask) const {
+ sptr_t res = Call(SCI_MARKERNEXT, lineStart, markerMask);
+ return static_cast(res);
+ }
+
+ int MarkerPrevious(int lineStart, int markerMask) const {
+ sptr_t res = Call(SCI_MARKERPREVIOUS, lineStart, markerMask);
+ return static_cast(res);
+ }
+
+ void MarkerDefinePixmap(int markerNumber, const char* pixmap) const {
+ Call(SCI_MARKERDEFINEPIXMAP, markerNumber, pixmap);
+ }
+
+ void MarkerAddSet(int line, int set) const {
+ Call(SCI_MARKERADDSET, line, set);
+ }
+
+ void MarkerSetAlpha(int markerNumber, int alpha) const {
+ Call(SCI_MARKERSETALPHA, markerNumber, alpha);
+ }
+
+ void SetMarginTypeN(int margin, int marginType) const {
+ Call(SCI_SETMARGINTYPEN, margin, marginType);
+ }
+
+ int GetMarginTypeN(int margin) const {
+ sptr_t res = Call(SCI_GETMARGINTYPEN, margin, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetMarginWidthN(int margin, int pixelWidth) const {
+ Call(SCI_SETMARGINWIDTHN, margin, pixelWidth);
+ }
+
+ int GetMarginWidthN(int margin) const {
+ sptr_t res = Call(SCI_GETMARGINWIDTHN, margin, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetMarginMaskN(int margin, int mask) const {
+ Call(SCI_SETMARGINMASKN, margin, mask);
+ }
+
+ int GetMarginMaskN(int margin) const {
+ sptr_t res = Call(SCI_GETMARGINMASKN, margin, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetMarginSensitiveN(int margin, bool sensitive) const {
+ Call(SCI_SETMARGINSENSITIVEN, margin, sensitive);
+ }
+
+ bool GetMarginSensitiveN(int margin) const {
+ sptr_t res = Call(SCI_GETMARGINSENSITIVEN, margin, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetMarginCursorN(int margin, int cursor) const {
+ Call(SCI_SETMARGINCURSORN, margin, cursor);
+ }
+
+ int GetMarginCursorN(int margin) const {
+ sptr_t res = Call(SCI_GETMARGINCURSORN, margin, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void StyleClearAll() const {
+ Call(SCI_STYLECLEARALL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void StyleSetFore(int style, Colour fore) const {
+ Call(SCI_STYLESETFORE, style, fore);
+ }
+
+ void StyleSetBack(int style, Colour back) const {
+ Call(SCI_STYLESETBACK, style, back);
+ }
+
+ void StyleSetBold(int style, bool bold) const {
+ Call(SCI_STYLESETBOLD, style, bold);
+ }
+
+ void StyleSetItalic(int style, bool italic) const {
+ Call(SCI_STYLESETITALIC, style, italic);
+ }
+
+ void StyleSetSize(int style, int sizePoints) const {
+ Call(SCI_STYLESETSIZE, style, sizePoints);
+ }
+
+ void StyleSetFont(int style, const char* fontName) const {
+ Call(SCI_STYLESETFONT, style, fontName);
+ }
+
+ void StyleSetEOLFilled(int style, bool filled) const {
+ Call(SCI_STYLESETEOLFILLED, style, filled);
+ }
+
+ void StyleResetDefault() const {
+ Call(SCI_STYLERESETDEFAULT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void StyleSetUnderline(int style, bool underline) const {
+ Call(SCI_STYLESETUNDERLINE, style, underline);
+ }
+
+ Colour StyleGetFore(int style) const {
+ sptr_t res = Call(SCI_STYLEGETFORE, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ Colour StyleGetBack(int style) const {
+ sptr_t res = Call(SCI_STYLEGETBACK, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ bool StyleGetBold(int style) const {
+ sptr_t res = Call(SCI_STYLEGETBOLD, style, SCI_UNUSED);
+ return res != 0;
+ }
+
+ bool StyleGetItalic(int style) const {
+ sptr_t res = Call(SCI_STYLEGETITALIC, style, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int StyleGetSize(int style) const {
+ sptr_t res = Call(SCI_STYLEGETSIZE, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int StyleGetFont(int style, char* fontName) const {
+ sptr_t res = Call(SCI_STYLEGETFONT, style, fontName);
+ return static_cast(res);
+ }
+
+ bool StyleGetEOLFilled(int style) const {
+ sptr_t res = Call(SCI_STYLEGETEOLFILLED, style, SCI_UNUSED);
+ return res != 0;
+ }
+
+ bool StyleGetUnderline(int style) const {
+ sptr_t res = Call(SCI_STYLEGETUNDERLINE, style, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int StyleGetCase(int style) const {
+ sptr_t res = Call(SCI_STYLEGETCASE, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int StyleGetCharacterSet(int style) const {
+ sptr_t res = Call(SCI_STYLEGETCHARACTERSET, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ bool StyleGetVisible(int style) const {
+ sptr_t res = Call(SCI_STYLEGETVISIBLE, style, SCI_UNUSED);
+ return res != 0;
+ }
+
+ bool StyleGetChangeable(int style) const {
+ sptr_t res = Call(SCI_STYLEGETCHANGEABLE, style, SCI_UNUSED);
+ return res != 0;
+ }
+
+ bool StyleGetHotSpot(int style) const {
+ sptr_t res = Call(SCI_STYLEGETHOTSPOT, style, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void StyleSetCase(int style, int caseForce) const {
+ Call(SCI_STYLESETCASE, style, caseForce);
+ }
+
+ void StyleSetSizeFractional(int style, int caseForce) const {
+ Call(SCI_STYLESETSIZEFRACTIONAL, style, caseForce);
+ }
+
+ int StyleGetSizeFractional(int style) const {
+ sptr_t res = Call(SCI_STYLEGETSIZEFRACTIONAL, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void StyleSetWeight(int style, int weight) const {
+ Call(SCI_STYLESETWEIGHT, style, weight);
+ }
+
+ int StyleGetWeight(int style) const {
+ sptr_t res = Call(SCI_STYLEGETWEIGHT, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void StyleSetCharacterSet(int style, int characterSet) const {
+ Call(SCI_STYLESETCHARACTERSET, style, characterSet);
+ }
+
+ void StyleSetHotSpot(int style, bool hotspot) const {
+ Call(SCI_STYLESETHOTSPOT, style, hotspot);
+ }
+
+ void SetSelFore(bool useSetting, Colour fore) const {
+ Call(SCI_SETSELFORE, useSetting, fore);
+ }
+
+ void SetSelBack(bool useSetting, Colour back) const {
+ Call(SCI_SETSELBACK, useSetting, back);
+ }
+
+ int GetSelAlpha() const {
+ sptr_t res = Call(SCI_GETSELALPHA, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelAlpha(int alpha) const {
+ Call(SCI_SETSELALPHA, alpha, SCI_UNUSED);
+ }
+
+ bool GetSelEOLFilled() const {
+ sptr_t res = Call(SCI_GETSELEOLFILLED, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetSelEOLFilled(bool filled) const {
+ Call(SCI_SETSELEOLFILLED, filled, SCI_UNUSED);
+ }
+
+ void SetCaretFore(Colour fore) const {
+ Call(SCI_SETCARETFORE, fore, SCI_UNUSED);
+ }
+
+ void AssignCmdKey(KeyModifier km, int msg) const {
+ Call(SCI_ASSIGNCMDKEY, km, msg);
+ }
+
+ void ClearCmdKey(KeyModifier km) const {
+ Call(SCI_CLEARCMDKEY, km, SCI_UNUSED);
+ }
+
+ void ClearAllCmdKeys() const {
+ Call(SCI_CLEARALLCMDKEYS, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetStylingEx(int length, const char* styles) const {
+ Call(SCI_SETSTYLINGEX, length, styles);
+ }
+
+ void StyleSetVisible(int style, bool visible) const {
+ Call(SCI_STYLESETVISIBLE, style, visible);
+ }
+
+ int GetCaretPeriod() const {
+ sptr_t res = Call(SCI_GETCARETPERIOD, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetCaretPeriod(int periodMilliseconds) const {
+ Call(SCI_SETCARETPERIOD, periodMilliseconds, SCI_UNUSED);
+ }
+
+ void SetWordChars(const char* characters) const {
+ Call(SCI_SETWORDCHARS, SCI_UNUSED, characters);
+ }
+
+ int GetWordChars(char* characters) const {
+ sptr_t res = Call(SCI_GETWORDCHARS, SCI_UNUSED, characters);
+ return static_cast(res);
+ }
+
+ void BeginUndoAction() const {
+ Call(SCI_BEGINUNDOACTION, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void EndUndoAction() const {
+ Call(SCI_ENDUNDOACTION, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void IndicSetStyle(int indic, int style) const {
+ Call(SCI_INDICSETSTYLE, indic, style);
+ }
+
+ int IndicGetStyle(int indic) const {
+ sptr_t res = Call(SCI_INDICGETSTYLE, indic, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void IndicSetFore(int indic, Colour fore) const {
+ Call(SCI_INDICSETFORE, indic, fore);
+ }
+
+ Colour IndicGetFore(int indic) const {
+ sptr_t res = Call(SCI_INDICGETFORE, indic, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void IndicSetUnder(int indic, bool under) const {
+ Call(SCI_INDICSETUNDER, indic, under);
+ }
+
+ bool IndicGetUnder(int indic) const {
+ sptr_t res = Call(SCI_INDICGETUNDER, indic, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void IndicSetHoverStyle(int indic, int style) const {
+ Call(SCI_INDICSETHOVERSTYLE, indic, style);
+ }
+
+ int IndicGetHoverStyle(int indic) const {
+ sptr_t res = Call(SCI_INDICGETHOVERSTYLE, indic, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void IndicSetHoverFore(int indic, Colour fore) const {
+ Call(SCI_INDICSETHOVERFORE, indic, fore);
+ }
+
+ Colour IndicGetHoverFore(int indic) const {
+ sptr_t res = Call(SCI_INDICGETHOVERFORE, indic, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void IndicSetFlags(int indic, int flags) const {
+ Call(SCI_INDICSETFLAGS, indic, flags);
+ }
+
+ int IndicGetFlags(int indic) const {
+ sptr_t res = Call(SCI_INDICGETFLAGS, indic, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetWhitespaceFore(bool useSetting, Colour fore) const {
+ Call(SCI_SETWHITESPACEFORE, useSetting, fore);
+ }
+
+ void SetWhitespaceBack(bool useSetting, Colour back) const {
+ Call(SCI_SETWHITESPACEBACK, useSetting, back);
+ }
+
+ void SetWhitespaceSize(int size) const {
+ Call(SCI_SETWHITESPACESIZE, size, SCI_UNUSED);
+ }
+
+ int GetWhitespaceSize() const {
+ sptr_t res = Call(SCI_GETWHITESPACESIZE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetStyleBits(int bits) const {
+ Call(SCI_SETSTYLEBITS, bits, SCI_UNUSED);
+ }
+
+ int GetStyleBits() const {
+ sptr_t res = Call(SCI_GETSTYLEBITS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetLineState(int line, int state) const {
+ Call(SCI_SETLINESTATE, line, state);
+ }
+
+ int GetLineState(int line) const {
+ sptr_t res = Call(SCI_GETLINESTATE, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetMaxLineState() const {
+ sptr_t res = Call(SCI_GETMAXLINESTATE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ bool GetCaretLineVisible() const {
+ sptr_t res = Call(SCI_GETCARETLINEVISIBLE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetCaretLineVisible(bool show) const {
+ Call(SCI_SETCARETLINEVISIBLE, show, SCI_UNUSED);
+ }
+
+ Colour GetCaretLineBack() const {
+ sptr_t res = Call(SCI_GETCARETLINEBACK, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetCaretLineBack(Colour back) const {
+ Call(SCI_SETCARETLINEBACK, back, SCI_UNUSED);
+ }
+
+ void StyleSetChangeable(int style, bool changeable) const {
+ Call(SCI_STYLESETCHANGEABLE, style, changeable);
+ }
+
+ void AutoCShow(int lenEntered, const char* itemList) const {
+ Call(SCI_AUTOCSHOW, lenEntered, itemList);
+ }
+
+ void AutoCCancel() const {
+ Call(SCI_AUTOCCANCEL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ bool AutoCActive() const {
+ sptr_t res = Call(SCI_AUTOCACTIVE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int AutoCPosStart() const {
+ sptr_t res = Call(SCI_AUTOCPOSSTART, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AutoCComplete() const {
+ Call(SCI_AUTOCCOMPLETE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void AutoCStops(const char* characterSet) const {
+ Call(SCI_AUTOCSTOPS, SCI_UNUSED, characterSet);
+ }
+
+ void AutoCSetSeparator(int separatorCharacter) const {
+ Call(SCI_AUTOCSETSEPARATOR, separatorCharacter, SCI_UNUSED);
+ }
+
+ int AutoCGetSeparator() const {
+ sptr_t res = Call(SCI_AUTOCGETSEPARATOR, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AutoCSelect(const char* text) const {
+ Call(SCI_AUTOCSELECT, SCI_UNUSED, text);
+ }
+
+ void AutoCSetCancelAtStart(bool cancel) const {
+ Call(SCI_AUTOCSETCANCELATSTART, cancel, SCI_UNUSED);
+ }
+
+ bool AutoCGetCancelAtStart() const {
+ sptr_t res = Call(SCI_AUTOCGETCANCELATSTART, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void AutoCSetFillUps(const char* characterSet) const {
+ Call(SCI_AUTOCSETFILLUPS, SCI_UNUSED, characterSet);
+ }
+
+ void AutoCSetChooseSingle(bool chooseSingle) const {
+ Call(SCI_AUTOCSETCHOOSESINGLE, chooseSingle, SCI_UNUSED);
+ }
+
+ bool AutoCGetChooseSingle() const {
+ sptr_t res = Call(SCI_AUTOCGETCHOOSESINGLE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void AutoCSetIgnoreCase(bool ignoreCase) const {
+ Call(SCI_AUTOCSETIGNORECASE, ignoreCase, SCI_UNUSED);
+ }
+
+ bool AutoCGetIgnoreCase() const {
+ sptr_t res = Call(SCI_AUTOCGETIGNORECASE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void UserListShow(int listType, const char* itemList) const {
+ Call(SCI_USERLISTSHOW, listType, itemList);
+ }
+
+ void AutoCSetAutoHide(bool autoHide) const {
+ Call(SCI_AUTOCSETAUTOHIDE, autoHide, SCI_UNUSED);
+ }
+
+ bool AutoCGetAutoHide() const {
+ sptr_t res = Call(SCI_AUTOCGETAUTOHIDE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void AutoCSetDropRestOfWord(bool dropRestOfWord) const {
+ Call(SCI_AUTOCSETDROPRESTOFWORD, dropRestOfWord, SCI_UNUSED);
+ }
+
+ bool AutoCGetDropRestOfWord() const {
+ sptr_t res = Call(SCI_AUTOCGETDROPRESTOFWORD, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void RegisterImage(int type, const char* xpmData) const {
+ Call(SCI_REGISTERIMAGE, type, xpmData);
+ }
+
+ void ClearRegisteredImages() const {
+ Call(SCI_CLEARREGISTEREDIMAGES, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int AutoCGetTypeSeparator() const {
+ sptr_t res = Call(SCI_AUTOCGETTYPESEPARATOR, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AutoCSetTypeSeparator(int separatorCharacter) const {
+ Call(SCI_AUTOCSETTYPESEPARATOR, separatorCharacter, SCI_UNUSED);
+ }
+
+ void AutoCSetMaxWidth(int characterCount) const {
+ Call(SCI_AUTOCSETMAXWIDTH, characterCount, SCI_UNUSED);
+ }
+
+ int AutoCGetMaxWidth() const {
+ sptr_t res = Call(SCI_AUTOCGETMAXWIDTH, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AutoCSetMaxHeight(int rowCount) const {
+ Call(SCI_AUTOCSETMAXHEIGHT, rowCount, SCI_UNUSED);
+ }
+
+ int AutoCGetMaxHeight() const {
+ sptr_t res = Call(SCI_AUTOCGETMAXHEIGHT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetIndent(int indentSize) const {
+ Call(SCI_SETINDENT, indentSize, SCI_UNUSED);
+ }
+
+ int GetIndent() const {
+ sptr_t res = Call(SCI_GETINDENT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetUseTabs(bool useTabs) const {
+ Call(SCI_SETUSETABS, useTabs, SCI_UNUSED);
+ }
+
+ bool GetUseTabs() const {
+ sptr_t res = Call(SCI_GETUSETABS, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetLineIndentation(int line, int indentSize) const {
+ Call(SCI_SETLINEINDENTATION, line, indentSize);
+ }
+
+ int GetLineIndentation(int line) const {
+ sptr_t res = Call(SCI_GETLINEINDENTATION, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLineIndentPosition(int line) const {
+ sptr_t res = Call(SCI_GETLINEINDENTPOSITION, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetColumn(int pos) const {
+ sptr_t res = Call(SCI_GETCOLUMN, pos, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int CountCharacters(int startPos, int endPos) const {
+ sptr_t res = Call(SCI_COUNTCHARACTERS, startPos, endPos);
+ return static_cast(res);
+ }
+
+ void SetHScrollBar(bool show) const {
+ Call(SCI_SETHSCROLLBAR, show, SCI_UNUSED);
+ }
+
+ bool GetHScrollBar() const {
+ sptr_t res = Call(SCI_GETHSCROLLBAR, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetIndentationGuides(int indentView) const {
+ Call(SCI_SETINDENTATIONGUIDES, indentView, SCI_UNUSED);
+ }
+
+ int GetIndentationGuides() const {
+ sptr_t res = Call(SCI_GETINDENTATIONGUIDES, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetHighlightGuide(int column) const {
+ Call(SCI_SETHIGHLIGHTGUIDE, column, SCI_UNUSED);
+ }
+
+ int GetHighlightGuide() const {
+ sptr_t res = Call(SCI_GETHIGHLIGHTGUIDE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLineEndPosition(int line) const {
+ sptr_t res = Call(SCI_GETLINEENDPOSITION, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetCodePage() const {
+ sptr_t res = Call(SCI_GETCODEPAGE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ Colour GetCaretFore() const {
+ sptr_t res = Call(SCI_GETCARETFORE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ bool GetReadOnly() const {
+ sptr_t res = Call(SCI_GETREADONLY, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetCurrentPos(int pos) const {
+ Call(SCI_SETCURRENTPOS, pos, SCI_UNUSED);
+ }
+
+ void SetSelectionStart(int pos) const {
+ Call(SCI_SETSELECTIONSTART, pos, SCI_UNUSED);
+ }
+
+ int GetSelectionStart() const {
+ sptr_t res = Call(SCI_GETSELECTIONSTART, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelectionEnd(int pos) const {
+ Call(SCI_SETSELECTIONEND, pos, SCI_UNUSED);
+ }
+
+ int GetSelectionEnd() const {
+ sptr_t res = Call(SCI_GETSELECTIONEND, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetEmptySelection(int pos) const {
+ Call(SCI_SETEMPTYSELECTION, pos, SCI_UNUSED);
+ }
+
+ void SetPrintMagnification(int magnification) const {
+ Call(SCI_SETPRINTMAGNIFICATION, magnification, SCI_UNUSED);
+ }
+
+ int GetPrintMagnification() const {
+ sptr_t res = Call(SCI_GETPRINTMAGNIFICATION, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetPrintColourMode(int mode) const {
+ Call(SCI_SETPRINTCOLOURMODE, mode, SCI_UNUSED);
+ }
+
+ int GetPrintColourMode() const {
+ sptr_t res = Call(SCI_GETPRINTCOLOURMODE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int FindText(int flags, Sci_TextToFind* ft) const {
+ sptr_t res = Call(SCI_FINDTEXT, flags, ft);
+ return static_cast(res);
+ }
+
+ int FormatRange(bool draw, Sci_RangeToFormat* fr) const {
+ sptr_t res = Call(SCI_FORMATRANGE, draw, fr);
+ return static_cast(res);
+ }
+
+ int GetFirstVisibleLine() const {
+ sptr_t res = Call(SCI_GETFIRSTVISIBLELINE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLine(int line, char* text) const {
+ sptr_t res = Call(SCI_GETLINE, line, text);
+ return static_cast(res);
+ }
+
+ int GetLineCount() const {
+ sptr_t res = Call(SCI_GETLINECOUNT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetMarginLeft(int pixelWidth) const {
+ Call(SCI_SETMARGINLEFT, SCI_UNUSED, pixelWidth);
+ }
+
+ int GetMarginLeft() const {
+ sptr_t res = Call(SCI_GETMARGINLEFT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetMarginRight(int pixelWidth) const {
+ Call(SCI_SETMARGINRIGHT, SCI_UNUSED, pixelWidth);
+ }
+
+ int GetMarginRight() const {
+ sptr_t res = Call(SCI_GETMARGINRIGHT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ bool GetModify() const {
+ sptr_t res = Call(SCI_GETMODIFY, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetSel(int start, int end) const {
+ Call(SCI_SETSEL, start, end);
+ }
+
+ int GetSelText(char* text) const {
+ sptr_t res = Call(SCI_GETSELTEXT, SCI_UNUSED, text);
+ return static_cast(res);
+ }
+
+ int GetTextRange(Sci_TextRange* tr) const {
+ sptr_t res = Call(SCI_GETTEXTRANGE, SCI_UNUSED, tr);
+ return static_cast(res);
+ }
+
+ void HideSelection(bool normal) const {
+ Call(SCI_HIDESELECTION, normal, SCI_UNUSED);
+ }
+
+ int PointXFromPosition(int pos) const {
+ sptr_t res = Call(SCI_POINTXFROMPOSITION, SCI_UNUSED, pos);
+ return static_cast(res);
+ }
+
+ int PointYFromPosition(int pos) const {
+ sptr_t res = Call(SCI_POINTYFROMPOSITION, SCI_UNUSED, pos);
+ return static_cast(res);
+ }
+
+ int LineFromPosition(int pos) const {
+ sptr_t res = Call(SCI_LINEFROMPOSITION, pos, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int PositionFromLine(int line) const {
+ sptr_t res = Call(SCI_POSITIONFROMLINE, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void LineScroll(int columns, int lines) const {
+ Call(SCI_LINESCROLL, columns, lines);
+ }
+
+ void ScrollCaret() const {
+ Call(SCI_SCROLLCARET, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void ScrollRange(int secondary, int primary) const {
+ Call(SCI_SCROLLRANGE, secondary, primary);
+ }
+
+ void ReplaceSel(const char* text) const {
+ Call(SCI_REPLACESEL, SCI_UNUSED, text);
+ }
+
+ void SetReadOnly(bool readOnly) const {
+ Call(SCI_SETREADONLY, readOnly, SCI_UNUSED);
+ }
+
+ void Null() const {
+ Call(SCI_NULL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ bool CanPaste() const {
+ sptr_t res = Call(SCI_CANPASTE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ bool CanUndo() const {
+ sptr_t res = Call(SCI_CANUNDO, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void EmptyUndoBuffer() const {
+ Call(SCI_EMPTYUNDOBUFFER, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Undo() const {
+ Call(SCI_UNDO, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Cut() const {
+ Call(SCI_CUT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Copy() const {
+ Call(SCI_COPY, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Paste() const {
+ Call(SCI_PASTE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Clear() const {
+ Call(SCI_CLEAR, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetText(const char* text) const {
+ Call(SCI_SETTEXT, SCI_UNUSED, text);
+ }
+
+ int GetText(int length, char* text) const {
+ sptr_t res = Call(SCI_GETTEXT, length, text);
+ return static_cast(res);
+ }
+
+ int GetTextLength() const {
+ sptr_t res = Call(SCI_GETTEXTLENGTH, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ sptr_t GetDirectFunction() const {
+ sptr_t res = Call(SCI_GETDIRECTFUNCTION, SCI_UNUSED, SCI_UNUSED);
+ return res;
+ }
+
+ sptr_t GetDirectPointer() const {
+ sptr_t res = Call(SCI_GETDIRECTPOINTER, SCI_UNUSED, SCI_UNUSED);
+ return res;
+ }
+
+ void SetOvertype(bool overtype) const {
+ Call(SCI_SETOVERTYPE, overtype, SCI_UNUSED);
+ }
+
+ bool GetOvertype() const {
+ sptr_t res = Call(SCI_GETOVERTYPE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetCaretWidth(int pixelWidth) const {
+ Call(SCI_SETCARETWIDTH, pixelWidth, SCI_UNUSED);
+ }
+
+ int GetCaretWidth() const {
+ sptr_t res = Call(SCI_GETCARETWIDTH, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetTargetStart(int pos) const {
+ Call(SCI_SETTARGETSTART, pos, SCI_UNUSED);
+ }
+
+ int GetTargetStart() const {
+ sptr_t res = Call(SCI_GETTARGETSTART, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetTargetEnd(int pos) const {
+ Call(SCI_SETTARGETEND, pos, SCI_UNUSED);
+ }
+
+ int GetTargetEnd() const {
+ sptr_t res = Call(SCI_GETTARGETEND, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetTargetRange(int start, int end) const {
+ Call(SCI_SETTARGETRANGE, start, end);
+ }
+
+ int GetTargetText(char* characters) const {
+ sptr_t res = Call(SCI_GETTARGETTEXT, SCI_UNUSED, characters);
+ return static_cast(res);
+ }
+
+ int ReplaceTarget(int length, const char* text) const {
+ sptr_t res = Call(SCI_REPLACETARGET, length, text);
+ return static_cast(res);
+ }
+
+ int ReplaceTargetRE(int length, const char* text) const {
+ sptr_t res = Call(SCI_REPLACETARGETRE, length, text);
+ return static_cast(res);
+ }
+
+ int SearchInTarget(int length, const char* text) const {
+ sptr_t res = Call(SCI_SEARCHINTARGET, length, text);
+ return static_cast(res);
+ }
+
+ void SetSearchFlags(int flags) const {
+ Call(SCI_SETSEARCHFLAGS, flags, SCI_UNUSED);
+ }
+
+ int GetSearchFlags() const {
+ sptr_t res = Call(SCI_GETSEARCHFLAGS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void CallTipShow(int pos, const char* definition) const {
+ Call(SCI_CALLTIPSHOW, pos, definition);
+ }
+
+ void CallTipCancel() const {
+ Call(SCI_CALLTIPCANCEL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ bool CallTipActive() const {
+ sptr_t res = Call(SCI_CALLTIPACTIVE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int CallTipPosStart() const {
+ sptr_t res = Call(SCI_CALLTIPPOSSTART, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void CallTipSetPosStart(int posStart) const {
+ Call(SCI_CALLTIPSETPOSSTART, posStart, SCI_UNUSED);
+ }
+
+ void CallTipSetHlt(int start, int end) const {
+ Call(SCI_CALLTIPSETHLT, start, end);
+ }
+
+ void CallTipSetBack(Colour back) const {
+ Call(SCI_CALLTIPSETBACK, back, SCI_UNUSED);
+ }
+
+ void CallTipSetFore(Colour fore) const {
+ Call(SCI_CALLTIPSETFORE, fore, SCI_UNUSED);
+ }
+
+ void CallTipSetForeHlt(Colour fore) const {
+ Call(SCI_CALLTIPSETFOREHLT, fore, SCI_UNUSED);
+ }
+
+ void CallTipUseStyle(int tabSize) const {
+ Call(SCI_CALLTIPUSESTYLE, tabSize, SCI_UNUSED);
+ }
+
+ void CallTipSetPosition(bool above) const {
+ Call(SCI_CALLTIPSETPOSITION, above, SCI_UNUSED);
+ }
+
+ int VisibleFromDocLine(int line) const {
+ sptr_t res = Call(SCI_VISIBLEFROMDOCLINE, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int DocLineFromVisible(int lineDisplay) const {
+ sptr_t res = Call(SCI_DOCLINEFROMVISIBLE, lineDisplay, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int WrapCount(int line) const {
+ sptr_t res = Call(SCI_WRAPCOUNT, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetFoldLevel(int line, int level) const {
+ Call(SCI_SETFOLDLEVEL, line, level);
+ }
+
+ int GetFoldLevel(int line) const {
+ sptr_t res = Call(SCI_GETFOLDLEVEL, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLastChild(int line, int level) const {
+ sptr_t res = Call(SCI_GETLASTCHILD, line, level);
+ return static_cast(res);
+ }
+
+ int GetFoldParent(int line) const {
+ sptr_t res = Call(SCI_GETFOLDPARENT, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void ShowLines(int lineStart, int lineEnd) const {
+ Call(SCI_SHOWLINES, lineStart, lineEnd);
+ }
+
+ void HideLines(int lineStart, int lineEnd) const {
+ Call(SCI_HIDELINES, lineStart, lineEnd);
+ }
+
+ bool GetLineVisible(int line) const {
+ sptr_t res = Call(SCI_GETLINEVISIBLE, line, SCI_UNUSED);
+ return res != 0;
+ }
+
+ bool GetAllLinesVisible() const {
+ sptr_t res = Call(SCI_GETALLLINESVISIBLE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetFoldExpanded(int line, bool expanded) const {
+ Call(SCI_SETFOLDEXPANDED, line, expanded);
+ }
+
+ bool GetFoldExpanded(int line) const {
+ sptr_t res = Call(SCI_GETFOLDEXPANDED, line, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void ToggleFold(int line) const {
+ Call(SCI_TOGGLEFOLD, line, SCI_UNUSED);
+ }
+
+ void FoldLine(int line, int action) const {
+ Call(SCI_FOLDLINE, line, action);
+ }
+
+ void FoldChildren(int line, int action) const {
+ Call(SCI_FOLDCHILDREN, line, action);
+ }
+
+ void ExpandChildren(int line, int level) const {
+ Call(SCI_EXPANDCHILDREN, line, level);
+ }
+
+ void FoldAll(int action) const {
+ Call(SCI_FOLDALL, action, SCI_UNUSED);
+ }
+
+ void EnsureVisible(int line) const {
+ Call(SCI_ENSUREVISIBLE, line, SCI_UNUSED);
+ }
+
+ void SetAutomaticFold(int automaticFold) const {
+ Call(SCI_SETAUTOMATICFOLD, automaticFold, SCI_UNUSED);
+ }
+
+ int GetAutomaticFold() const {
+ sptr_t res = Call(SCI_GETAUTOMATICFOLD, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetFoldFlags(int flags) const {
+ Call(SCI_SETFOLDFLAGS, flags, SCI_UNUSED);
+ }
+
+ void EnsureVisibleEnforcePolicy(int line) const {
+ Call(SCI_ENSUREVISIBLEENFORCEPOLICY, line, SCI_UNUSED);
+ }
+
+ void SetTabIndents(bool tabIndents) const {
+ Call(SCI_SETTABINDENTS, tabIndents, SCI_UNUSED);
+ }
+
+ bool GetTabIndents() const {
+ sptr_t res = Call(SCI_GETTABINDENTS, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetBackSpaceUnIndents(bool bsUnIndents) const {
+ Call(SCI_SETBACKSPACEUNINDENTS, bsUnIndents, SCI_UNUSED);
+ }
+
+ bool GetBackSpaceUnIndents() const {
+ sptr_t res = Call(SCI_GETBACKSPACEUNINDENTS, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetMouseDwellTime(int periodMilliseconds) const {
+ Call(SCI_SETMOUSEDWELLTIME, periodMilliseconds, SCI_UNUSED);
+ }
+
+ int GetMouseDwellTime() const {
+ sptr_t res = Call(SCI_GETMOUSEDWELLTIME, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int WordStartPosition(int pos, bool onlyWordCharacters) const {
+ sptr_t res = Call(SCI_WORDSTARTPOSITION, pos, onlyWordCharacters);
+ return static_cast(res);
+ }
+
+ int WordEndPosition(int pos, bool onlyWordCharacters) const {
+ sptr_t res = Call(SCI_WORDENDPOSITION, pos, onlyWordCharacters);
+ return static_cast(res);
+ }
+
+ void SetWrapMode(int mode) const {
+ Call(SCI_SETWRAPMODE, mode, SCI_UNUSED);
+ }
+
+ int GetWrapMode() const {
+ sptr_t res = Call(SCI_GETWRAPMODE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetWrapVisualFlags(int wrapVisualFlags) const {
+ Call(SCI_SETWRAPVISUALFLAGS, wrapVisualFlags, SCI_UNUSED);
+ }
+
+ int GetWrapVisualFlags() const {
+ sptr_t res = Call(SCI_GETWRAPVISUALFLAGS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation) const {
+ Call(SCI_SETWRAPVISUALFLAGSLOCATION, wrapVisualFlagsLocation, SCI_UNUSED);
+ }
+
+ int GetWrapVisualFlagsLocation() const {
+ sptr_t res = Call(SCI_GETWRAPVISUALFLAGSLOCATION, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetWrapStartIndent(int indent) const {
+ Call(SCI_SETWRAPSTARTINDENT, indent, SCI_UNUSED);
+ }
+
+ int GetWrapStartIndent() const {
+ sptr_t res = Call(SCI_GETWRAPSTARTINDENT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetWrapIndentMode(int mode) const {
+ Call(SCI_SETWRAPINDENTMODE, mode, SCI_UNUSED);
+ }
+
+ int GetWrapIndentMode() const {
+ sptr_t res = Call(SCI_GETWRAPINDENTMODE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetLayoutCache(int mode) const {
+ Call(SCI_SETLAYOUTCACHE, mode, SCI_UNUSED);
+ }
+
+ int GetLayoutCache() const {
+ sptr_t res = Call(SCI_GETLAYOUTCACHE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetScrollWidth(int pixelWidth) const {
+ Call(SCI_SETSCROLLWIDTH, pixelWidth, SCI_UNUSED);
+ }
+
+ int GetScrollWidth() const {
+ sptr_t res = Call(SCI_GETSCROLLWIDTH, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetScrollWidthTracking(bool tracking) const {
+ Call(SCI_SETSCROLLWIDTHTRACKING, tracking, SCI_UNUSED);
+ }
+
+ bool GetScrollWidthTracking() const {
+ sptr_t res = Call(SCI_GETSCROLLWIDTHTRACKING, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int TextWidth(int style, const char* text) const {
+ sptr_t res = Call(SCI_TEXTWIDTH, style, text);
+ return static_cast(res);
+ }
+
+ void SetEndAtLastLine(bool endAtLastLine) const {
+ Call(SCI_SETENDATLASTLINE, endAtLastLine, SCI_UNUSED);
+ }
+
+ bool GetEndAtLastLine() const {
+ sptr_t res = Call(SCI_GETENDATLASTLINE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int TextHeight(int line) const {
+ sptr_t res = Call(SCI_TEXTHEIGHT, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetVScrollBar(bool show) const {
+ Call(SCI_SETVSCROLLBAR, show, SCI_UNUSED);
+ }
+
+ bool GetVScrollBar() const {
+ sptr_t res = Call(SCI_GETVSCROLLBAR, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void AppendText(int length, const char* text) const {
+ Call(SCI_APPENDTEXT, length, text);
+ }
+
+ bool GetTwoPhaseDraw() const {
+ sptr_t res = Call(SCI_GETTWOPHASEDRAW, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetTwoPhaseDraw(bool twoPhase) const {
+ Call(SCI_SETTWOPHASEDRAW, twoPhase, SCI_UNUSED);
+ }
+
+ int GetPhasesDraw() const {
+ sptr_t res = Call(SCI_GETPHASESDRAW, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetPhasesDraw(int phases) const {
+ Call(SCI_SETPHASESDRAW, phases, SCI_UNUSED);
+ }
+
+ void SetFontQuality(int fontQuality) const {
+ Call(SCI_SETFONTQUALITY, fontQuality, SCI_UNUSED);
+ }
+
+ int GetFontQuality() const {
+ sptr_t res = Call(SCI_GETFONTQUALITY, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetFirstVisibleLine(int lineDisplay) const {
+ Call(SCI_SETFIRSTVISIBLELINE, lineDisplay, SCI_UNUSED);
+ }
+
+ void SetMultiPaste(int multiPaste) const {
+ Call(SCI_SETMULTIPASTE, multiPaste, SCI_UNUSED);
+ }
+
+ int GetMultiPaste() const {
+ sptr_t res = Call(SCI_GETMULTIPASTE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetTag(int tagNumber, char* tagValue) const {
+ sptr_t res = Call(SCI_GETTAG, tagNumber, tagValue);
+ return static_cast(res);
+ }
+
+ void TargetFromSelection() const {
+ Call(SCI_TARGETFROMSELECTION, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LinesJoin() const {
+ Call(SCI_LINESJOIN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LinesSplit(int pixelWidth) const {
+ Call(SCI_LINESSPLIT, pixelWidth, SCI_UNUSED);
+ }
+
+ void SetFoldMarginColour(bool useSetting, Colour back) const {
+ Call(SCI_SETFOLDMARGINCOLOUR, useSetting, back);
+ }
+
+ void SetFoldMarginHiColour(bool useSetting, Colour fore) const {
+ Call(SCI_SETFOLDMARGINHICOLOUR, useSetting, fore);
+ }
+
+ void LineDown() const {
+ Call(SCI_LINEDOWN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineDownExtend() const {
+ Call(SCI_LINEDOWNEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineUp() const {
+ Call(SCI_LINEUP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineUpExtend() const {
+ Call(SCI_LINEUPEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void CharLeft() const {
+ Call(SCI_CHARLEFT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void CharLeftExtend() const {
+ Call(SCI_CHARLEFTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void CharRight() const {
+ Call(SCI_CHARRIGHT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void CharRightExtend() const {
+ Call(SCI_CHARRIGHTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordLeft() const {
+ Call(SCI_WORDLEFT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordLeftExtend() const {
+ Call(SCI_WORDLEFTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordRight() const {
+ Call(SCI_WORDRIGHT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordRightExtend() const {
+ Call(SCI_WORDRIGHTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Home() const {
+ Call(SCI_HOME, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void HomeExtend() const {
+ Call(SCI_HOMEEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineEnd() const {
+ Call(SCI_LINEEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineEndExtend() const {
+ Call(SCI_LINEENDEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DocumentStart() const {
+ Call(SCI_DOCUMENTSTART, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DocumentStartExtend() const {
+ Call(SCI_DOCUMENTSTARTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DocumentEnd() const {
+ Call(SCI_DOCUMENTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DocumentEndExtend() const {
+ Call(SCI_DOCUMENTENDEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void PageUp() const {
+ Call(SCI_PAGEUP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void PageUpExtend() const {
+ Call(SCI_PAGEUPEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void PageDown() const {
+ Call(SCI_PAGEDOWN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void PageDownExtend() const {
+ Call(SCI_PAGEDOWNEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void EditToggleOvertype() const {
+ Call(SCI_EDITTOGGLEOVERTYPE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Cancel() const {
+ Call(SCI_CANCEL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DeleteBack() const {
+ Call(SCI_DELETEBACK, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void Tab() const {
+ Call(SCI_TAB, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void BackTab() const {
+ Call(SCI_BACKTAB, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void NewLine() const {
+ Call(SCI_NEWLINE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void FormFeed() const {
+ Call(SCI_FORMFEED, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void VCHome() const {
+ Call(SCI_VCHOME, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void VCHomeExtend() const {
+ Call(SCI_VCHOMEEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void ZoomIn() const {
+ Call(SCI_ZOOMIN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void ZoomOut() const {
+ Call(SCI_ZOOMOUT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DelWordLeft() const {
+ Call(SCI_DELWORDLEFT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DelWordRight() const {
+ Call(SCI_DELWORDRIGHT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DelWordRightEnd() const {
+ Call(SCI_DELWORDRIGHTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineCut() const {
+ Call(SCI_LINECUT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineDelete() const {
+ Call(SCI_LINEDELETE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineTranspose() const {
+ Call(SCI_LINETRANSPOSE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineDuplicate() const {
+ Call(SCI_LINEDUPLICATE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LowerCase() const {
+ Call(SCI_LOWERCASE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void UpperCase() const {
+ Call(SCI_UPPERCASE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineScrollDown() const {
+ Call(SCI_LINESCROLLDOWN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineScrollUp() const {
+ Call(SCI_LINESCROLLUP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DeleteBackNotLine() const {
+ Call(SCI_DELETEBACKNOTLINE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void HomeDisplay() const {
+ Call(SCI_HOMEDISPLAY, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void HomeDisplayExtend() const {
+ Call(SCI_HOMEDISPLAYEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineEndDisplay() const {
+ Call(SCI_LINEENDDISPLAY, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineEndDisplayExtend() const {
+ Call(SCI_LINEENDDISPLAYEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void HomeWrap() const {
+ Call(SCI_HOMEWRAP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void HomeWrapExtend() const {
+ Call(SCI_HOMEWRAPEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineEndWrap() const {
+ Call(SCI_LINEENDWRAP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineEndWrapExtend() const {
+ Call(SCI_LINEENDWRAPEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void VCHomeWrap() const {
+ Call(SCI_VCHOMEWRAP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void VCHomeWrapExtend() const {
+ Call(SCI_VCHOMEWRAPEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineCopy() const {
+ Call(SCI_LINECOPY, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void MoveCaretInsideView() const {
+ Call(SCI_MOVECARETINSIDEVIEW, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int LineLength(int line) const {
+ sptr_t res = Call(SCI_LINELENGTH, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void BraceHighlight(int pos1, int pos2) const {
+ Call(SCI_BRACEHIGHLIGHT, pos1, pos2);
+ }
+
+ void BraceHighlightIndicator(bool useBraceHighlightIndicator, int indicator) const {
+ Call(SCI_BRACEHIGHLIGHTINDICATOR, useBraceHighlightIndicator, indicator);
+ }
+
+ void BraceBadLight(int pos) const {
+ Call(SCI_BRACEBADLIGHT, pos, SCI_UNUSED);
+ }
+
+ void BraceBadLightIndicator(bool useBraceBadLightIndicator, int indicator) const {
+ Call(SCI_BRACEBADLIGHTINDICATOR, useBraceBadLightIndicator, indicator);
+ }
+
+ int BraceMatch(int pos) const {
+ sptr_t res = Call(SCI_BRACEMATCH, pos, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ bool GetViewEOL() const {
+ sptr_t res = Call(SCI_GETVIEWEOL, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetViewEOL(bool visible) const {
+ Call(SCI_SETVIEWEOL, visible, SCI_UNUSED);
+ }
+
+ sptr_t GetDocPointer() const {
+ sptr_t res = Call(SCI_GETDOCPOINTER, SCI_UNUSED, SCI_UNUSED);
+ return res;
+ }
+
+ void SetDocPointer(sptr_t pointer) const {
+ Call(SCI_SETDOCPOINTER, SCI_UNUSED, pointer);
+ }
+
+ void SetModEventMask(int mask) const {
+ Call(SCI_SETMODEVENTMASK, mask, SCI_UNUSED);
+ }
+
+ int GetEdgeColumn() const {
+ sptr_t res = Call(SCI_GETEDGECOLUMN, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetEdgeColumn(int column) const {
+ Call(SCI_SETEDGECOLUMN, column, SCI_UNUSED);
+ }
+
+ int GetEdgeMode() const {
+ sptr_t res = Call(SCI_GETEDGEMODE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetEdgeMode(int mode) const {
+ Call(SCI_SETEDGEMODE, mode, SCI_UNUSED);
+ }
+
+ Colour GetEdgeColour() const {
+ sptr_t res = Call(SCI_GETEDGECOLOUR, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetEdgeColour(Colour edgeColour) const {
+ Call(SCI_SETEDGECOLOUR, edgeColour, SCI_UNUSED);
+ }
+
+ void SearchAnchor() const {
+ Call(SCI_SEARCHANCHOR, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int SearchNext(int flags, const char* text) const {
+ sptr_t res = Call(SCI_SEARCHNEXT, flags, text);
+ return static_cast(res);
+ }
+
+ int SearchPrev(int flags, const char* text) const {
+ sptr_t res = Call(SCI_SEARCHPREV, flags, text);
+ return static_cast(res);
+ }
+
+ int LinesOnScreen() const {
+ sptr_t res = Call(SCI_LINESONSCREEN, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void UsePopUp(bool allowPopUp) const {
+ Call(SCI_USEPOPUP, allowPopUp, SCI_UNUSED);
+ }
+
+ bool SelectionIsRectangle() const {
+ sptr_t res = Call(SCI_SELECTIONISRECTANGLE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetZoom(int zoom) const {
+ Call(SCI_SETZOOM, zoom, SCI_UNUSED);
+ }
+
+ int GetZoom() const {
+ sptr_t res = Call(SCI_GETZOOM, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ sptr_t CreateDocument() const {
+ sptr_t res = Call(SCI_CREATEDOCUMENT, SCI_UNUSED, SCI_UNUSED);
+ return res;
+ }
+
+ void AddRefDocument(sptr_t doc) const {
+ Call(SCI_ADDREFDOCUMENT, SCI_UNUSED, doc);
+ }
+
+ void ReleaseDocument(sptr_t doc) const {
+ Call(SCI_RELEASEDOCUMENT, SCI_UNUSED, doc);
+ }
+
+ int GetModEventMask() const {
+ sptr_t res = Call(SCI_GETMODEVENTMASK, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetFocus(bool focus) const {
+ Call(SCI_SETFOCUS, focus, SCI_UNUSED);
+ }
+
+ bool GetFocus() const {
+ sptr_t res = Call(SCI_GETFOCUS, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetStatus(int statusCode) const {
+ Call(SCI_SETSTATUS, statusCode, SCI_UNUSED);
+ }
+
+ int GetStatus() const {
+ sptr_t res = Call(SCI_GETSTATUS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetMouseDownCaptures(bool captures) const {
+ Call(SCI_SETMOUSEDOWNCAPTURES, captures, SCI_UNUSED);
+ }
+
+ bool GetMouseDownCaptures() const {
+ sptr_t res = Call(SCI_GETMOUSEDOWNCAPTURES, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetCursor(int cursorType) const {
+ Call(SCI_SETCURSOR, cursorType, SCI_UNUSED);
+ }
+
+ int GetCursor() const {
+ sptr_t res = Call(SCI_GETCURSOR, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetControlCharSymbol(int symbol) const {
+ Call(SCI_SETCONTROLCHARSYMBOL, symbol, SCI_UNUSED);
+ }
+
+ int GetControlCharSymbol() const {
+ sptr_t res = Call(SCI_GETCONTROLCHARSYMBOL, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void WordPartLeft() const {
+ Call(SCI_WORDPARTLEFT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordPartLeftExtend() const {
+ Call(SCI_WORDPARTLEFTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordPartRight() const {
+ Call(SCI_WORDPARTRIGHT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordPartRightExtend() const {
+ Call(SCI_WORDPARTRIGHTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetVisiblePolicy(int visiblePolicy, int visibleSlop) const {
+ Call(SCI_SETVISIBLEPOLICY, visiblePolicy, visibleSlop);
+ }
+
+ void DelLineLeft() const {
+ Call(SCI_DELLINELEFT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void DelLineRight() const {
+ Call(SCI_DELLINERIGHT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetXOffset(int newOffset) const {
+ Call(SCI_SETXOFFSET, newOffset, SCI_UNUSED);
+ }
+
+ int GetXOffset() const {
+ sptr_t res = Call(SCI_GETXOFFSET, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void ChooseCaretX() const {
+ Call(SCI_CHOOSECARETX, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void GrabFocus() const {
+ Call(SCI_GRABFOCUS, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetXCaretPolicy(int caretPolicy, int caretSlop) const {
+ Call(SCI_SETXCARETPOLICY, caretPolicy, caretSlop);
+ }
+
+ void SetYCaretPolicy(int caretPolicy, int caretSlop) const {
+ Call(SCI_SETYCARETPOLICY, caretPolicy, caretSlop);
+ }
+
+ void SetPrintWrapMode(int mode) const {
+ Call(SCI_SETPRINTWRAPMODE, mode, SCI_UNUSED);
+ }
+
+ int GetPrintWrapMode() const {
+ sptr_t res = Call(SCI_GETPRINTWRAPMODE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetHotspotActiveFore(bool useSetting, Colour fore) const {
+ Call(SCI_SETHOTSPOTACTIVEFORE, useSetting, fore);
+ }
+
+ Colour GetHotspotActiveFore() const {
+ sptr_t res = Call(SCI_GETHOTSPOTACTIVEFORE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetHotspotActiveBack(bool useSetting, Colour back) const {
+ Call(SCI_SETHOTSPOTACTIVEBACK, useSetting, back);
+ }
+
+ Colour GetHotspotActiveBack() const {
+ sptr_t res = Call(SCI_GETHOTSPOTACTIVEBACK, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetHotspotActiveUnderline(bool underline) const {
+ Call(SCI_SETHOTSPOTACTIVEUNDERLINE, underline, SCI_UNUSED);
+ }
+
+ bool GetHotspotActiveUnderline() const {
+ sptr_t res = Call(SCI_GETHOTSPOTACTIVEUNDERLINE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetHotspotSingleLine(bool singleLine) const {
+ Call(SCI_SETHOTSPOTSINGLELINE, singleLine, SCI_UNUSED);
+ }
+
+ bool GetHotspotSingleLine() const {
+ sptr_t res = Call(SCI_GETHOTSPOTSINGLELINE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void ParaDown() const {
+ Call(SCI_PARADOWN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void ParaDownExtend() const {
+ Call(SCI_PARADOWNEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void ParaUp() const {
+ Call(SCI_PARAUP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void ParaUpExtend() const {
+ Call(SCI_PARAUPEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int PositionBefore(int pos) const {
+ sptr_t res = Call(SCI_POSITIONBEFORE, pos, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int PositionAfter(int pos) const {
+ sptr_t res = Call(SCI_POSITIONAFTER, pos, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int PositionRelative(int pos, int relative) const {
+ sptr_t res = Call(SCI_POSITIONRELATIVE, pos, relative);
+ return static_cast(res);
+ }
+
+ void CopyRange(int start, int end) const {
+ Call(SCI_COPYRANGE, start, end);
+ }
+
+ void CopyText(int length, const char* text) const {
+ Call(SCI_COPYTEXT, length, text);
+ }
+
+ void SetSelectionMode(int mode) const {
+ Call(SCI_SETSELECTIONMODE, mode, SCI_UNUSED);
+ }
+
+ int GetSelectionMode() const {
+ sptr_t res = Call(SCI_GETSELECTIONMODE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLineSelStartPosition(int line) const {
+ sptr_t res = Call(SCI_GETLINESELSTARTPOSITION, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLineSelEndPosition(int line) const {
+ sptr_t res = Call(SCI_GETLINESELENDPOSITION, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void LineDownRectExtend() const {
+ Call(SCI_LINEDOWNRECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineUpRectExtend() const {
+ Call(SCI_LINEUPRECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void CharLeftRectExtend() const {
+ Call(SCI_CHARLEFTRECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void CharRightRectExtend() const {
+ Call(SCI_CHARRIGHTRECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void HomeRectExtend() const {
+ Call(SCI_HOMERECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void VCHomeRectExtend() const {
+ Call(SCI_VCHOMERECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void LineEndRectExtend() const {
+ Call(SCI_LINEENDRECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void PageUpRectExtend() const {
+ Call(SCI_PAGEUPRECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void PageDownRectExtend() const {
+ Call(SCI_PAGEDOWNRECTEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void StutteredPageUp() const {
+ Call(SCI_STUTTEREDPAGEUP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void StutteredPageUpExtend() const {
+ Call(SCI_STUTTEREDPAGEUPEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void StutteredPageDown() const {
+ Call(SCI_STUTTEREDPAGEDOWN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void StutteredPageDownExtend() const {
+ Call(SCI_STUTTEREDPAGEDOWNEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordLeftEnd() const {
+ Call(SCI_WORDLEFTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordLeftEndExtend() const {
+ Call(SCI_WORDLEFTENDEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordRightEnd() const {
+ Call(SCI_WORDRIGHTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void WordRightEndExtend() const {
+ Call(SCI_WORDRIGHTENDEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetWhitespaceChars(const char* characters) const {
+ Call(SCI_SETWHITESPACECHARS, SCI_UNUSED, characters);
+ }
+
+ int GetWhitespaceChars(char* characters) const {
+ sptr_t res = Call(SCI_GETWHITESPACECHARS, SCI_UNUSED, characters);
+ return static_cast(res);
+ }
+
+ void SetPunctuationChars(const char* characters) const {
+ Call(SCI_SETPUNCTUATIONCHARS, SCI_UNUSED, characters);
+ }
+
+ int GetPunctuationChars(char* characters) const {
+ sptr_t res = Call(SCI_GETPUNCTUATIONCHARS, SCI_UNUSED, characters);
+ return static_cast(res);
+ }
+
+ void SetCharsDefault() const {
+ Call(SCI_SETCHARSDEFAULT, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int AutoCGetCurrent() const {
+ sptr_t res = Call(SCI_AUTOCGETCURRENT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int AutoCGetCurrentText(char* s) const {
+ sptr_t res = Call(SCI_AUTOCGETCURRENTTEXT, SCI_UNUSED, s);
+ return static_cast(res);
+ }
+
+ void AutoCSetCaseInsensitiveBehaviour(int behaviour) const {
+ Call(SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR, behaviour, SCI_UNUSED);
+ }
+
+ int AutoCGetCaseInsensitiveBehaviour() const {
+ sptr_t res = Call(SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AutoCSetMulti(int multi) const {
+ Call(SCI_AUTOCSETMULTI, multi, SCI_UNUSED);
+ }
+
+ int AutoCGetMulti() const {
+ sptr_t res = Call(SCI_AUTOCGETMULTI, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AutoCSetOrder(int order) const {
+ Call(SCI_AUTOCSETORDER, order, SCI_UNUSED);
+ }
+
+ int AutoCGetOrder() const {
+ sptr_t res = Call(SCI_AUTOCGETORDER, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void Allocate(int bytes) const {
+ Call(SCI_ALLOCATE, bytes, SCI_UNUSED);
+ }
+
+ int TargetAsUTF8(char* s) const {
+ sptr_t res = Call(SCI_TARGETASUTF8, SCI_UNUSED, s);
+ return static_cast(res);
+ }
+
+ void SetLengthForEncode(int bytes) const {
+ Call(SCI_SETLENGTHFORENCODE, bytes, SCI_UNUSED);
+ }
+
+ int EncodedFromUTF8(const char* utf8, char* encoded) const {
+ sptr_t res = Call(SCI_ENCODEDFROMUTF8, utf8, encoded);
+ return static_cast(res);
+ }
+
+ int FindColumn(int line, int column) const {
+ sptr_t res = Call(SCI_FINDCOLUMN, line, column);
+ return static_cast(res);
+ }
+
+ int GetCaretSticky() const {
+ sptr_t res = Call(SCI_GETCARETSTICKY, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetCaretSticky(int useCaretStickyBehaviour) const {
+ Call(SCI_SETCARETSTICKY, useCaretStickyBehaviour, SCI_UNUSED);
+ }
+
+ void ToggleCaretSticky() const {
+ Call(SCI_TOGGLECARETSTICKY, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetPasteConvertEndings(bool convert) const {
+ Call(SCI_SETPASTECONVERTENDINGS, convert, SCI_UNUSED);
+ }
+
+ bool GetPasteConvertEndings() const {
+ sptr_t res = Call(SCI_GETPASTECONVERTENDINGS, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SelectionDuplicate() const {
+ Call(SCI_SELECTIONDUPLICATE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetCaretLineBackAlpha(int alpha) const {
+ Call(SCI_SETCARETLINEBACKALPHA, alpha, SCI_UNUSED);
+ }
+
+ int GetCaretLineBackAlpha() const {
+ sptr_t res = Call(SCI_GETCARETLINEBACKALPHA, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetCaretStyle(int caretStyle) const {
+ Call(SCI_SETCARETSTYLE, caretStyle, SCI_UNUSED);
+ }
+
+ int GetCaretStyle() const {
+ sptr_t res = Call(SCI_GETCARETSTYLE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetIndicatorCurrent(int indicator) const {
+ Call(SCI_SETINDICATORCURRENT, indicator, SCI_UNUSED);
+ }
+
+ int GetIndicatorCurrent() const {
+ sptr_t res = Call(SCI_GETINDICATORCURRENT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetIndicatorValue(int value) const {
+ Call(SCI_SETINDICATORVALUE, value, SCI_UNUSED);
+ }
+
+ int GetIndicatorValue() const {
+ sptr_t res = Call(SCI_GETINDICATORVALUE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void IndicatorFillRange(int position, int fillLength) const {
+ Call(SCI_INDICATORFILLRANGE, position, fillLength);
+ }
+
+ void IndicatorClearRange(int position, int clearLength) const {
+ Call(SCI_INDICATORCLEARRANGE, position, clearLength);
+ }
+
+ int IndicatorAllOnFor(int position) const {
+ sptr_t res = Call(SCI_INDICATORALLONFOR, position, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int IndicatorValueAt(int indicator, int position) const {
+ sptr_t res = Call(SCI_INDICATORVALUEAT, indicator, position);
+ return static_cast(res);
+ }
+
+ int IndicatorStart(int indicator, int position) const {
+ sptr_t res = Call(SCI_INDICATORSTART, indicator, position);
+ return static_cast(res);
+ }
+
+ int IndicatorEnd(int indicator, int position) const {
+ sptr_t res = Call(SCI_INDICATOREND, indicator, position);
+ return static_cast(res);
+ }
+
+ void SetPositionCache(int size) const {
+ Call(SCI_SETPOSITIONCACHE, size, SCI_UNUSED);
+ }
+
+ int GetPositionCache() const {
+ sptr_t res = Call(SCI_GETPOSITIONCACHE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void CopyAllowLine() const {
+ Call(SCI_COPYALLOWLINE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ const char* GetCharacterPointer() const {
+ sptr_t res = Call(SCI_GETCHARACTERPOINTER, SCI_UNUSED, SCI_UNUSED);
+ return reinterpret_cast(res);
+ }
+
+ const char* GetRangePointer(int position, int rangeLength) const {
+ sptr_t res = Call(SCI_GETRANGEPOINTER, position, rangeLength);
+ return reinterpret_cast(res);
+ }
+
+ int GetGapPosition() const {
+ sptr_t res = Call(SCI_GETGAPPOSITION, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void IndicSetAlpha(int indicator, int alpha) const {
+ Call(SCI_INDICSETALPHA, indicator, alpha);
+ }
+
+ int IndicGetAlpha(int indicator) const {
+ sptr_t res = Call(SCI_INDICGETALPHA, indicator, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void IndicSetOutlineAlpha(int indicator, int alpha) const {
+ Call(SCI_INDICSETOUTLINEALPHA, indicator, alpha);
+ }
+
+ int IndicGetOutlineAlpha(int indicator) const {
+ sptr_t res = Call(SCI_INDICGETOUTLINEALPHA, indicator, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetExtraAscent(int extraAscent) const {
+ Call(SCI_SETEXTRAASCENT, extraAscent, SCI_UNUSED);
+ }
+
+ int GetExtraAscent() const {
+ sptr_t res = Call(SCI_GETEXTRAASCENT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetExtraDescent(int extraDescent) const {
+ Call(SCI_SETEXTRADESCENT, extraDescent, SCI_UNUSED);
+ }
+
+ int GetExtraDescent() const {
+ sptr_t res = Call(SCI_GETEXTRADESCENT, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int MarkerSymbolDefined(int markerNumber) const {
+ sptr_t res = Call(SCI_MARKERSYMBOLDEFINED, markerNumber, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void MarginSetText(int line, const char* text) const {
+ Call(SCI_MARGINSETTEXT, line, text);
+ }
+
+ int MarginGetText(int line, char* text) const {
+ sptr_t res = Call(SCI_MARGINGETTEXT, line, text);
+ return static_cast(res);
+ }
+
+ void MarginSetStyle(int line, int style) const {
+ Call(SCI_MARGINSETSTYLE, line, style);
+ }
+
+ int MarginGetStyle(int line) const {
+ sptr_t res = Call(SCI_MARGINGETSTYLE, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void MarginSetStyles(int line, const char* styles) const {
+ Call(SCI_MARGINSETSTYLES, line, styles);
+ }
+
+ int MarginGetStyles(int line, char* styles) const {
+ sptr_t res = Call(SCI_MARGINGETSTYLES, line, styles);
+ return static_cast(res);
+ }
+
+ void MarginTextClearAll() const {
+ Call(SCI_MARGINTEXTCLEARALL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void MarginSetStyleOffset(int style) const {
+ Call(SCI_MARGINSETSTYLEOFFSET, style, SCI_UNUSED);
+ }
+
+ int MarginGetStyleOffset() const {
+ sptr_t res = Call(SCI_MARGINGETSTYLEOFFSET, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetMarginOptions(int marginOptions) const {
+ Call(SCI_SETMARGINOPTIONS, marginOptions, SCI_UNUSED);
+ }
+
+ int GetMarginOptions() const {
+ sptr_t res = Call(SCI_GETMARGINOPTIONS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AnnotationSetText(int line, const char* text) const {
+ Call(SCI_ANNOTATIONSETTEXT, line, text);
+ }
+
+ int AnnotationGetText(int line, char* text) const {
+ sptr_t res = Call(SCI_ANNOTATIONGETTEXT, line, text);
+ return static_cast(res);
+ }
+
+ void AnnotationSetStyle(int line, int style) const {
+ Call(SCI_ANNOTATIONSETSTYLE, line, style);
+ }
+
+ int AnnotationGetStyle(int line) const {
+ sptr_t res = Call(SCI_ANNOTATIONGETSTYLE, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AnnotationSetStyles(int line, const char* styles) const {
+ Call(SCI_ANNOTATIONSETSTYLES, line, styles);
+ }
+
+ int AnnotationGetStyles(int line, char* styles) const {
+ sptr_t res = Call(SCI_ANNOTATIONGETSTYLES, line, styles);
+ return static_cast(res);
+ }
+
+ int AnnotationGetLines(int line) const {
+ sptr_t res = Call(SCI_ANNOTATIONGETLINES, line, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AnnotationClearAll() const {
+ Call(SCI_ANNOTATIONCLEARALL, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void AnnotationSetVisible(int visible) const {
+ Call(SCI_ANNOTATIONSETVISIBLE, visible, SCI_UNUSED);
+ }
+
+ int AnnotationGetVisible() const {
+ sptr_t res = Call(SCI_ANNOTATIONGETVISIBLE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AnnotationSetStyleOffset(int style) const {
+ Call(SCI_ANNOTATIONSETSTYLEOFFSET, style, SCI_UNUSED);
+ }
+
+ int AnnotationGetStyleOffset() const {
+ sptr_t res = Call(SCI_ANNOTATIONGETSTYLEOFFSET, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void ReleaseAllExtendedStyles() const {
+ Call(SCI_RELEASEALLEXTENDEDSTYLES, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int AllocateExtendedStyles(int numberStyles) const {
+ sptr_t res = Call(SCI_ALLOCATEEXTENDEDSTYLES, numberStyles, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void AddUndoAction(int token, int flags) const {
+ Call(SCI_ADDUNDOACTION, token, flags);
+ }
+
+ int CharPositionFromPoint(int x, int y) const {
+ sptr_t res = Call(SCI_CHARPOSITIONFROMPOINT, x, y);
+ return static_cast(res);
+ }
+
+ int CharPositionFromPointClose(int x, int y) const {
+ sptr_t res = Call(SCI_CHARPOSITIONFROMPOINTCLOSE, x, y);
+ return static_cast(res);
+ }
+
+ void SetMouseSelectionRectangularSwitch(bool mouseSelectionRectangularSwitch) const {
+ Call(SCI_SETMOUSESELECTIONRECTANGULARSWITCH, mouseSelectionRectangularSwitch, SCI_UNUSED);
+ }
+
+ bool GetMouseSelectionRectangularSwitch() const {
+ sptr_t res = Call(SCI_GETMOUSESELECTIONRECTANGULARSWITCH, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetMultipleSelection(bool multipleSelection) const {
+ Call(SCI_SETMULTIPLESELECTION, multipleSelection, SCI_UNUSED);
+ }
+
+ bool GetMultipleSelection() const {
+ sptr_t res = Call(SCI_GETMULTIPLESELECTION, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetAdditionalSelectionTyping(bool additionalSelectionTyping) const {
+ Call(SCI_SETADDITIONALSELECTIONTYPING, additionalSelectionTyping, SCI_UNUSED);
+ }
+
+ bool GetAdditionalSelectionTyping() const {
+ sptr_t res = Call(SCI_GETADDITIONALSELECTIONTYPING, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetAdditionalCaretsBlink(bool additionalCaretsBlink) const {
+ Call(SCI_SETADDITIONALCARETSBLINK, additionalCaretsBlink, SCI_UNUSED);
+ }
+
+ bool GetAdditionalCaretsBlink() const {
+ sptr_t res = Call(SCI_GETADDITIONALCARETSBLINK, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetAdditionalCaretsVisible(bool additionalCaretsBlink) const {
+ Call(SCI_SETADDITIONALCARETSVISIBLE, additionalCaretsBlink, SCI_UNUSED);
+ }
+
+ bool GetAdditionalCaretsVisible() const {
+ sptr_t res = Call(SCI_GETADDITIONALCARETSVISIBLE, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ int GetSelections() const {
+ sptr_t res = Call(SCI_GETSELECTIONS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ bool GetSelectionEmpty() const {
+ sptr_t res = Call(SCI_GETSELECTIONEMPTY, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void ClearSelections() const {
+ Call(SCI_CLEARSELECTIONS, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int SetSelection(int caret, int anchor) const {
+ sptr_t res = Call(SCI_SETSELECTION, caret, anchor);
+ return static_cast(res);
+ }
+
+ int AddSelection(int caret, int anchor) const {
+ sptr_t res = Call(SCI_ADDSELECTION, caret, anchor);
+ return static_cast(res);
+ }
+
+ void DropSelectionN(int selection) const {
+ Call(SCI_DROPSELECTIONN, selection, SCI_UNUSED);
+ }
+
+ void SetMainSelection(int selection) const {
+ Call(SCI_SETMAINSELECTION, selection, SCI_UNUSED);
+ }
+
+ int GetMainSelection() const {
+ sptr_t res = Call(SCI_GETMAINSELECTION, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelectionNCaret(int selection, int pos) const {
+ Call(SCI_SETSELECTIONNCARET, selection, pos);
+ }
+
+ int GetSelectionNCaret(int selection) const {
+ sptr_t res = Call(SCI_GETSELECTIONNCARET, selection, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelectionNAnchor(int selection, int posAnchor) const {
+ Call(SCI_SETSELECTIONNANCHOR, selection, posAnchor);
+ }
+
+ int GetSelectionNAnchor(int selection) const {
+ sptr_t res = Call(SCI_GETSELECTIONNANCHOR, selection, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelectionNCaretVirtualSpace(int selection, int space) const {
+ Call(SCI_SETSELECTIONNCARETVIRTUALSPACE, selection, space);
+ }
+
+ int GetSelectionNCaretVirtualSpace(int selection) const {
+ sptr_t res = Call(SCI_GETSELECTIONNCARETVIRTUALSPACE, selection, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelectionNAnchorVirtualSpace(int selection, int space) const {
+ Call(SCI_SETSELECTIONNANCHORVIRTUALSPACE, selection, space);
+ }
+
+ int GetSelectionNAnchorVirtualSpace(int selection) const {
+ sptr_t res = Call(SCI_GETSELECTIONNANCHORVIRTUALSPACE, selection, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelectionNStart(int selection, int pos) const {
+ Call(SCI_SETSELECTIONNSTART, selection, pos);
+ }
+
+ int GetSelectionNStart(int selection) const {
+ sptr_t res = Call(SCI_GETSELECTIONNSTART, selection, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetSelectionNEnd(int selection, int pos) const {
+ Call(SCI_SETSELECTIONNEND, selection, pos);
+ }
+
+ int GetSelectionNEnd(int selection) const {
+ sptr_t res = Call(SCI_GETSELECTIONNEND, selection, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetRectangularSelectionCaret(int pos) const {
+ Call(SCI_SETRECTANGULARSELECTIONCARET, pos, SCI_UNUSED);
+ }
+
+ int GetRectangularSelectionCaret() const {
+ sptr_t res = Call(SCI_GETRECTANGULARSELECTIONCARET, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetRectangularSelectionAnchor(int posAnchor) const {
+ Call(SCI_SETRECTANGULARSELECTIONANCHOR, posAnchor, SCI_UNUSED);
+ }
+
+ int GetRectangularSelectionAnchor() const {
+ sptr_t res = Call(SCI_GETRECTANGULARSELECTIONANCHOR, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetRectangularSelectionCaretVirtualSpace(int space) const {
+ Call(SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE, space, SCI_UNUSED);
+ }
+
+ int GetRectangularSelectionCaretVirtualSpace() const {
+ sptr_t res = Call(SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetRectangularSelectionAnchorVirtualSpace(int space) const {
+ Call(SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE, space, SCI_UNUSED);
+ }
+
+ int GetRectangularSelectionAnchorVirtualSpace() const {
+ sptr_t res = Call(SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetVirtualSpaceOptions(int virtualSpaceOptions) const {
+ Call(SCI_SETVIRTUALSPACEOPTIONS, virtualSpaceOptions, SCI_UNUSED);
+ }
+
+ int GetVirtualSpaceOptions() const {
+ sptr_t res = Call(SCI_GETVIRTUALSPACEOPTIONS, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetRectangularSelectionModifier(int modifier) const {
+ Call(SCI_SETRECTANGULARSELECTIONMODIFIER, modifier, SCI_UNUSED);
+ }
+
+ int GetRectangularSelectionModifier() const {
+ sptr_t res = Call(SCI_GETRECTANGULARSELECTIONMODIFIER, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetAdditionalSelFore(Colour fore) const {
+ Call(SCI_SETADDITIONALSELFORE, fore, SCI_UNUSED);
+ }
+
+ void SetAdditionalSelBack(Colour back) const {
+ Call(SCI_SETADDITIONALSELBACK, back, SCI_UNUSED);
+ }
+
+ void SetAdditionalSelAlpha(int alpha) const {
+ Call(SCI_SETADDITIONALSELALPHA, alpha, SCI_UNUSED);
+ }
+
+ int GetAdditionalSelAlpha() const {
+ sptr_t res = Call(SCI_GETADDITIONALSELALPHA, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetAdditionalCaretFore(Colour fore) const {
+ Call(SCI_SETADDITIONALCARETFORE, fore, SCI_UNUSED);
+ }
+
+ Colour GetAdditionalCaretFore() const {
+ sptr_t res = Call(SCI_GETADDITIONALCARETFORE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void RotateSelection() const {
+ Call(SCI_ROTATESELECTION, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SwapMainAnchorCaret() const {
+ Call(SCI_SWAPMAINANCHORCARET, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ int ChangeLexerState(int start, int end) const {
+ sptr_t res = Call(SCI_CHANGELEXERSTATE, start, end);
+ return static_cast(res);
+ }
+
+ int ContractedFoldNext(int lineStart) const {
+ sptr_t res = Call(SCI_CONTRACTEDFOLDNEXT, lineStart, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void VerticalCentreCaret() const {
+ Call(SCI_VERTICALCENTRECARET, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void MoveSelectedLinesUp() const {
+ Call(SCI_MOVESELECTEDLINESUP, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void MoveSelectedLinesDown() const {
+ Call(SCI_MOVESELECTEDLINESDOWN, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetIdentifier(int identifier) const {
+ Call(SCI_SETIDENTIFIER, identifier, SCI_UNUSED);
+ }
+
+ int GetIdentifier() const {
+ sptr_t res = Call(SCI_GETIDENTIFIER, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void RGBAImageSetWidth(int width) const {
+ Call(SCI_RGBAIMAGESETWIDTH, width, SCI_UNUSED);
+ }
+
+ void RGBAImageSetHeight(int height) const {
+ Call(SCI_RGBAIMAGESETHEIGHT, height, SCI_UNUSED);
+ }
+
+ void RGBAImageSetScale(int scalePercent) const {
+ Call(SCI_RGBAIMAGESETSCALE, scalePercent, SCI_UNUSED);
+ }
+
+ void MarkerDefineRGBAImage(int markerNumber, const char* pixels) const {
+ Call(SCI_MARKERDEFINERGBAIMAGE, markerNumber, pixels);
+ }
+
+ void RegisterRGBAImage(int type, const char* pixels) const {
+ Call(SCI_REGISTERRGBAIMAGE, type, pixels);
+ }
+
+ void ScrollToStart() const {
+ Call(SCI_SCROLLTOSTART, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void ScrollToEnd() const {
+ Call(SCI_SCROLLTOEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetTechnology(int technology) const {
+ Call(SCI_SETTECHNOLOGY, technology, SCI_UNUSED);
+ }
+
+ int GetTechnology() const {
+ sptr_t res = Call(SCI_GETTECHNOLOGY, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int CreateLoader(int bytes) const {
+ sptr_t res = Call(SCI_CREATELOADER, bytes, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void FindIndicatorShow(int start, int end) const {
+ Call(SCI_FINDINDICATORSHOW, start, end);
+ }
+
+ void FindIndicatorFlash(int start, int end) const {
+ Call(SCI_FINDINDICATORFLASH, start, end);
+ }
+
+ void FindIndicatorHide() const {
+ Call(SCI_FINDINDICATORHIDE, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void VCHomeDisplay() const {
+ Call(SCI_VCHOMEDISPLAY, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void VCHomeDisplayExtend() const {
+ Call(SCI_VCHOMEDISPLAYEXTEND, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ bool GetCaretLineVisibleAlways() const {
+ sptr_t res = Call(SCI_GETCARETLINEVISIBLEALWAYS, SCI_UNUSED, SCI_UNUSED);
+ return res != 0;
+ }
+
+ void SetCaretLineVisibleAlways(bool alwaysVisible) const {
+ Call(SCI_SETCARETLINEVISIBLEALWAYS, alwaysVisible, SCI_UNUSED);
+ }
+
+ void SetLineEndTypesAllowed(int lineEndBitSet) const {
+ Call(SCI_SETLINEENDTYPESALLOWED, lineEndBitSet, SCI_UNUSED);
+ }
+
+ int GetLineEndTypesAllowed() const {
+ sptr_t res = Call(SCI_GETLINEENDTYPESALLOWED, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLineEndTypesActive() const {
+ sptr_t res = Call(SCI_GETLINEENDTYPESACTIVE, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void SetRepresentation(const char* encodedCharacter, const char* representation) const {
+ Call(SCI_SETREPRESENTATION, encodedCharacter, representation);
+ }
+
+ int GetRepresentation(const char* encodedCharacter, char* representation) const {
+ sptr_t res = Call(SCI_GETREPRESENTATION, encodedCharacter, representation);
+ return static_cast(res);
+ }
+
+ void ClearRepresentation(const char* encodedCharacter) const {
+ Call(SCI_CLEARREPRESENTATION, encodedCharacter, SCI_UNUSED);
+ }
+
+ void StartRecord() const {
+ Call(SCI_STARTRECORD, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void StopRecord() const {
+ Call(SCI_STOPRECORD, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetLexer(int lexer) const {
+ Call(SCI_SETLEXER, lexer, SCI_UNUSED);
+ }
+
+ int GetLexer() const {
+ sptr_t res = Call(SCI_GETLEXER, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void Colourise(int start, int end) const {
+ Call(SCI_COLOURISE, start, end);
+ }
+
+ void SetProperty(const char* key, const char* value) const {
+ Call(SCI_SETPROPERTY, key, value);
+ }
+
+ void SetKeyWords(int keywordSet, const char* keyWords) const {
+ Call(SCI_SETKEYWORDS, keywordSet, keyWords);
+ }
+
+ void SetLexerLanguage(const char* language) const {
+ Call(SCI_SETLEXERLANGUAGE, SCI_UNUSED, language);
+ }
+
+ void LoadLexerLibrary(const char* path) const {
+ Call(SCI_LOADLEXERLIBRARY, SCI_UNUSED, path);
+ }
+
+ int GetProperty(const char* key, char* buf) const {
+ sptr_t res = Call(SCI_GETPROPERTY, key, buf);
+ return static_cast(res);
+ }
+
+ int GetPropertyExpanded(const char* key, char* buf) const {
+ sptr_t res = Call(SCI_GETPROPERTYEXPANDED, key, buf);
+ return static_cast(res);
+ }
+
+ int GetPropertyInt(const char* key) const {
+ sptr_t res = Call(SCI_GETPROPERTYINT, key, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetStyleBitsNeeded() const {
+ sptr_t res = Call(SCI_GETSTYLEBITSNEEDED, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetLexerLanguage(char* text) const {
+ sptr_t res = Call(SCI_GETLEXERLANGUAGE, SCI_UNUSED, text);
+ return static_cast(res);
+ }
+
+ int PrivateLexerCall(int operation, sptr_t pointer) const {
+ sptr_t res = Call(SCI_PRIVATELEXERCALL, operation, pointer);
+ return static_cast(res);
+ }
+
+ int PropertyNames(char* names) const {
+ sptr_t res = Call(SCI_PROPERTYNAMES, SCI_UNUSED, names);
+ return static_cast(res);
+ }
+
+ int PropertyType(const char* name) const {
+ sptr_t res = Call(SCI_PROPERTYTYPE, name, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int DescribeProperty(const char* name, char* description) const {
+ sptr_t res = Call(SCI_DESCRIBEPROPERTY, name, description);
+ return static_cast(res);
+ }
+
+ int DescribeKeyWordSets(char* descriptions) const {
+ sptr_t res = Call(SCI_DESCRIBEKEYWORDSETS, SCI_UNUSED, descriptions);
+ return static_cast(res);
+ }
+
+ int GetLineEndTypesSupported() const {
+ sptr_t res = Call(SCI_GETLINEENDTYPESSUPPORTED, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int AllocateSubStyles(int styleBase, int numberStyles) const {
+ sptr_t res = Call(SCI_ALLOCATESUBSTYLES, styleBase, numberStyles);
+ return static_cast(res);
+ }
+
+ int GetSubStylesStart(int styleBase) const {
+ sptr_t res = Call(SCI_GETSUBSTYLESSTART, styleBase, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetSubStylesLength(int styleBase) const {
+ sptr_t res = Call(SCI_GETSUBSTYLESLENGTH, styleBase, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetStyleFromSubStyle(int subStyle) const {
+ sptr_t res = Call(SCI_GETSTYLEFROMSUBSTYLE, subStyle, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetPrimaryStyleFromStyle(int style) const {
+ sptr_t res = Call(SCI_GETPRIMARYSTYLEFROMSTYLE, style, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ void FreeSubStyles() const {
+ Call(SCI_FREESUBSTYLES, SCI_UNUSED, SCI_UNUSED);
+ }
+
+ void SetIdentifiers(int style, const char* identifiers) const {
+ Call(SCI_SETIDENTIFIERS, style, identifiers);
+ }
+
+ int DistanceToSecondaryStyles() const {
+ sptr_t res = Call(SCI_DISTANCETOSECONDARYSTYLES, SCI_UNUSED, SCI_UNUSED);
+ return static_cast(res);
+ }
+
+ int GetSubStyleBases(char* styles) const {
+ sptr_t res = Call(SCI_GETSUBSTYLEBASES, SCI_UNUSED, styles);
+ return static_cast(res);
+ }
+
+ /* --Autogenerated -- end of section automatically generated from Scintilla.iface */
+};
diff --git a/src/SurroundSelection.vcxproj b/src/SurroundSelection.vcxproj
new file mode 100644
index 0000000..e1d0d5d
--- /dev/null
+++ b/src/SurroundSelection.vcxproj
@@ -0,0 +1,226 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {1590D7CD-7D3A-4AB7-A355-EE02F7FB987D}
+ SurroundSelection
+ Win32Proj
+
+
+
+ DynamicLibrary
+ Unicode
+ v120_xp
+
+
+ DynamicLibrary
+ Unicode
+ v120_xp
+
+
+ DynamicLibrary
+ Unicode
+ v120_xp
+ true
+
+
+ DynamicLibrary
+ Unicode
+ v120_xp
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.30319.1
+ bin\$(Configuration)_$(Platform)\
+ bin\$(Configuration)_$(Platform)\
+ false
+ false
+ bin\$(Configuration)_$(Platform)\
+ bin\$(Configuration)_$(Platform)\
+ true
+ true
+
+
+ $(ProjectName)_64
+ bin\$(Configuration)_$(Platform)\
+ bin\$(Configuration)_$(Platform)\
+
+
+ $(ProjectName)_64
+ bin\$(Configuration)_$(Platform)\
+ bin\$(Configuration)_$(Platform)\
+
+
+
+ .\Dialogs;.\Parsers;.\Npp;.\Utilities;.\;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;SurroundSelection_EXPORTS;__STDC_WANT_SECURE_LIB__=1;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ MultiThreaded
+ Level3
+ ProgramDatabase
+ true
+ Size
+ true
+ MaxSpeed
+ Sync
+ true
+ true
+
+
+ shlwapi.lib;%(AdditionalDependencies)
+ $(OutDir)SurroundSelection.dll
+ true
+ Windows
+ true
+ true
+ true
+ true
+ $(OutDir)SurroundSelection.lib
+ MachineX86
+
+
+ if EXIST "C:\Program Files (x86)\Notepad++\plugins" (copy "$(TargetPath)" "C:\Program Files (x86)\Notepad++\plugins")
+
+
+
+
+ .\Dialogs;.\Parsers;.\Npp;.\Utilities;.\;%(AdditionalIncludeDirectories)
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;SurroundSelection_EXPORTS;__STDC_WANT_SECURE_LIB__=1;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ MultiThreaded
+ Level3
+ ProgramDatabase
+ true
+ Size
+ true
+ MaxSpeed
+ Sync
+ true
+ true
+
+
+ shlwapi.lib;%(AdditionalDependencies)
+ $(OutDir)SurroundSelection_64.dll
+ true
+ Windows
+ true
+ true
+ true
+ true
+ $(OutDir)SurroundSelection.lib
+
+
+ if EXIST "C:\Program Files\Notepad++\plugins" (copy "$(TargetPath)" "C:\Program Files\Notepad++\plugins")
+
+
+
+
+ Disabled
+ .\Dialogs;.\Parsers;.\Npp;.\Utilities;.\;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_WINDOWS;_USRDLL;SurroundSelection_EXPORTS;__STDC_WANT_SECURE_LIB__=1;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebug
+ Level3
+ EditAndContinue
+ true
+
+
+ shlwapi.lib;%(AdditionalDependencies)
+ $(OutDir)SurroundSelection.dll
+ true
+ $(OutDir)SurroundSelection.pdb
+ Windows
+ true
+ true
+ $(OutDir)SurroundSelection.lib
+ MachineX86
+
+
+ if EXIST "C:\Program Files (x86)\Notepad++\plugins" (copy "$(TargetPath)" "C:\Program Files (x86)\Notepad++\plugins")
+
+
+
+
+ Disabled
+ .\Dialogs;.\Parsers;.\Npp;.\Utilities;.\;%(AdditionalIncludeDirectories)
+ WIN32;_DEBUG;_WINDOWS;_USRDLL;SurroundSelection_EXPORTS;__STDC_WANT_SECURE_LIB__=1;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+ EnableFastChecks
+ MultiThreadedDebug
+ Level3
+ ProgramDatabase
+ true
+
+
+ shlwapi.lib;%(AdditionalDependencies)
+ $(OutDir)SurroundSelection_64.dll
+ true
+ $(OutDir)SurroundSelection.pdb
+ Windows
+ true
+ true
+ $(OutDir)SurroundSelection.lib
+
+
+ if EXIST "C:\Program Files\Notepad++\plugins" (copy "$(TargetPath)" "C:\Program Files\Notepad++\plugins")
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/SurroundSelection.vcxproj.filters b/src/SurroundSelection.vcxproj.filters
new file mode 100644
index 0000000..bf7dd75
--- /dev/null
+++ b/src/SurroundSelection.vcxproj.filters
@@ -0,0 +1,65 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/src/Version.h b/src/Version.h
new file mode 100644
index 0000000..22b4b03
--- /dev/null
+++ b/src/Version.h
@@ -0,0 +1,23 @@
+// This file is part of SurroundSelection.
+//
+// Copyright (C)2017 Justin Dailey
+//
+// SurroundSelection is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#define VERSION_NUM 1,0,0,0
+#define VERSION_LINEAR 1000
+#define VERSION_LINEAR_TEXT TEXT("1000")
+#define VERSION_TEXT TEXT("1.0") // This must match the tag pushed on the server minus the "v"
+#define VERSION_STAGE TEXT("") // "alpha", "beta", ""