#alignment #cargo #format #tool #terminal

app cargo-align

一个简单的代码对齐工具

3 个版本

0.1.2 2024年7月30日
0.1.1 2024年7月23日
0.1.0 2024年7月23日

命令行工具 中排名第 187

Download history 202/week @ 2024-07-19 184/week @ 2024-07-26 21/week @ 2024-08-02

每月下载 407

MIT/Apache

18KB
421

cargo-align

一个简单的代码文本对齐工具。

安装

cargo安装 cargo-align

使用方法

在您想要对齐的包中运行 cargo align,所有工作区根目录下的文件都将被对齐。

可以通过将特定文件或文件夹作为第一个参数传递来对其进行对齐,例如 cargo align -- path/to/file/or/folder

在文件中写入字符串 align_by stop 将跳过该文件中的其余部分。

写入字符串 align_by "" 将对以下行的内容进行对齐,直到第一个与引号内容不匹配的行。

可以通过写入 align_by sort "" 在对齐后对匹配的对齐行进行排序。

对齐标记由空格分隔,align_by "= ;" 将首先按 = 对齐,然后按 ; 从左到右对齐。

对齐标记仅使用一次。这意味着 align_by "=" 只会在每行中找到的第一个 = 上对齐,并忽略后续的。

可以使用转义字符 \ 对双引号进行对齐。例如 align_by "\""

局限性、原因和当前状态

这个工具主要是为我的项目开发的。它目前只具备足够的功能来支持我的使用案例。如果您希望看到它支持您的案例,欢迎提出问题/拉取请求。

目前为简化实现,硬编码使用cargo metadata的工作空间路径。

我选择了align_by sort ""语法,因为除了注释和字符串之外,它不是有效的Rust和TOML语法,因此与现有代码发生冲突的可能性极低。由于没有对对齐语句是否位于Rust/TOML注释内进行特殊检查,所以它可以在任何编程语言上正常工作。

这个功能灵感来源于VSCode插件align-by-regex,尽管目前为了简化实现已经去掉了正则表达式部分。

由于实现非常基础,我不得不添加align_by stop,否则几乎不可能编写关于测试。

示例

未对齐

align_by "= ;"
let a = 111;
let bbb = 2;

对齐

align_by "= ;"
let a   = 111;
let bbb =   2;

更多示例可以在测试中找到。

不使用cargo install

请确保已安装Rust。

git clone https://github.com/MeGaGiGaGon/cargo-align.git

cdcargo-align

cargobuild --release

在您想要对齐的crate中运行path_you_cloned_to/target/release/cargo-align.exe,或者传递特定的文件或文件夹path_you_cloned_to/target/release/cargo-align.exe target/path

许可协议

本项目可依据以下任一许可协议进行使用:

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可协议定义,您有意提交的任何贡献,都将按照上述方式双许可,不附加任何额外条款或条件。

依赖关系

~135KB