CWDG论坛-专业魔兽插件's Archiver

biggates 发表于 2008-8-19 10:39

Notepad++ 的 Lua 扩展(语法高亮,运行等)

注:刚才发现这个高亮文件貌似与 [url=http://bbs.cwowaddon.com/space-uid-6396.html]Lylandris[/url] 在 [url=http://bbs.cwowaddon.com/thread-4586-1-1.html]http://bbs.cwowaddon.com/thread-4586-1-1.html[/url] 发的差不多……
我是从硬盘里翻出来的,不知道来源了@@

使用方法:将附件 Lua.zip 中的 langs.xml 解压到 Notepad++ 安装目录,替换同名文件,即可
[attach]7280[/attach]
在WindowsXP SP2 + Notepad++ 5.0.3 中通过

biggates 发表于 2008-8-19 10:44

使用Notepad++作为Lua IDE

要使用 Notepad++ 作为 Lua 的 IDE,还需要进行以下操作:
1、安装 Lua 引擎
有很多编译版可以选择,以下两款均已通过本人测试:
Lua for Windows : [url=http://luaforge.net/projects/luaforwindows/]http://luaforge.net/projects/luaforwindows/[/url]
Lua - WoW : [url=http://luaforge.net/projects/lua-wow/]http://luaforge.net/projects/lua-wow/[/url]
根据 Simonw 大的介绍,后者是带wow环境的lua(不带游戏api) ... 没有深入研究有什么区别。

安装完成之后,使用命令行测试一下。能够正确运行 Lua 语句就可以了。

2、安装 NppExec 插件
这是一款 Notepad++ 的插件,可以在 [url=http://sourceforge.net/project/showfiles.php?group_id=189927]这里[/url] 获取。

PS : 在同一地址可以获取 5.0.3 版可用的 Function List ,也很好用。

3、设置 NppExec
安装完成后,在“插件”菜单会出现NppExec的菜单,如图:
[attach]7281[/attach]
点击 Execute... 菜单,(或按F6),出现下图所示的窗口:
[attach]7282[/attach]
在 Command(s): 中输入相应的代码:[code]NPP_SAVE //编译前保存修改
cd "$(CURRENT_DIRECTORY)"
cls
"F:\Program Files\Lua\5.1\lua.exe" $(FILE_NAME) //编译文件[/code]注意:lua.exe 的路径需要改成自己的
之后可以点击 Save 将脚本保存下来,方便以后调用。

下面是运行效果
[attach]7284[/attach]

接下来,继续设置:
在 NppExec 菜单中,点击 Console Output Filters... 项,进入下图所示的界面:
[attach]7283[/attach]
按照如下方法,添加分析的语法(注意相应的空格):[code]*lua.exe: %FILE%:%LINE%: *[/code]RGB中可以指定符合条件的语句的颜色,后面可以指定字符显示效果( I - 斜体 B - 粗体 U - 下划线 )
根据需要,将具体的应用程序名称修改为 lua.exe 或 lua-wow.exe 。

之后可以在 Notepad++ 里面试验一下错误的内容:
[attach]7285[/attach]
如图,双击 Console 里红色的错误提示,Notepad++ 将自动定位到出错的行数。

PS: 中文的问题:
由于 console 命令行的问题,目前无法支持 UTF-8 编码的中文字符串。在下面的例子中,使用 "中国" 测试,文件使用 ANSI 编码时可以正常看到 strlen 和输出结果,文件改用 UTF-8 编码后只能看到 strlen 结果,输出结果是乱码。在命令行下测试,结果相同。
[attach]7286[/attach]

附:NppExec 进阶配置
在 Notepad++ 安装目录下 \plugins\Config\NppExec.ini  中进行配置:
[code][Console]
SaveOnExecute=1
Path_AutoDblQuotes=1[/code]

其中 SaveOnExecute = 1 表示在运行时进行保存
Path_AutoDblQuotes = 1 表示在长文件名中自动使用引号

biggates 发表于 2008-8-19 11:26

测试说明

到此为止,可以使用 Notepad++ 进行单文件的测试了。
但是,如何进行多文件的测试呢?

(请参考 CWDG 库中的 Ace3 目录下的 test 目录下的各个文件)[code]dofile("wow_api.lua")
dofile("LibStub.lua")
dofile("../AceAddon-3.0/AceAddon-3.0.lua")

local AceAddon = LibStub("AceAddon-3.0")

do -- Test create addon.

        local success, reason, addon
        
        -- 'name' - string expected
        success, reason = pcall( function() AceAddon:NewAddon() end )
        assert( success == false and reason:find("'name' - string expected",1,true) )

        -- Cannot find a library instance of "Testing123".
        success, reason = pcall( function() AceAddon:NewAddon("TestAddon-1", "Testing123") end )
        assert( success == false and reason:find("Cannot find a library instance",1,true) )

        -- Success.
        addon = AceAddon:NewAddon("TestAddon-2")
        assert( addon and addon == AceAddon:GetAddon("TestAddon-2") )
        
        -- Addon 'TestAddon-2' already exists.
        success, reason = pcall( function() addon = AceAddon:NewAddon("TestAddon-2") end )
        assert( success == false and reason:find("Addon 'TestAddon-2' already exists",1,true) )

end[/code]简言之,在新建的测试文件中,使用 dofile() 引入依赖的库和插件文件,用测试流程模拟 WoW 的调用,用 assert 来进行结果的断言。

总之,在WoW插件开发的环境中,在这个简单的环境下,仅仅是能够保证语法不出错,还无法对大多数重要功能如SecureTemplate, GUI等进行测试。感觉效果没有用 SF 来的爽(表抽我)。

cis_cn 发表于 2008-8-19 12:36

我把地址改成自己的了[code]
NPP_SAVE
cd "$(CURRENT_DIRECTORY)"
cls
"C:\Program Files\Lua\5.1\lua.exe"  $(FILE_NAME)[/code]确定

出现[code]
"C:\Program Files\Lua\5.1\lua.exe"  new 1.lua
Process started >>>
C:\Program Files\Lua\5.1\lua.exe: cannot open new: No such file or directory
<<< Process finished.
================ READY ================[/code]这个是什么原因呢?

biggates 发表于 2008-8-19 14:09

这是由于文件名中包含引号导致的。
在 NppExec.ini 中添加 Path_AutoDblQuotes=1 即可

月色狼影 发表于 2008-8-22 01:52

bg啊....  你也NND上QQ群里聊聊啊....

wlk插件 可以开始写起来了...

mysdia 发表于 2008-8-26 17:45

wow函数色彩高亮和functionlist很不错,收下了,多谢.

mysdia 发表于 2008-9-22 14:19

增加两条规则,让functionlist支持带[color=blue]local[/color] 的函数.
[code]
local xxx = function() end
local function xxx() end
[/code]

Kuso_EDKing 发表于 2008-9-28 12:43

最新的np++ 5.0 我都没有找到在哪里添加function list...
头大

mysdia 发表于 2008-9-28 15:35

插件菜单下面没有function list的话可以到这里下载:
[url]http://sourceforge.net/project/showfiles.php?group_id=189927&package_id=223668[/url]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.