Large post, but I'm sure many of you will find it handy.
Hi,
I'm new no KiXtart. In fact, I've only been using it since last Friday, but as a seasoned batch/login script and VB programmer, it was very easy for me to learn KiXtart - not to mention it's so well-done, almost everything you could wish for is built right in. I had already heard about it and also read a bit, but never quite took the time to learn it. Talk about being sorry - I've had several scenarios in the past that I solved without KiX, just to see now that I could have solved them so much more easily with KiX! But let's get to business.
As a guy who already programmed in several high-level languages, with great IDEs, debuggers, profilers and the like, I really couldn't stand writing my KiX scripts using Notepad or EDIT. I simply KNEW there had to be a better way. I browsed around and only found commercial editors, some looked really good, but all I wanted to do was to write KiX scripts, and wasn't really willing to shell out more than $30 to be able to do it the way I like - with syntax highlighting, automatic indentation, advanced editing and the like - and really didn't care about other functionalities.
After a lot of research, I found this litlle gem of an editor called Scintilla Text Editor, os SciTE for short. It's open-source, free and of very high quality. Talk about cool! I run it alongside a command prompt and get great results. It really sped up my development - I wrote more code today than I did since last Friday, and my KiX logon script now weighs in 659 lines of code (the first 158 are Jens Meyer's IsInSubnet function - great work!).
You can find Scintilla here.
It's pretty raw when you first install it, but after you customize its Global Options File and kix.properties file, it's KiX heaven.
As I have clients in several subnets, I also found it useful to compress my KiX program files (and several other programs) with UPX (get it here).
I pasted my files below for your perusal. I'm sure many of you will love Scintilla!

SciTEGlobal.properties
# Global initialisation file for SciTE
# For Linux, place in $prefix/share/scite
# For Windows, place in same directory as SciTE.EXE (or Sc1.EXE)
# Documentation at http://www.scintilla.org/SciTEDoc.html

# Globals

# Window sizes and visibility
#if PLAT_WIN
# position.left=0
# position.top=0
#if PLAT_GTK
# position.left=5
# position.top=22
#position.width=576
#position.height=740
position.tile=1
#full.screen.hides.menu=1
#minimize.to.tray=1
split.vertical=1
#output.horizontal.size=200
#output.vertical.size=60
#horizontal.scrollbar=0
#horizontal.scroll.width=10000
#output.horizontal.scrollbar=0
#output.horizontal.scroll.width=10000
#output.scroll=0
#end.at.last.line=0
tabbar.visible=1
tabbar.hide.one=1
tabbar.multiline=1
toolbar.visible=1
#undo.redo.lazy=1
statusbar.visible=1
#fileselector.width=800
#fileselector.height=600
#magnification=-1
#output.magnification=-1

# Sizes and visibility in edit pane
line.margin.visible=1
line.margin.width=3+
margin.width=16
#fold.margin.width=16
#fold.margin.colour=#FF0000
#fold.margin.highlight.colour=#0000FF
#blank.margin.left=4
#blank.margin.right=4
buffered.draw=1
#two.phase.draw=0
use.palette=0

# Element styles
#view.eol=1
#control.char.symbol=.
caret.period=500
view.whitespace=0
view.indentation.whitespace=1
view.indentation.guides=1
highlight.indentation.guides=1
#caret.fore=#FF0000
#caret.width=2
#caret.line.back=#FFFED8
#calltip.back=#FFF0FE
edge.column=200
edge.mode=0
edge.colour=#C0DCC0
braces.check=1
braces.sloppy=1
#selection.fore=#006000
# DADADA used as background because it yields standard silver C0C0C0
# on low colour displays and a reasonable light grey on higher bit depths
selection.back=#DADADA
#whitespace.fore=#FF0000
#whitespace.back=#FFF0F0
#error.marker.fore=#0000A0
#error.marker.back=#DADAFF
#bookmark.fore=#808000
#bookmark.back=#FFFFA0
#use.monospaced=1

