В Emacs, как выстроить знаки равенства в серии операторов инициализации?

Я видел это где-то, но не могу найти это сейчас. Есть ли в emacs встроенная функция, или у кого-то есть elisp, чтобы выстроить все знаки равенства в серию инициализационных определений в cc-режиме?

До:

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

После:

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

3 ответа

Решение

Использование M-x align-regexp (Вот, M-x align-regexp RET = RET). Вы также можете добавить "правило выравнивания" к переменной align-rules-listтак, чтобы в будущем M-x align сделаю это. Смотрите документацию (C-h f align) для деталей.

Это в ответ на комментарий гарпо к ответу ShreevatsaR:

Единственная проблема с этим заключается в том, что он "табулирует" вывод, что, вероятно, не то, что вы хотите. Вы знаете какой-нибудь способ предотвратить это?

Вот что я сделал, чтобы решить эту проблему:

;; 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)

Mx выравнивание должно сделать свое дело.

Другие вопросы по тегам