让UltraEdit完美支持Lua语法
作者:Tuuzed(土仔) 发表于:2008年12月27日
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
http://www.cppblog.com/tuuzed/archive/2008/12/27/70516.html
最近在研究Lua脚本语言(个人觉得它是Basic、C、C++的结合体),可是“强大”的UltraEdit默认安装后是不支持Lua语法高亮显示的,满屏幕“黑黑”的鸡肠字符让人感觉编程是那么的索然无味,没有了灵感。
终于有一天GOOGLE了一下,发现了很多解决办法,最好的办法就是:先去UltraEdit的官网下载支持Lua的Wordfiles文件(这里),是个文本文件(lua.txt)。打开UltraEdit安装目录下的wordfile.txt,把lua.txt文件中的内容拷贝粘贴到wordfile.txt的末尾,存盘,OK,于是UltraEdit语法高亮项多出Lua一项,可以选择使用了。比起网上说的02年版的lua.txt,这个04版(也是很旧)已经完美支持“注释块”和“注释行”高亮了,所以无需在改它的第一行。
但是,使用一段时间后,还是发现有问题,比如:有部分关键字没有加亮(如:os,pair, ipair等);不支持代码折叠(不能很好地知道结束关键字end是属于哪个while、for、function等);对UltraEdit的F8(函数列表)功能支持得不完美。还好,看了UltraEdit帮助后,自己修改了一下,解决了上述问题,下面就贴出我的lua.txt(在这里下载修改后的Lua.txt)。
1 /L20"Lua" Line Comment = -- Block Comment On = [[ Block Comment Off = ]] String Chars = "' Escape Char = \ File Extensions = LUA BIN
2 /Delimiters = ~!@%^&*()-+=|\/{}[]:;"'<> , .?
3 /Function String 1 = "function[ ]++[a-zA-Z]*)"
4 /Function String 2 = "function[ ]++([ a-zA-Z]*)"
5 /Open Fold Strings = "function" "if" "while" "for"
6 /Close Fold Strings = "end"
7 /C1 "key words"
8 and
9 break
10 do
11 else
12 elseif
13 end
14 function
15 if in
16 local
17 nil not
18 or
19 repeat return
20 then
21 until
22 while
23 /C2
24 abs acos appendto ascii asin assert atan atan2
25 call ceil clock collectgarbage copytagmethods cos
26 date deg dofile dostring
27 error execute exit
28 false find floor foreach foreachvar format frexp
29 getbinmethod getenv getglobal gettagmethod gfind gmatch gsub
30 insert ipairs
31 ldexp log log10
32 match max min mod
33 newtag next nextvar
34 os
35 pairs print
36 rad random randomseed rawgetglobal rawgettable rawsetglobal rawsettable read
37 readfrom remove rename
38 seterrormethod setglobal setlocale settag settagmethod sin sqrt strbyte sub
39 strchar strfind string strlen strlower strrep strsub strupper
40 table tag tan tmpname tonumber tostring true type
41 write writeto
42 /C3
43 $debug
44 $else
45 $end
46 $endinput
47 $if
48 $ifnot
49 $nodebug
50 /C4
51 PI
52 _INPUT _OUTPUT _STDERR _STDIN _STDOUT
53 /C5
54 +
55 -
56 *
57 // /
58 ^
59 <
60 >
61 =
62 ~
63 %
64 .
65 :
66 /C6
67 ;
68 ,
69 (
70 )
71 {
72 }
73 [
74 ]
75 /C7
76 cgi cgilua cgilua_url char2hexa chdir
77 dbluaerrorfb dblua_escape decode default_script
78 encodecgi encodetable escape
79 filetype
80 getvalue
81 hexa hexa2char html_mask
82 includehtml insertfield
83 lua_mask
84 maketable map mkurl
85 nopipe
86 preprocess
87 redirect relativeurl relative_url
88 saveluavar savestate script_path script_pdir script_vdir stateerrormethod
89 statefile stdin strsplit
90 unescape
91 /C8
92 DBClose DBExec DBOpen DBRow
支持UltraEdit的F8(函数列表)功能的是3、4行;支持代码折叠的是5、6行;增加了部分关键字(io,pair,ipair等),但还不完整,可以根据以后编程需要自己再添加,添加时一定要按字母排列顺序“插”对位置!