# Checking
are.you.sure=1
#are.you.sure.for.build=1
#quit.on.close.last=1
#load.on.activate=1
#save.on.deactivate=1
#are.you.sure.on.reload=1
#reload.preserves.undo=1
#check.if.already.open=1
default.file.ext=.kix
title.full.path=1
title.show.buffers=1
save.recent=1
#save.session=1
open.dialog.in.file.directory=1
#strip.trailing.spaces=1
#ensure.final.line.end=1
#ensure.consistent.line.ends=1
#save.deletes.first=1
buffers=10
#api.*.cxx=d:\api\w.api
#win95.death.delay=1000
#translation.missing=***
#read.only=1

# Indentation
tabsize=4
indent.size=4
use.tabs=1
indent.automatic=1
indent.opening=0
indent.closing=0
#tab.indents=0
#backspace.unindents=0

# Wrapping of long lines
#wrap=1
#cache.layout=3
#output.wrap=1
#output.cache.layout=3
#wrap.visual.flags=3
#wrap.visual.flags.location=3
#wrap.visual.startindent=4

# Folding
# enable folding, and show lines below when collapsed.
fold=1
fold.compact=1
fold.flags=16
fold.symbols=1
#fold.on.open=1

# Find and Replace
#escapes.in.find.replace=1
# findstr is available on recent versions of Windows including 2000
if PLAT_WIN
find.command=findstr /n /s $(find.what) $(find.files)
#find.input=$(find.what)
if PLAT_GTK
find.command=grep --line-number "$(find.what)" $(find.files)
find.files=*.c *.cxx *.h
#find.replace.matchcase=1
#find.replace.escapes=1
#find.replace.regexp=1
#find.replace.regexp.posix=1
#find.replace.wrap=0
#find.replacewith.focus=0

# Behaviour
#eol.mode=LF
eol.auto=1
clear.before.execute=0
#vc.home.key=1
#wrap.aware.home.end.keys=1
#autocompleteword.automatic=1
#autocomplete.choose.single=1
caret.policy.xslop=1
caret.policy.width=20
caret.policy.xstrict=0
caret.policy.xeven=0
caret.policy.xjumps=0
caret.policy.yslop=1
caret.policy.lines=1
caret.policy.ystrict=1
caret.policy.yeven=1
caret.policy.yjumps=0
#visible.policy.strict=1
#visible.policy.slop=1
#visible.policy.lines=4
#time.commands=1

# Status Bar
statusbar.number=4
statusbar.text.1=\
li=$(LineNumber) co=$(ColumnNumber) $(OverType) ($(EOLMode)) $(FileAttr)
statusbar.text.2=\
$(BufferLength) chars in $(NbOfLines) lines. Sel: $(SelLength) chars.
statusbar.text.3=\
Now is: Date=$(CurrentDate) Time=$(CurrentTime)
statusbar.text.4=\
$(FileNameExt) : $(FileDate) — $(FileTime) | $(FileAttr)

if PLAT_WIN
command.scite.help="file://$(SciteDefaultHome)\SciTEDoc.html"
command.scite.help.subsystem=2
if PLAT_GTK
command.print.*=a2ps "$(FileNameExt)"
command.scite.help=netscape "file://$(SciteDefaultHome)/SciTEDoc.html"

# Internationalisation
# Japanese input code page 932 and ShiftJIS character set 128
#code.page=932
#character.set=128
# Unicode
#code.page=65001
code.page=0
#character.set=204
# Required for Unicode to work on GTK+:
#LC_CTYPE=en_US.UTF-8

# Export
#export.keep.ext=1
export.html.wysiwyg=1
#export.html.tabs=1
#export.html.folding=1
export.html.styleused=1
#export.html.title.fullpath=1
#export.rtf.tabs=1
#export.rtf.font.face=Arial
#export.rtf.font.size=9
#export.rtf.tabsize=8
# Magnification (added to default screen font size)
export.pdf.magnification=0
# Font: Courier, Helvetica or Times (Courier line-wraps)
export.pdf.font=Helvetica
# Page size (in points): width, height
# E.g. Letter 612,792; A4 595,842; maximum 14400,14400
export.pdf.pagesize=595,842
# Margins (in points): left, right, top, bottom
export.pdf.margins=72,72,72,72
export.xml.collapse.spaces=1
export.xml.collapse.lines=1

