Lua and SciTE

SciTE is a SCIntilla based Text Editor. Originally built to demonstrate Scintilla, it has grown to be a generally useful editor with facilities for building and running programs. It is best used for jobs with simple configurations.

SciTE is currently available for Intel Windows (XP or later) and Linux compatible operating systems with GTK+. It has been run on Windows 7 and on Fedora 12 and Ubuntu 10.10 with GTK+ 2.20. Here is a screenshot of SciTE.

You can download Scintilla and SciTE.

There are some extra configuration files that can enhance SciTE for various languages and APIs.

Questions and comments about SciTE should be directed to the scite-interest mailing list, which is for discussion of SciTE and related projects, their bugs and future features. This is a low traffic list, averaging less than 50 messages per week. To avoid spam, only list members can write to the list. New versions of SciTE are announced on scite-interest and may also be received by SourceForge members by clicking on the Monitor column icon for “scite” on the downloads page.

There is a Scintilla project page hosted on Get Scintilla at SourceForge.net. Fast, secure and Free Open Source software downloads

Lua’s name is not an acronym. It is properly spelled as “Lua” or occasionally “lua”, but never “LUA”. See lua.org/about.html for the whole story.

First of all work your way through the Programming in Lua, it should take you a day or two to get the gist of Lua. The book is free online. Besides it is the best tutorial out there on Lua,

Also: If you’re purpose is Lua for World of Warcraft (probably not but just in case) you can check out this tutorial

And: Here is a tips and tricks thread on StackOverflow, might help give you some ideas of what to expect from Lua

Suggested Programs/Exercises:

Since you’re initially looking at Lua for web development try to understand and improve the Data Description example in PIL. It’ll give you a few good ideas and a nice feel for the power or Lua.

Then you might want to try out playing with the Data Structures chapter, although Lua has a single complex data-type, the Table, that chapter will show you Lua-like ways to make a table do anything you need.

Finally once you begin to grok metatables you should design a class system (yes with Lua you decide how your class system works). I’m sure everyone that knows Lua has made a dozen class systems, a good chapter to get you started on a class system is Object-Oriented Programming

And if you got time and know C or something like that (C# and Java included) try extending an application with Lua, but that’ll take a week or two to do

 

extended traceback printer

The standard Python traceback module provides very useful functions to produce useful information about where and why an error occurred. Traceback objects actually contain a great deal more information than the traceback module displays, however. That information can greatly assist in detecting the cause of your error.

There is a Python recipe that, while not an interactive debugger, makes it easier to debug Python scripts within SciTE.

Here’s an example of an extended traceback printer you might use, followed by a usage example.

import sys,traceback
defprint_exc_plus():
    “””
    Print the usual traceback information, followed by a listing of all the
    local variables in each frame.
    “””
    tb=sys.exc_info()[2]
    stack=[]
    
    whiletb:
        stack.append(tb.tb_frame)
        tb=tb.tb_next
    traceback.print_exc()
    print“Locals by frame, innermost last”
    forframeinstack:
        print
        print“Frame %s in %s at line %s”%(frame.f_code.co_name,
                                             frame.f_code.co_filename,
                                             frame.f_lineno)
        forkey,valueinframe.f_locals.items():
            print“t%20s = “%key,
            #We have to be careful not to cause a new error in our error
            #printer! Calling str() on an unknown object could cause an
            #error we don’t want.
            try:                   
                printvalue
            except:
                print“<ERROR WHILE PRINTING VALUE>”
        
try:
        iflen(sys.argv)>1:
                length=len(sys.argv)
                foriinrange(1,length):       
                        sys.argv[i1]=sys.argv[i]
                delsys.argv[length1]
                execfile(sys.argv[0])
except:
        print_exc_plus()