In Emacs, how to line up equals signs in a series

2019-01-21 23:06发布

I saw this somewhere, but cannot find it now. Is there a built-in function in emacs, or does someone have elisp, to line up all the equals signs in a series of inititialization statments in cc-mode?

Before:

int t=9;
Graphics g = new Graphics();
List<String> list = new List<String>();

After:

int          t    = 9;
Graphics     g    = new Graphics();
List<String> list = new List<String>();

3条回答
萌系小妹纸
2楼-- · 2019-01-21 23:31

This is in response to harpo's comment to ShreevatsaR's answer:

The only problem with this is that it "tabifies" the output, which is probably not what you want. Do you know any way to prevent this?

Here's what I did to resolve that issue:

;; Align with spaces only
(defadvice align-regexp (around align-regexp-with-spaces)
  "Never use tabs for alignment."
  (let ((indent-tabs-mode nil))
    ad-do-it))
(ad-activate 'align-regexp)
查看更多
贪生不怕死
3楼-- · 2019-01-21 23:33

Use M-x align-regexp (here, M-x align-regexp RET = RET). You can also add an "alignment rule" to the variable align-rules-list, so that in future M-x align will do it. See the documentation (C-h f align) for details.

查看更多
We Are One
4楼-- · 2019-01-21 23:33

M-x align should do the trick.

查看更多
登录 后发表回答