# Define values for use in the imported properties files
chars.alpha=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
chars.numeric=0123456789
chars.accented=ŠšŒœŸÿÀàÁáÂâÃãÄäÅ寿ÇçÈèÉéÊêËëÌìÍíÎîÏïÐðÑñÒòÓóÔôÕõÖØøÙùÚúÛûÜüÝýÞþßö
# This is a better set for Russian:
#chars.accented=ÀàÁáÂâÃãÄäÅå¨¸ÆæÇçÈèÉéÊêËëÌìÍíÎîÏïÐðÑñÒòÓóÔôÕõÖö×÷ØøÙùÚúÛûÜüÝýÞþßÿ

# The open.filter setting is only used on Windows where the file selector has a menu of filters to apply
# to the types of files seen when opening.
# There is a limit (possibly 256 characters) to the length of a filter,
# so not all source extensions can be in this setting.
source.files=*.asm;*.c;*.cc;*.cpp;*.cxx;*.cs;*.h;*.hh;*.hxx;*.hpp;\
*.idl;*.odl;*.rc;*.rc2;*.dlg;*.def;\
*.vb;*.vbs;*.bas;*.frm;*.cls;*.ctl;\
*.java;*.js;*.py;*.pl;*.rb;*.cgi;*.kix;*.conf;\
make*;*.mak;\
*.properties;*.html;*.xml;*.iface;*.bat;*.e

if PLAT_WIN
all.files=All Files (*.*)|*.*|
if PLAT_GTK
all.files=All Files (*)|*|Hidden Files (.*)|.*|
open.filter=\
All Source|$(source.files)|\
$(all.files)\
#$(filter.ada)\
$(filter.conf)\
$(filter.asm)\
#$(filter.ave)\
$(filter.baan)\
$(filter.bash)\
$(filter.cpp)\
$(filter.css)\
#$(filter.eiffel)\
#$(filter.erlang)\
#$(filter.fortran)\
$(filter.idl)\
$(filter.java)\
$(filter.js)\
$(filter.kix)\
#$(filter.lout)\
#$(filter.lua)\
#$(filter.matlab)\
#$(filter.metapost)\
#$(filter.mmixal)\
$(filter.nncrontab)\
#$(filter.nsis)\
$(filter.pascal)\
$(filter.perl)\
$(filter.php)\
#$(filter.pov)\
$(filter.properties)\
$(filter.ps)\
$(filter.python)\
#$(filter.ruby)\
$(filter.sql)\
#$(filter.specman)\
#$(filter.tcl)\
$(filter.tex)\
$(filter.text)\
$(filter.vb)\
$(filter.web)\
#$(filter.yaml)\
#$(filter.verilog)

# Give symbolic names to the set of fonts used in the standard styles.
if PLAT_WIN
font.base=font:Lucida Console,size:10
font.small=font:Lucida Console,size:8
font.comment=font:Courier New,size:10
font.code.comment.box=$(font.comment)
font.code.comment.line=$(font.comment)
font.code.comment.doc=$(font.comment)
font.text=font:Times New Roman,size:10
font.text.comment=font:Verdana,size:10
font.embedded.base=font:Verdana,size:10
font.embedded.comment=font:Comic Sans MS,size:9
font.monospace=font:Courier New,size:10
font.vbs=font:Lucida Sans Unicode,size:10
if PLAT_GTK
font.base=font:lucidatypewriter,size:12
font.small=font:lucidatypewriter,size:10
font.comment=font:new century schoolbook,size:12
font.code.comment.box=$(font.comment)
font.code.comment.line=$(font.comment)
font.code.comment.doc=$(font.comment)
font.text=font:times,size:14
font.text.comment=font:lucidatypewriter,size:10
font.embedded.base=font:lucidatypewriter,size:12
font.embedded.comment=font:lucidatypewriter,size:12
font.monospace=font:courier,size:12
font.vbs=font:new century schoolbook,size:12
font.js=$(font.comment)

