SciTE: Scintilla Text Editor with Extensions
Scintilla Text Editor (SciTE) is a handy small-footprint source code
editor based on the Scintilla text
editor widget. SciTE and Scintilla itself are produced by Neil Hodgson
There are many useful extensions to SciTE. One extension that I have
found very handy is the Windows Explorer Context Menu
Handler by Andre Burgaud <firstname.lastname@example.org>.
I've put together a setup wizard that bundles Neil's SciTE
with Andre's context menu handler, as well as several other
configuration enhancements available on the net, and my own tweaks to the
configuration files and the build process (making SciTE work the way I
like it, not necessarily the way you like it!). The setup wizard fits on
a floppy with room to spare. Not bad for a full-featured scriptable
editor with syntax highlighting and folding support.
This is a custom build based on my local CVS repository, updated to
the 2.01 release plus an important additional bugfix that landed the next
day (selected by updating the CVS sources to August 21, 2009). The only
notable difference between my codebase and Neil's is that I included
Reuben Thomas's bitlib, a C bitwise operations library for Lua; and
my version supports a
start.in.monospaced.mode property that
causes SciTE to start with "Use Monospaced Font" turned on.
Also related to monospaced fonts, a change in core SciTE 1.67 had a side
effect that caused the monospaced option to reset itself whenever a new
buffer is initialized. In my version, SciTE remembers the last
user-selected monospaced setting and applies it when a new buffer is
opened. Also I added something to restoring the Lua package environment a
bit closer to the initial state (e.g. resetting most other fields besides
package.loaded, although if you look into the code you'll see that
package.preload is still not a deep copy). Other than these source code
changes, I have a few differences in the makefiles to support my local
build process; and of course there are many customizations to the
Note, now that we're at Lua 5.1 and have a better mechanism for
packages / modules, bitlib is no longer loaded automatically. It is
compiled in, but you have to
require("bit") if you
want to use it. This way the default global namespace is identical to the
official SciTE. If you use bitlib and don't want to worry about it,
just put that line in your Lua startup script.
Note, bitlib's old
bit.mod function has been
deprecated and removed by the library's author. Use Lua 5.1's
% operator instead.
An earlier version, 1.77-wbd-1 is
still available. This predates a some major changes to the SciTE and
Scintilla internals that were released the summer in version 2.0. These
changes appear to have stabilized now, but if you run into any problems
on your computer or with your configuration, it may be worth trying this
For all of these versions, a full change set - properties and source
code - is included in Unified diff format. The setup wizard installs the
change set as scite-wbd-release.diff. The change sets are human readable,
so you can peruse them to see all of my changes in one place. The changes
can also be applied to the official source release using GNU patch.
If you are upgrading from version 1.57 or earlier of my installer,
please uninstall the older version first, or you may end up with more
than one entry in your "Add / Remove Programs" list. Starting
with 1.58, it is no longer necessary to uninstall before upgrading.
However, be careful if you have made any further customizations to the
global property files: when you upgrade, these files will be overwritten,
and your changes will be lost. Also, make sure you don't have SciTE
running during the upgrade, or it will require a reboot.
Here is the full content of my installation package:
- SciTE for Win32 as published by Neil Hodgson at www.scintilla.org.
The installer is based either on Neil's official binary release of
SciTE, or on the official source code with additional patches. When an
unofficial build is used, I indicate this in the version number displayed
in the SciTE About window.
- Andre Burgaud's "Open with SciTE" Context Menu
I am using the new version 1.2.1, which is published with source code at
burgaud.com. (Thanks Andre.)
Since this must be registered as a component, this was one of the reasons
I wrote the setup wizard in the first place. The wizard has a checkbox to
disable this option. (The context menu handler can only be installed
if you have administrative priviledges.)
- Configuation modified according to my preferences.
e.g. I like monospaced font and line numbers, and I don't like tabs
in my source code. I also included some of the API and Keyword files from
section of the Scintilla / SciTE web site. Also, since I often use
word-wrap mode when editing text files, CTRL-F12 is mapped to toggle
word-wrap on or off.
- Useful helper tools. AWK is included, mainly to enable "Find in
files" support on Windows 95/98/Me; and so is HTML Tidy, which
enables HTML / XML reformatting via the Tools menu.
- The wizard is created using Inno Setup by Jordon Russel. I
am currently using Inno Setup 4.2.x. The installer source script is
included in the package. If you make improvements to it, please consider
sending the enhancements to me (wbd at users dot sourceforge dot
I originally wrote this installation package for myself, because it
helps me in my work: it fits on a floppy and makes it easy for me to
replicate a familiar editing environment when I go to a client who only
has Notepad. The configuration is still geared mainly toward my own
idiosyncratic preferences, but I am encouraged to know that so many other
people are deriving value from it. So, as long as you keep downloading
it, I'll try to keep it up to date.
The package is distributed under a license which is essentially a
composite of Neil's license for Scintilla and SciTE; Andre's
license for the context menu handler; TecGraf's license for Lua; the
licenses for the other tools such as awk and tidy; and my own terms for
the installation package itself. (My terms are the same as Neil's.)
I've posted the license notice here.