CppCXY / EmmyLuaCodeStyle

fast, powerful, and feature-rich Lua formatting and checking tool.
MIT License
139 stars 27 forks source link

转换后产生语法错误 1.."1"; <const>= 0 #144

Closed hoofcushion closed 1 year ago

hoofcushion commented 1 year ago

数字后不能直接使用字符串拼接运算符,这会导致 第一个 . 被识别为小数点 .editorconfig

space_around_concat_operator=false
#此选项消除字符串拼接运算符前后的空白符

转换前

return function()
 return 1 .."1"
end

转换后

return function()
 return 1.."1"
end
hoofcushion commented 1 year ago

在转换参数包含 -overwrite 时,能否在转换后的文本出现语法错误时不覆写源文件? 现有 -overwrite 参数改为 -forceoverwrite,以作 debug 之用。

CppCXY commented 1 year ago

在转换参数包含 -overwrite 时,能否在转换后的文本出现语法错误时不覆写源文件?现有 -overwrite 参数改为 -forceoverwrite

不能, 因为转换后的语法正确性通常是保证的, 仅有1,,"aaa"这种情况是我预先知道的,只是懒得改

CppCXY commented 1 year ago

我选择实现为对称性, 也就是左侧是数字的时候 .. 两边都加上空白

CppCXY commented 1 year ago

等github action 编译完成后可以选择从这里下载https://github.com/CppCXY/EmmyLuaCodeStyle/actions/runs/6238309453

hoofcushion commented 1 year ago

>后不能直接连接赋值运算符,这会导致 >= 被识别为比较运算符 .editorconfig

space_around_assign_operator=false
# 类型: bool, 默认: true
# 赋值运算符前后的空格

转换前

local VAR <const> = 0

转换后

local VAR <const>=0
hoofcushion commented 1 year ago

关闭 space_around_concat_operator 期望是减少空格的,所以希望能有非对称的选项, 以原 space_around_concat_operator: false 的结果按正则将"(\d).."换为"\1 .."即可,在数字和字符串连接符间插入一个空格。

CppCXY commented 1 year ago

关闭 space_around_concat_operator 期望是减少空格的,所以希望能有非对称的选项, 以原 space_around_concat_operator: false 的结果按正则将"(\d).."换为"\1 .."即可,在数字和字符串连接符间插入一个空格。

代码格式化不是正则替换, 正则替换理论可做, 实际性能很差, 合理的代码格式化依然需要建立在充分的代码分析的基础上.

你的需求我也很清楚, 做起来也很简单,只是我觉得有点丑而已

CppCXY commented 1 year ago

你得需求是把两个选项设置为: space_around_concat_operator=no_space_asym space_around_assign_operator=no_space_asym