Free Tools for GIS Developers
Navigation:
  What's New
 
GIS Tools:
  AVPython
  NTXShape
  SHPTRANS
 
Other Tools:
  SciTE
  Tomcat
 
About:
  The Author
  These Pages
 
  Best viewed with Mozilla / Firefox; or with IE and the Google Toolbar.

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 <neilh@scintilla.org>.

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 <andre@burgaud.com>.

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.

[DOWNLOAD 2.01-wbd-1]

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 property settings.

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 older release.

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 handler.
    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 the extras 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 net).

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.

|