-- About -- ---------------------------------------------------- -- This file contains lua table definitons used by -- automatic loaded files, not part of the -- editor source. -- -- //config.lua -- /cfg/user.lua -- /interpreters/*.lua -- /specs/*.lua -- /tools/*.lua -- /api//*.lua -- style definition -- ---------------------------------------------------- -- all entries are optional stattr = { fg = {r,g,b}, -- foreground color 0-255 bg = {r,g,b}, -- background color i = false, -- italic b = false, -- bold u = false, -- underline fill = true, -- fill to lineend -- fn = "Lucida Console", -- font Face Name -- fx = 11, -- font size -- hs = true or {r,g,b}, -- turn hotspot on -- use the specified color as activeForeground -- use "hs = true", to turn it on without changing the color -- HotspotActiveUnderline and HotspotSingleLine are on automatically -- v = true, -- visibility for symbols of the current style } style = { -- lexer specific (inherit fg/bg from text) lexerdef = stattr, comment = stattr, stringtxt = stattr, stringeol = stattr, preprocessor = stattr, operator = stattr, number = stattr, keywords0 = stattr, keywords1 = stattr, keywords2 = stattr, keywords3 = stattr, keywords4 = stattr, keywords5 = stattr, keywords6 = stattr, keywords7 = stattr, -- common (inherit fg/bg from text) text = stattr, linenumber = stattr, bracematch = stattr, bracemiss = stattr, ctrlchar = stattr, indent = stattr, calltip = stattr, -- common special (need custom fg & bg ) sel = nil, caret = nil, caretlinebg = nil, fold = nil, whitespace = nil, } -- config definition -- ---------------------------------------------------- -- tables must exist -- content is optional -- config is loaded into existing config table config = { path = { -- path for tools/interpreters lua = "C:/lua/lua.exe", -- path to lua exe }, editor = { fontname = "Courier New", -- default font fontsize = 10, -- default size caretline = true, -- show active line iofilter = nil, -- input/output filtering of strings showfncall = true, -- use indicator to show function calls if spec allows tabwidth = 4, usetabs = true, -- if false then spaces are used usewrap = true, -- if true then the text is wrapped in the editor whitespace = false, autotabs = true, -- if true test for tabs after file load, -- sets "usetabs" to true for this file calltipdelay = nil, -- delay to show calltip (in ms) autoactivate = false, -- auto-activate/open files during debugging smartindent = false, -- use smart indentation if spec allows fold = true, -- enable code folding foldcompact = true, -- use compact fold that includes empty lines checkeol = true, -- check for eol encoding on loaded files and use it -- also report mixed eol encodings defaulteol = nil, -- default line-endings for new files; valid values are -- wxstc.wxSTC_EOL_CRLF, wxstc.wxSTC_EOL_LF and nil (OS default) nomousezoom = nil, -- disable zooming using mouse wheel autoreload = nil, -- trigger auto-reload when file is updated saveallonrun = nil, -- save all modified files before Run/Debug indentguide = true, -- show indentation guides backspaceunindent = true, -- unindent when backspace is used }, default = { name = 'untitled', fullname = 'untitled.lua', interpreter = 'luadeb', }, debugger = { verbose = false, hostname = nil, -- hostname to use when the detected one is incorrect port = nil, -- port number to use runonstart = nil, -- if debugger should run immediately after starting -- default values are different for different interpreters redirect = nil, -- "d", "c", or "r" values for default, copy, or redirect }, outputshell = { -- output and shell settings fontname = "Courier New", -- default font fontsize = 10, -- defult size }, filetree = { -- filetree settings fontname = nil, -- no default font as it is system dependent fontsize = nil, -- no default size as it is system dependent }, format = { -- various formatting strings menurecentprojects = nil, }, keymap = {}, -- mapping of menu IDs to hot keys messages = {}, -- list of messages in a particular language language = "en", -- current UI language styles = {}, -- styles table as above for editor stylesoutshell = {}, -- styles for output/shell interpreter = "luadeb", -- the default "project" lua interpreter autocomplete = true, -- whether autocomplete is on by default autoanalyzer = true, -- whether auto syntax analyzer is on by default acandtip = { shorttip = false, -- tooltips are compact during typing nodynwords = false, -- no dynamic words (user entered words) ignorecase = false, -- ignores case when performing comparison with autocomplete list symbols = true, -- include local/global symbols startat = 2, -- start suggesting dynamic words after 2 characters strategy = 2, -- 0: is string comparison -- 1: substring leading characters (camel case or _ separated) -- 2: leading + any correctly ordered fragments (default) width = 60, -- width of the tooltip text (in characters) maxlength = 450, -- max length of the tooltip on the screen }, arg = {}, -- command line arguments savebak = false, -- if bak files are created on save filehistorylength = 20, -- historylength for files projecthistorylength = 15, -- historylength for project directories singleinstance = true, -- if true creates a UDP server to run IDE once and to load files singleinstanceport = 0xe493, -- UDP port for single instance communication activateoutput = false, -- activate output/console on Run/Debug/Compile unhidewindow = false, -- to unhide a gui window projectautoopen = false, -- allow auto open/close files on a project switch autorecoverinactivity = nil, -- period of inactivity (s) for autorecover hidpi = false, -- HiDPI/Retina display support } -- application engine -- ---------------------------------------------------- app = { preinit = function() end, -- post spec/tool loading, but prior subsystems/ui generation postinit = function() end, -- post init, prior starting mainloop loadfilters = { tools = function(file) return true end, specs = function(file) return true end, interpreters = function(file) return true end, }, stringtable = { -- optional entries uses defaults otherwise editor = nil, statuswelcome = nil, -- ... } } -- api definition -- ---------------------------------------------------- -- hierarchy encoded into children api = { -- global space words, e.g "table" ["blah"] = { -- "function", "class", "keyword", "value", "lib", "method" -- method is for class:func functions type = "function", description = "this does something", -- value/function/method: -- for autocomplete type guessing, insert the string -- that the variable name is replace with -- e.g. "test = somefunc()" somefunc has valuetype of "math" -- then typing "test." will be treated as "math." in -- autcomplete logic valuetype = "api.ClassName", -- function: args = "(blah,blubb)", returns = "(foo)", -- autogenerated post load: -- concated hierarchy name (e.g. "lib.class") classname = "blah", -- children in the class hierarchy childs = { --.. recursive } }, ["blubb"] = { --... }, } -- spec definition -- ---------------------------------------------------- -- all entries are optional spec = { exts = {"ext","ext2",}, -- compatible extensions lexer = wxstc.wxSTC_LEX_LUA, -- scintilla lexer lexerstyleconvert = { -- table mapping each styles to -- appropriate lexer id stringeol = {wxstc.wxSTC_LUA_STRINGEOL,}, -- ... }, linecomment = "//", -- string for linecomments sep = "%.:", -- class.function separator match string, -- e.g in lua both . and : are allowed -- default is "\1" which should yield no matches -- and therefore disable class.func type autocompletion isfncall = function(str) return from,to end, -- function that detects positions for a substring that -- stands for a functioncall, ie " call(..)" -> 2,5 apitype = "api", -- which sub directory of "api" is relevant -- api files handle autocomplete and tooltips -- api won't affect syntax coloring keywords = { -- up to 8 strings containing space separated keywords -- used by the lexer for coloring (NOT for autocomplete). -- however each lexer supports varying amount -- of keyword types "foo bar word", "more words", } } -- tool definition -- ---------------------------------------------------- -- main entries are optional tool = { fninit = function(frame,menubar) end, -- guarantees that ide is initialized -- can be used for init -- and adding custom menu exec = { -- quick exec action, listed under "Tools" menu name = "", description = "", fn = function(wxfilename,projectdir) end, } } -- debuginterface definition -- ---------------------------------------------------- debuginterface = { update = function(self) end, -- run in idle when active close = function(self) end, -- run when closed -- following are "debugging" actions and must return -- error, running, [filePath, fileLine] run = function(self) end, step = function(self) end, over = function(self) end, out = function(self) end, terminate = function(self) end, breaknow = function(self) end, breakpoint = function(self,file,line,state) end, -- set breakpoint state -- returns result table if successful evaluate = function(self, expressions, fnSetValues) end, -- for watches tables stack = function(self) end, -- get stack information } -- interpreter definition-- ---------------------------------------------------- interpreter = { name = "", description = "", api = {"apifile_without_extension"}, -- (opt) to limit loaded lua apis frun = function(self,wfilename,withdebugger) end, fprojdir = function(self,wfilename) return "projpath_from_filename" end, -- (opt) fattachdebug = function(self) end, -- (opt) hasdebugger = false, -- if debugging is available scratchextloop = nil, -- (opt) indicates scratchpad support -- nil, no support for scratchpad; -- false, scratchpad supported; -- true, scratchpad supported and requires handling for external loop. skipcompile = nil, -- don't compile before running if true }