更改Emacs中If语句的样式?

时间:2010-12-14 17:02:58

标签: regex emacs

我的公司最近添加了一些新的代码样式规则,我想知道是否有一种简单的方法可以通过emacs来改变一些具有正则表达式替换的东西。

如果语句现在必须如下所示:

if (expression) {

我有许多看起来像这样:

if(expression){   

缺乏空间。有没有一种简单的方法来解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果expression总是在一行上,你可能能够regexp替换它,但为了安全起见,我会使用一次丢弃函数:

(defun my-fix-style ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward "\\_<if(" nil t)
      (backward-char)
      (insert " ")
      (forward-sexp)
      (unless (looking-at "[ \t\n]")
        (insert " ")))))

答案 1 :(得分:1)

只是我的两分钱,但如果我要用emacs做这个,我可能会避免使用正则表达式并分两部分来处理它。首先,我通过做一个Meta-%替换if(if (“if(”“if(”引号仅用于描述,它们不属于输入然后回答每个单独的替换查询,或者给它一个“!”告诉它做所有替换。重复关闭){) {的过程。

在我的头顶,我希望第一个替代品可以毫无问题地工作。第二个也会在循环中得到“){”组合,但是如果你的新标准需要if语句的空间,我希望它也可以用于循环,所以这似乎应该是一件好事。