Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

格式化时等号对齐应该使用最小长度 #15

Closed
sumneko opened this issue Feb 17, 2022 · 13 comments
Closed

格式化时等号对齐应该使用最小长度 #15

sumneko opened this issue Feb 17, 2022 · 13 comments
Labels
discuss enhancement New feature or request

Comments

@sumneko
Copy link

sumneko commented Feb 17, 2022

local aaaaaa = 1
local b  = 1
local c        = 1

现在会被格式化为

local aaaaaa   = 1
local b        = 1
local c        = 1

但用户的期望一般是

local aaaaaa = 1
local b      = 1
local c      = 1
@CppCXY CppCXY added the discuss label Feb 17, 2022
@CppCXY
Copy link
Owner

CppCXY commented Feb 17, 2022

这个期望可能并不是这样,但是这可以提供一个选项

@sumneko
Copy link
Author

sumneko commented Feb 17, 2022

什么情况下会期望用最长长度?
对我来说,这种情况经常出现于将一个长变量名删除或改短,此时期望能全部格式化为最短的,包括以下情况:

local b      = 1
local c      = 1

格式化为

local b = 1
local c = 1

@CppCXY
Copy link
Owner

CppCXY commented Feb 17, 2022

local t      = 123
local dd   =  123
pcall(ffff)
local eee  = 789 

连续语句中插入一个函数调用,则该连续无法与下文保持连续,但是我又希望他们是对齐的。

@sumneko
Copy link
Author

sumneko commented Feb 17, 2022

local t      = 123
local dd   =  123
pcall(ffff)
local eee  = 789 

连续语句中插入一个函数调用,则该连续无法与下文保持连续,但是我又希望他们是对齐的。

我觉得这是连续赋值代码块规则的特殊规则,应该在判断连续赋值代码块时,通过设置允许中间插入几行非赋值语句(默认为0)。

@CppCXY
Copy link
Owner

CppCXY commented Feb 17, 2022

需要实现的规则改为:在弱对齐规则下实现最小对齐实现最小对齐。

无法在强对齐规则下实现最小对齐,这是因为强对齐规则必须以首行为判断标准。
之所以实现以首行为判断标准,是因为如果不这样,那么对齐到等号这个行为无法快速还原到一般排版。

@CppCXY CppCXY added the enhancement New feature or request label Feb 17, 2022
@sumneko
Copy link
Author

sumneko commented Feb 17, 2022

我觉得你的弱对齐强对齐可以通过格式化与诊断分离来取消掉这个概念,格式化的时候总是使用最小对齐,诊断时允许有任意数量的空格只要对齐即可。

@CppCXY
Copy link
Owner

CppCXY commented Feb 17, 2022

这样是因为

local t =13
local c = 123
local d = 789
local e  =  8910 

我不希望对齐的情况下,我就是手抖多打了空格,那么格式化就不应该给我对齐到等号

@sumneko
Copy link
Author

sumneko commented Feb 17, 2022

这种情况应该总是格式化为

local t = 13
local c = 123
local d = 789
local e = 8910 

吧。
这个行为和我期望的相同,对齐到最小长度。

@CppCXY
Copy link
Owner

CppCXY commented Feb 17, 2022

那如果是:

local t =13
local c = 123
local d = 789
local eeeeeee  = 8910 

@sumneko
Copy link
Author

sumneko commented Feb 17, 2022

那如果是:

local t =13
local c = 123
local d = 789
local eeeeeee =  8910 
local t       = 13
local c       = 123
local d       = 789
local eeeeeee = 8910

也是对齐到最小长度

@CppCXY
Copy link
Owner

CppCXY commented Feb 17, 2022

但是这不符合前提, 我不希望这段代码对齐到等号

@sumneko
Copy link
Author

sumneko commented Feb 17, 2022

但是这不符合前提, 我不希望这段代码对齐到等号

你的这个期望和我之前提的 tablefield 不想对齐到一个很长的长度一样,属于例外规则,反正我可以接受手动插入一个换行符来分割。

local t = 13
local c = 123
local d = 789

local eeeeeee = 8910

@CppCXY
Copy link
Owner

CppCXY commented Feb 17, 2022

对齐规则将放弃weak_align_rule选项,并总是采用最小对齐。

@CppCXY CppCXY closed this as completed in 0e21e3c Feb 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discuss enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants