自动在左右二进制运算符中添加空格(使用正则表达式匹配whit emacs)

时间:2018-10-16 14:36:03

标签: regex emacs whitespace

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

我正在使用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等...无需更改(我们不想添加更多空格)

第一次尝试

我尝试匹配此正则表达式:[^ ]\\+?\\-?\\*?\\/?=[^ ]的意思是=符号用右边的空格和任何算术运算符(+*-/)以外的任何字符进行一次或零次(使用?)开头,后面要加上空格以外的任何其他字符。 我在这里是因为这些功能至少在re-building emacs函数下不起作用。比赛是错误的。有人有帮助的想法吗?

P.S:我专注于那些正则表达式,因为+*-符号是正则表达式中的特殊字符。但我希望将来能够将此功能应用于所有C二元运算符。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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