#120987 - 2004-06-10 02:19 AM
Very good open source IDE for KiXtart
|
georger
Lurker
Registered: 2004-06-10
Posts: 1
Loc: Brazil
|
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
|
|
Top
|
|
|
|
#120988 - 2004-06-10 02:53 PM
Re: Very good open source IDE for KiXtart
|
Kdyer
KiX Supporter
   
Registered: 2001-01-03
Posts: 6241
Loc: Tigard, OR
|
While this seems pretty slick, there are a couple of limitations observed.
Took me a minute to figure out what was going on as I edited the .properties files outside the editor and it does not appear to like that. You need to edit these from the Options Menu.
We have talked about editors in the past.
For example - Can't decide what editor to use... Maybe this'll help
Now, on to the limitations:
- Session - The editor does not remember where you were working (ok there is a save session)..
- Find/Replace - Does not handle CR/LF.
- Tools - Did not see a place to add KiXtart/KiXtart debug or a "custom" tool
It maybe open-source and you maybe able to get it to do these things, but out-of-the-box it does not.
Kent
|
|
Top
|
|
|
|
Moderator: Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart
|
1 registered
(Henriques)
and 2516 anonymous users online.
|
|
|