2009-05-27 7 views
25

Widziałem to gdzieś, ale nie mogę go teraz znaleźć. Czy w emacs jest wbudowana funkcja, czy też ktoś ma elisp, aby wyrównać wszystkie znaki równości w serii instrukcji inicjalizacji w trybie cc?W Emacs, jak ustawić wyrównujące znaki w serii instrukcji inicjalizacyjnych?

Przed:

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

Po:

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

Odpowiedz

38

Użyj M-x align-regexp (tutaj, M-x align-regexp RET = RET). Możesz również dodać "regułę wyrównania" do zmiennej align-rules-list, aby w przyszłości to zrobić: M-x align. Szczegółowe informacje można znaleźć w dokumentacji (C-h f align).

+0

Ok, ja to związane C-x |. Jak długo używam emacs i nie wiem o tym? Dzięki za pomoc. – Cheeso

+0

Jedynym problemem jest to, że "ustawia" dane wyjściowe, co prawdopodobnie nie jest tym, czego potrzebujesz. Czy znasz jakiś sposób, aby temu zapobiec? – harpo

+1

harpo: Dodałem nową odpowiedź na twoje pytanie. – phils

8

M-x align powinno załatwić sprawę.

12

To w odpowiedzi na komentarz Aby odpowiedzieć ShreevatsaR za Harpo za:

Jedyny problem z tym jest to, że „tabifies” wyjście, które prawdopodobnie nie jest to, co chcesz. Czy znasz jakiś sposób, aby temu zapobiec?

Oto co zrobiłem, aby rozwiązać ten problem:

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

To nie jest świetna odpowiedź na oryginalne pytanie, ale cenne, cenne , cenny. (Myślę, że po prostu Ballmered.) – JasonFruit

+0

Zajęło mi trochę czasu, aby zrozumieć, co to jest (http://stackoverflow.com/questions/10921225/what-does-ad-activate-do) ... –

Powiązane problemy