Visual Studio Code + Lua

7

据我所知,目前Visual Studio Code对于Lua语言仅支持语法着色,并且我们可以通过扩展程序来实现格式化和一些代码片段。

我需要了解的是是否有或计划开发某种智能感知功能。


你使用 Visual Studio Code 有什么特别的原因吗? - Basilio German
是的,因为它是其类别中最好的。 你有什么替代方案建议给我吗? - TyKonKet
显然,Lua不具备这个功能。我建议你尝试使用ZeroBrane Studio,它具有自动完成、语法高亮和着色、调试等功能,非常轻便,并且完全开源。不过,如果有人能够为VS Code开发一个Lua扩展程序,那就太好了。 - Basilio German
我需要一个可扩展的工具,以支持特定的修改上下文(自动完成/智能感知)。类似于TypeScript描述符,但由于LUA不支持此类功能,因此我需要将其作为编辑器的扩展实现。 - TyKonKet
什么是特定的修改上下文?如果你想要帮助,就不要说谜语。 - Piglet
3个回答

4
三年后,我们有了vscode-lua。据我所知,它具有某种类型的智能感知功能,并可以配置查找所需库、版本规范(5.1、5.2、5.3)、缩进、行宽和其他格式相关的设置... 试试吧!

2

实现自定义语法高亮和代码补全功能。


在VSCode中,安装扩展程序: Lua by sumneko。


我不知道如何正确使用emmyLua,所以我的例子不完美,但是只需最小的努力即可轻松设置。我的用例是将NLua集成在C#中。只需编辑带有一些代码完成的文件即可。


创建文件:Demo.lua

-- set the class a dummy name, since creator is the same name
-- eg. class name Point, creator name also Point will work
--     but will result in messy suggestions
---@class cPoint
---@field X number
---@field Y number

-- creator
---@type fun( x:number, y:number ) : cPoint
Point = {};

---@class Shapes
---@field Origin cPoint
local Shapes = nil;

---@type fun( x:number, y:number )
function Shapes:Move( x, y ) end

---@class cCircle : Shapes
---@field Radius number
local cCircle = {};           -- define to be able to ...

---@type fun( angle:number )
function cCircle:Roll( angle ) end  --    ... add methods

---@type fun( x:number, y:number, r:number ) : cCircle
Circle = {};

---@class cRectangle:Shapes
---@field Width number
---@field Height number
local cRectangle = {};

---@type fun( origin:cPoint, w:number, h:number ) : cRectangle
Rectangle = nil;

-- no method overload, so just force it
---@type fun( x:number, y:number, w:number, h:number ) : cRectangle
Rectangle = nil;

创建另一个文件:test.lua

c = Circle( 10, 10, 10 );
c.Origin.X = 10;
c.Move( 10, 10 );
c.Roll( 10 );

r = Rectangle( Point( 0, 0 ), 10, 10 );
r = Rectangle( 10, 10, 10, 10 );

-- DETECTED ERRORS
c.origin.X = 10;
s = Shapes();
r.Roll( 10 );

-- NOT DETECTED
r = Rectangle( "hello" );
c = Circle(10,10);
c = Circle();
c.Roll();
Rectangle()

result


-1

如果你想知道一个软件是否具有某些功能或者它们是否已经计划好了,StackOverflow 不是一个正确的地方。

去阅读软件开发者提供的信息。如果你在那里找不到答案,联系软件开发者并询问他们。

想象一下一家餐厅。如果你想知道他们的菜单上是否有特别的东西或者他们是否计划将其放在菜单上,最好查看菜单并询问厨师或经理。不要在街上随便问陌生人是否能帮助你...

正如一些评论中已经提到的,有一个名为 ZeroBrane 的不错的轻量级 Lua IDE。除此之外,还有很多可扩展的文本编辑器。

http://lua-users.org/wiki/LuaIntegratedDevelopmentEnvironments


5
许多微软开发人员都在Stack Overflow上,而微软将这个网站标记为开发人员可以找到答案的地方,因此我认为这是询问有关Visual Studio Code的正确场所。 - TyKonKet
4
关于ZeroBrane,它确实不错,但我并不是在寻找一个Lua IDE,正如我所说,我正在寻找一种将Lua开发带到VSCode的方法。 如果你能提供帮助那就太好了,否则你无需回复。 - TyKonKet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接