# Give symbolic names to the set of colours used in the standard styles.
colour.code.comment.box=fore:#007F00
colour.code.comment.line=fore:#007F00
colour.code.comment.doc=fore:#3F703F
colour.text.comment=fore:#0000FF,back:#D0F0D0
colour.other.comment=fore:#007F00
colour.embedded.comment=back:#E0EEFF
colour.embedded.js=back:#F0F0FF
colour.notused=back:#FF0000

colour.number=fore:#007F7F
colour.keyword=fore:#00007F
colour.string=fore:#7F007F
colour.char=fore:#7F007F
colour.operator=fore:#000000
colour.preproc=fore:#7F7F00
colour.error=fore:#FFFF00,back:#FF0000

# Global default styles for all languages
# Default
style.*.32=$(font.base)
# Line number
style.*.33=back:#C0C0C0,$(font.base)
# Brace highlight
style.*.34=fore:#0000FF,bold
# Brace incomplete highlight
style.*.35=fore:#FF0000,bold
# Control characters
style.*.36=
# Indentation guides
style.*.37=fore:#C0C0C0,back:#FFFFFF

# Printing - only works on Windows
if PLAT_WIN
#print.colour.mode=1
print.magnification=-1
# Setup: left, right, top, bottom margins, in local units:
# hundredths of millimeters or thousandths of inches
print.margins=1500,1000,1000,1500
# Header/footer:
# && = &; &p = current page
# &f = file name; &F = full path
# &d = file date; &D = current date
# &t = file time; &T = full time
print.header.format=$(FileNameExt) — Printed on $(CurrentDate), $(CurrentTime) — Page $(CurrentPage)
print.footer.format=$(FilePath) — File date: $(FileDate) — File time: $(FileTime)
# Header/footer style
print.header.style=font:Arial,size:12,bold
print.footer.style=font:Arial Narrow,size:10,italics

# Warnings - only works on Windows and needs to be pointed at files on machine
#if PLAT_WIN
# warning.findwrapped=100,E:\Windows\Media\SFX\Boing.wav
# warning.notfound=0,Effect.wav
# warning.wrongfile=0,Glass.wav
# warning.executeok=0,Fanfare.wav
# warning.executeko=100,GlassBreak.wav
# warning.nootherbookmark=100,Boing2.wav

# Define the Lexer menu,
# Each item contains three parts: menu string | file extension | key
# The only keys allowed currently are based on F-keys and alphabetic keys and look like
# [Ctrl+][Shift+][Fn|a] such as F12 or Ctrl+Shift+D.
# A '&' may be placed before a letter to be used as an accelerator. This does not work on GTK+.
menu.language=\
Text|txt|Shift+F11|\
#Ada|ads||\
Apache Confi&g|conf||\
Assembler|asm||\
#Avenue|ave||\
Baan|bc||\
&Batch|bat||\
#Bullant|ant||\
&C / C++|c||\
C&#|cs||\
CSS|css||\
&Difference|diff||\
#&Eiffel|e||\
#Erlang|erl||\
&Errorlist|err||\
#&Fortran|f90||\
H&ypertext|html|F12|\
&Java|java||\
Java&Script|js||\
&Kix|kix||\
TeX|tex||\
#Lisp|lisp||\
#Lot|lot||\
#Lout|lt||\
#Lu&a|lua||\
#Matlab|m.matlab||\
&Makefile|mak|Ctrl+Shift+F11|\
#MetaPost|mp||\
#MMIXAL|mms||\
#&nnCron crontab|tab||\
#NSIS|nsis||\
#Octave|m.octave||\
Pascal|pas||\
Pe&rl|pl||\
P&HP|php||\
P&LSQL|spec||\
&Properties|properties||\
P&ostScript|ps||\
#P&OV-Ray SDL|pov||\
Pytho&n|py||\
Reso&urce|rc||\
#Ruby|rb||\
Shell|sh||\
S&QL|sql||\
#Specman|e||\
#&TCL|tcl||\
&VB|vb||\
VBScr&ipt|vbs||\
#Verilog|v||\
&XML|xml|Shift+F12|\
#&YAML|yaml||


# User defined key commands
user.shortcuts=\
Ctrl+Shift+V|IDM_PASTEANDDOWN|\
Ctrl+PageUp|IDM_PREVFILE|\
Ctrl+PageDown|IDM_NEXTFILE|

