更新

  • 2021/10/18 增加 Intellij Idea 支持介绍
  • 2021/03/09 增加不同平台下载方式与额外说明
  • 2019/07/21 初次发布

介绍

一般团队中都会制定不同的编码风格,但是在实施时没有强制性的措施,无法保持统一。

在这一方面,Go 与 Rust 做得就很好,分别有一个 gofmt 与 rustfmt 工具负责在保存时格式化代码。

环境

  • macOS 10.14.5
  • cmake 3.15.0
  • Xcode 10.2.1
  • Visual Studio Code 1.31.1

工具

其实 Lua 也可以使用格式化工具。经过在网上搜索比较之后,个人觉得 Koihik/LuaFormatter: Code formatter for Lua 比较合适。

手动编译

由于作者未提供二进制可执行文件,因此需要手动编译,下面是 macOS 下编译方法:

1
2
3
4
5
6
7
brew install cmake

git clone https://github.com/Koihik/LuaFormatter.git
cd LuaFormatter
cmake .
make
make install

自行提取

虽然作者并未在仓库的发布页面提供编译好的可执行程序,但是在发布的插件中集成了编译好的版本。

在 VSCode 扩展中心中搜索下载 vscode-lua-format - Visual Studio Marketplace,然后在下面的目录中提取自己需要的可执行文件。

  • macOS ~/.vscode/extensions/koihik.vscode-lua-format-1.3.7/bin

  • Windows %USERPROFILE%\.vscode\extensions\koihik.vscode-lua-format-1.3.7\bin

配置

wiki 中提供了所有选项及其参数解释,建议在实际使用时将所有选项及对应的值都保存到文件中,这样就算是默认值发生了变化,也不会有任何影响。

使用

首先需要安装 vscode-lua-format - Visual Studio Marketplace

然后就可以打开一个 Lua 文件试试格式化的效果。

扩展

可以做以下的事情,最大化地利用格式化工具:

  • 使用命令行工具可以批量快速格式化所有已有文件
  • 配置到 IDE 保存时自动格式化是为了平时统一格式
  • 配置到版本控制系统的提交钩子可以防止有遗漏,建议同时配置客户端与服务器钩子
  • 最好项目初期时格式化,否则后期干扰 blame 结果(按行查看最后修改的作者功能)

Intellij Idea 支持

现在 Intellij Idea + EmmyLua 的组合越来越受欢迎,可以说对 Lua 的支持非常全面。安装完 EmmyLua 的插件后就支持 Lua 文件的格式化了。

因此只需要在项目上先整体格式化一遍代码:

Reformat a module or a directory

  1. In the Project tool window, right-click a module or a directory and from the context menu, select Reformat Code or press ⌥ ⌘ L.
  2. In the dialog that opens, specify the reformatting options and click OK.

然后使用 Intelli Idea 2021.2 中新增了一个非常重要的功能:Action on Save

Automatically reformat code on save

You can configure the IDE to reformat code in modified files automatically when your changes are saved.

  1. In the Settings/Preferences dialog ⌘ ,, select Tools | Actions on Save.

  2. Enable the Reformat code option.

    Additionally, you can click Configure scope to specify the patterns of filenames and directories that you want to exclude from reformatting.

设置项目保存时执行格式化

旧版本还可以使用插件实现此功能: