自动在二进制运算符周围添加空格(使用正则表达式匹配的 emacs)



我想匹配代码中的所有二进制运算符,并确保它们被空格包围(出于编码风格的目的(。如果需要,必须添加空格。

我正在使用emacs,我相信可以使用replace-regexp或类似的东西。

二进制运算符仅考虑用于 C 语言。现在,我有一些不详尽的案例研究:

标准案例

a=b将变得a = b

a+=b将成为a += b

a-=b等...

a*=b

a/=b

左令牌粘合

a= b将变得a = b

a+= b将变得a += b

等。。。

右令牌粘合

a =b将成为a = b

a +=b将变得a += b

等。。。

控制案例

a = ba += b等...不必更改(我们不想添加更多空格(

第一次尝试

我尝试匹配这个正则表达式:[^ ]\+?\-?\*?\/?=[^ ]表示=符号与右侧空格以外的任何字符和任何算术运算符(+*-/(,一次或零次(使用?(之前有任何其他字符,而不是左侧的空格。 我在这里是因为这些剂量不起作用,至少在 emacs 功能re-building。匹配是错误的。有人有什么想法可以帮忙吗?

PS :我专注于那些正则表达式,因为+*-符号在正则表达式中是特殊字符。但我希望将来能够将这个函数应用于所有 C 二进制运算符。

P.P.S :我知道*字符和指针会有问题,但我保留它以备后用......

https://github.com/davidshepherd7/electric-operator

似乎值得一试。告诉您可能正在使用哪种主要模式。

正则表达式不适用于代码缩进,因为它们会匹配所有内容,包括字符串常量、注释等中的子字符串。您可以创建自己的缩进样式,或者某些内置样式可能适合您的需求:https://www.emacswiki.org/emacs/IndentingC

最新更新