shill logo
semi up-to-date LSL editing for all
picture of a shillelagh.
Google

Important: Most of these files are untested. Please use with care. Also, I don't know how accurate the source files were. I only replaced the lists of functions, constants, and events with those for Second Life 1.13.

Contact: IM Adam Marker or send e-mail.

Shill keeps syntax files up to date for Linden Scripting Language (LSL) editors. Included here are files I found at the Alternative Editors page at the LSL Wiki, along with some I saw mentioned in various forums. My sincere thanks to all syntax file authors. I've included the origin of each file if known. Follow the instructions at the Wiki for installation, including updated files from here as appropriate.

See below for more details on the automated process that generates these files. Please contact me with comments, suggestions, and requests to update these or other syntax files. You are also invited to discuss Shill at the Second Life Forums.

files for Second Life 1.13

editor files notes
sample file sample.txt Plain file including all LSL flow control, data types, constants, events, and functions, one per line.
BBEdit / TextWrangler lsl.plist This plist file (original from Captain Barmy) is a "codeless language module" which works with BBEdit 8.x and TextWrangler 2.x. It support syntax highlighting. The update for 1.13 also updates BBLMLanguageCode to LLSL as advised by Herbert Hoggard.

BBEdit also supports a binary module, which can enable the function popup and more highlighting. I'll post one of those if I can figure it out.

Code-Genie lsl.cgsyn original file from Tread Whiplash
ConTEXT lsl.chl original file from Sir Grelling via the ConTEXT forum.
Eclipse The most current Eclipse environment I'm aware of is from ByronStar Comet: ByronStar Second Life IDE.
Crimson Editor lsl.key original file from Templar Baphomet (posted at Crimson Editor Syntax Files) and updated by Aakanaar Lasalle
EditPlus Linden Scripting Language.stx original file from Ezhar Fairlight (http://sdfjkl.org/secondlife/scite/)
Emacs 1) lsl.el from Phoenix Linden
2) lsl-mode.el from Reinhard Neurocam

These files are written in Emacs Lisp, and I cannot figure out how to update them. If you are an Emacs Guru and would like to see an update, please contact me and I'm sure we can figure it out.
gedit lsl.lang original file from Nargus Asturias via the Scripting Tips forum. gedit is the official text editor of the GNOME desktop environment.
jEdit lsl-edit.xml original file from Keilaron Tomba
Kate/KWrite lsl.xml original file by Dale Glass via Second Tux
MoinMoin Wiki lsl.py original file from Thilo pfennig. I added functions, events, and many more constants to this file, but I have not been able to test it. They use keyword types 'ResWord2' and 'Special'.
Notepad++ userDefineLang.xml
lsl.api
original file from Samson Havercamp. The XML file supports syntax highlighting. The API file supports auto-completion (ctrl-space).
SciTE scite_lsl.tar.gz files by LordJason Keisler, see the forum thread New SciTE files for lsl, updated 08-Sep-2007
lsl.properties
lsl.api
original files extracted from SciTE-ez (from Ezhar Fairlight), updated 18-Dec-2006
Smultron lsl.plist original file from Seraph Bedlam
SynEdit The original file (from Nightwalker Shatner) includes many Pascal functions generated by the SynEdit program. If someone would like to run the generator thing, I can provide an updated keyword list, and would be happy to host the file here.
TextMate Download Piero Padar's well-maintained bundle, discussed in the Second Life Forums.
TextPad Linden Scripting Language.syn
Linden Scripting Language.tcl
The original files (from Sean Gorham) placed some constants in other categories (e.g. NULL_KEY in events), which I was not able to reproduce. Also, numeric constants no longer have their own category.
UltraEdit LSL-Wordfile.txt There were three different files in the Wiki. I chose what appeared to be the most recent (from Grazel Cosmo). That file had only a handful of constants; the updated file includes all constants.
vim lsl.vim
lsl.dict
original file from Keedon Pollack (and updated by others). lsl.vim is the full syntax file. The deprecated functions list needs to be updated. lsl.dict is a vanilla list of all the keywords that can be used with vim's autocomplete function.
the Shill system keywords.yaml
signatures.yaml
shill.rb
Shill's master lists of functions, events, and constants. They are formatted using YAML, a simple markup language. keywords contains just the event, function, and constant names. signatures has signatures and short help for functions and events, currently only used by SciTE-ez. shill.rb makes it all work. See implementation notes below for more details.