#KeypadPlus|IDM_EXPAND|\
#KeypadMinus|IDM_BLOCK_COMMENT|

# Import all the language specific properties files
#import ada
import asm
#import au3
#import ave
import baan
#import bullant
import conf
import cpp
import css
#import eiffel
#import erlang
import escript
#import forth
#import fortran
import html
import kix
#import lisp
#import lot
#import lout
#import lua
#import matlab
#import metapost
#import mmixal
#import nncrontab
#import nsis
import others
import pascal
import perl
#import pov
import ps
import python
import ruby
#import scriptol
import sql
#import specman
#import tcl
#import tex
import vb
#import yaml
#import verilog

kix.properties
# Define SciTE settings for Assembler files
# Black Horus blackhorus@gmx.net

# Masm files
file.patterns.kix=*.kix
filter.kix=Kix-Script (kix)|$(file.patterns.kix)|

#lexer.$(file.patterns.kix)=asm
lexer.$(file.patterns.kix)=kix

# These keywords are commands
keywords.$(file.patterns.kix)=? and beep big break call cd cls color cookie1 copy \
debug del dim display do until exit flushkb for each next function endfunction \
get gets global go gosub goto if else endif md or password play quit \
rd redim return run select case endselect set setl setm settime \
shell sleep small use while loop

# This keywords are functions
keywords2.$(file.patterns.kix)=abs addkey addprinterconnection addprogramgroup \
addprogramitem asc ascan at backupeventlog box cdbl chr cint cleareventlog \
close comparefiletimes createobject cstr dectohex delkey delprinterconnection \
delprogramgroup delprogramitem deltree delvalue dir enumgroup enumipinfo enumkey \
enumlocalgroup enumvalue execute exist existkey expandenvironmentvars fix \
formatnumber freefilehandle getdiskspace getfileattr getfilesize getfiletime \
getfileversion getobject iif ingroup instr instrrev int isdeclared join \
kbhit keyexist lcase left len loadhive loadkey logevent logoff ltrim \
memorysize messagebox open readline readprofilestring readtype readvalue \
redirectoutput right rnd round rtrim savekey sendkeys sendmessage setascii \
setconsole setdefaultprinter setfileattr setfocus setoption setsystemstate \
settitle setwallpaper showprogramgroup shutdown sidtoname split srnd substr \
trim ubound ucase unloadhive val vartype vartypename writeline \
writeprofilestring writevalue

# This keywords are macros if preceeded by @
keywords3.$(file.patterns.kix)=address build color comment cpu crlf csd curdir \
date day domain dos error fullname homedir homedrive homeshr hostname \
inwin ipaddress0 ipaddress1 ipaddress2 ipaddress3 kix lanroot ldomain \
ldrive lm logonmode longhomedir lserver maxpwage mdayno mhz monthno \
month msecs pid primarygroup priv productsuite producttype pwage ras \
result rserver scriptdir scriptexe scriptname serror sid site startdir \
syslang ticks time userid userlang wdayno wksta wuserid ydayno year

# Comments
comment.block.kix=;
comment.block.at.line.start.kix=1

# Kix Styles
# White space
style.kix.0=fore:#000000,$(font.vbs)
# Comment
style.kix.1=$(colour.code.comment.line),$(font.code.comment.line)
# String
style.kix.2=$(colour.string)
style.kix.3=$(colour.string)
# Number
style.kix.4=$(colour.number)
# Variables
style.kix.5=fore:#B00040
# Macro
style.kix.6=$(colour.preproc)
# Keyword
style.kix.7=$(colour.keyword),bold
# Function
style.kix.8=$(colour.keyword)
# Operator
style.kix.9=$(colour.operator),bold

# Commands
command.go.*.kix=kix32 $(FileName)

# Indenting
tab.size.$(file.patterns.kix)=4
indent.size.$(file.patterns.kix)=4
use.tabs.$(file.patterns.kix)=1

statement.indent.$(file.patterns.kix)=7 if else for do while function case
statement.end.$(file.patterns.kix)=7 endif next until loop endfunction endselect