Lua中的缩进代码如何实现?

16

有没有Lua代码可以缩进Lua代码?

我有很多Lua代码需要缩进,而且是在一个纯Lua环境中。

为了维护我的问题:对于你们中的一些人来说,这种情况听起来似乎不可能。这非常类似于请求Emacs Lisp代码来格式化文本。这是一个真正的工作(公司内部)Lua环境。这是一个纯Lua环境。我正在寻找一种可以缩进Lua代码的Lua工具,而不是关于最好的编辑器的意见。Paul Kulchenko提供了一个惊人的解决方案,Yusuf X也提供了一个解决方案。


1
这并不是一个Lua问题,而是一个文本编辑器问题。任何值得一试的编辑器都应该能够缩进代码。我在Vim中通过按=来缩进代码。 - Mud
2
@Mud 这绝对是一个 Lua 问题。我所拥有的环境只有 Lua,没有其他东西。我知道有一些外部编辑器可以编辑 Lua。 - John Smith
"我所拥有的环境只有Lua,没有其他的。你没有编辑器吗?真的吗?" - Mud
1
@Mud,是的确实。我有一个用C语言编写的基本编辑器,其中许多支持代码都是Lua语言编写的。这不是一个桌面计算机... - John Smith
1
如果还有人在寻找的话,这里有另一个选项。它可以保留您的字符串和注释,并在需要时添加操作符间距等更多功能(听起来像是销售宣传)。它大约有400行代码。 - Plakhoy
你可能需要一个像Sublime Text或Atom这样的现代编辑器。 - xpol
6个回答

15

我写了一个Lua 美化器并将其应用于我的项目,其中有大量的 Lua 文件(总共约8千行)。这个美化器是用 Perl 编写的(是的,我知道问题是它应该用 Lua 写),但 (1) 它只有 55 行代码,应该很容易翻译成 Lua(我只是没有时间去做),以及 (2) 您可以在其他地方格式化文件,然后转移到您的环境中(除非您需要定期进行重新格式化)。

这个美化器基于另一个基于 Lua 的美化器(截至 2013 年 3 月 11 日,链接失效;网页存档),但原来的这个美化器没有处理我感兴趣的所有情况,所以我最终重写了它。但它仍然可能适用于你。

美化器不会改变换行结构(这是要求之一),这使得检查易于进行,但会更改缩进和格式(并处理嵌入式匿名函数等复杂情况)。链接中包含一些它所做的示例。您还可以查看我为我们项目提交的大部分转换文件的长提交:https://github.com/pkulchenko/ZeroBraneStudio/commit/85be27559058ce085e95cef47de2c11185f9211a

如果您只是想简单地缩进文件(而不是将缩进逻辑集成到您的应用程序中),那么您可以使用ZeroBrane Studio IDE编辑|源代码|正确缩进Ctrl-I)。


我发现我可以很容易地将 Lua Beautifier 改编以满足我的需求。那几乎就是我所寻找的东西。 - John Smith
Lua基础的链接已失效。 - Oliver Cooper
感谢Oliver;已更新帖子。不幸的是,我找不到原始的Lua代码副本。 - Paul Kulchenko
它无法处理多行注释和字符串([[ ]]和--[[ ]]样式),这些内部的任何不匹配文本都很容易使其偏离轨迹。它也无法检测常用于Lua中的逻辑运算符。 - Pica
嗨,@JohnSmith,你能分享一下你的Lua美化器版本吗? - Good Pen

2

实际上,它似乎并没有真正进行缩进,也就是说,它不会解析代码并决定每行应该如何缩进。相反,它只是将 现有的 缩进更改为某种规范形式,具体取决于现有的缩进是否正确。 - snogglethorpe

1

我尝试了许多相似的工具,但都没有真正成功。然后我找到了解决方案:基于Eclipse的Lua开发工具。

http://eclipse.org/koneki/ldt/

下载适用于您版本的所需文件(如果您使用64位Windows,则32位版本无法使用)。 运行.exe文件(无需安装!),然后执行ctrl + shift + f,您的代码将全部漂亮打印出来!


0

0
听起来Serpent可能是你正在寻找的东西;它可以使用缩进美化Lua源代码。

0

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