(Wondering about the color scheme? The rows in light green are totally new for this release.)

Changes for LSL 1.13

added functions and related constants:
     llGetObjectPrimCount
     llGetParcelPrimOwners
     llGetParcelMaxPrims
     llGetParcelPrimCount
     	PARCEL_COUNT_GROUP
     	PARCEL_COUNT_OTHER
     	PARCEL_COUNT_OWNER
     	PARCEL_COUNT_SELECTED
     	PARCEL_COUNT_TEMP
     	PARCEL_COUNT_TOTAL
     llGetParcelDetails
     	PARCEL_DETAILS_AREA
     	PARCEL_DETAILS_DESC
     	PARCEL_DETAILS_GROUP
     	PARCEL_DETAILS_NAME
     	PARCEL_DETAILS_OWNER

other stuff added along the way:
     DATA_PAYINFO
     HTTP_VERIFY_CERT
     PARCEL_FLAG_ALLOW_GROUP_SCRIPTS
     PARCEL_FLAG_RESTRICT_PUSHOBJECT
     REGION_FLAG_RESTRICT_PUSHOBJECT
     PAYMENT_INFO_ON_FILE
     PAYMENT_INFO_USED

Released Shill source files:
     shill.rb
     keywords.yaml
     signatures.yaml
     templates/*editor_name*/files
     output/*editor_name*/files

If you just want to update your editor keyword list, grab your files from up above and enjoy! If you have a file that you would like me to include in the Shill automatic update, please send it to me. If you're interested updating your own files, or are just curious about the internals of Shill, read on.

implementation notes (and how to run Shill yourself)

Download the entire Shill system in one archive (236K): shill.zip

I am new to Ruby, so I suspect this program is neither elegant nor optimal, but it does work well. I welcome your (kind and gentle) feedback. IM or email Adam Marker.

Shill is implemented using one Ruby program, two keyword files, and a fixed folder hierarchy for holding template and output files. The setup looks like this:

shill.rb
keywords.yaml
signatures.yaml

template/
   vim/
      lsl.vim
      lsl.dict
   smultron/
      lsl.plist
      
output/
   vim/
      lsl.vim
      lsl.dict
   smultron/
      lsl.plist
Typical shill command invocations:
      ruby shill.rb template/*/*        (to generate all syntax files)
      ruby shill.rb template/jedit/*    (to generate just the jedit files)
Shill reads each template specified on the command line, and produces a new file with the same filename, but in a folder called output. There is no configuration file of editor and file names; it is all inferred from the folder hierarchy. For example:
      template/smultron/lsl.plist -->> output/smultron/lsl.plist
A template file may contain RDoc and erb code. If you don't know what that means, skip the rest of this paragraph. Take a look at template/vim/lsl.api for basic use of RDoc, and template/notepad/userDefineLang.xml for an erb sample. The template is passed first through RDoc, then erb. RDoc is sufficient for most templates (one keyword per line, sometimes with extra text on the line), and erb can handle advanced formatting and selection needs. For erb, three arrays are defined to hold LSL events, functions, and constants. There is also a hash that holds event and function signatures. notepad/userDefineLang.xml uses the arrays; scite/lsl.api uses both the arrays and hash.

If you have no experience with Ruby, I think you can still use Shill to create or update editor syntax files. Here is a basic example, taken from template/bbedit/lsl.plist:

START:functions
		<string>%name%</string>
END:functions
START: and END: (which must begin in column 1) tell Shill where to insert a keyword list, and which list to use -- in this case 'functions'. If the editor requires it, you can have other text on the line, like the XML tags in this example. The line is repeated once per keyword, substituting a keyword in place of %name%, generating something like:
		<string>llShout</string>
		<string>llSin</string>
		<string>llSitTarget</string>
Each of the files now contains a Shill update notice, in addition to any other version history the original author may have provided. A template may include the following line (along with proper syntax for a comment):
     %SHILL_UPDATE_NOTICE%
and generates an update notice like this:
     LSL keywords updated 19 Dec 2006 for LSL 1.13 by http://adammarker.org/shill
You may also want to update the keyword lists. Take a look at the two YAML files -- you will find it easy to adapt to YAML formatting.

Ideas for future revisions

The name Shill:

Previous versions of syntax files: