Emacs переиндентирует весь буфер C ++ - PullRequest
16 голосов
/ 03 ноября 2010

У меня есть файл кода на C ++, но у меня довольно уродливая неопределенность.Как я могу сказать emacs повторно применить отступ к файлу?

Ответы [ 4 ]

30 голосов
/ 03 ноября 2010

C-x h C-M-\

Эти две команды выбирают весь буфер и запускают indent-region.

8 голосов
/ 03 ноября 2010

Вот код "отступ всего буфера", который я помещаю в мой файл ~/.emacs.d/defuns.el.Я сделал дополнительный шаг и привязал его к быстрой клавише C-x \.Этот также очистит все ваши висячие пробелы, а также преобразует символы табуляции в их эквивалентное пробел представление.

(defun indent-buffer ()                                                                                                                                                            
  "Indents an entire buffer using the default intenting scheme."                                                                                                                   
  (interactive)                                                                                                                                                                    
  (point-to-register 'o)                                                                                                                                                           
  (delete-trailing-whitespace)                                                                                                                                                     
  (indent-region (point-min) (point-max) nil)                                                                                                                                      
  (untabify (point-min) (point-max))                                                                                                                                               
  (jump-to-register 'o))                                                                                                                                                           

(global-set-key "\C-x\\" 'indent-buffer)                                                                                                                                           

Правка, включив предложенное ниже предложение @JSON, даст вам определение, которое выглядит следующим образом:1006 *

(defun indent-buffer ()                                                                                                                                                            
  "Indents an entire buffer using the default intenting scheme."                                                                                                                   
  (interactive)                                                                                                                                                                    
  (save-excursion                                                                                                                                                                  
    (delete-trailing-whitespace)                                                                                                                                                   
    (indent-region (point-min) (point-max) nil)                                                                                                                                    
    (untabify (point-min) (point-max))))                                                                                                                                           

Я проверил это, и оно работает так же, как и раньше.Спасибо за указание на это JSON.

5 голосов
/ 03 ноября 2010

Выделите весь буфер и выполните M-x Indent-Region

См. это руководство .

1 голос
/ 03 ноября 2010
(defun iwb ()
  "indent whole buffer"
  (interactive)
  (delete-trailing-whitespace)
  (indent-region (point-min) (point-max) nil)
  (untabify (point-min) (point-max)))

Вы можете использовать этот маленький макрос (я скопировал это из http://emacsblog.org/2007/01/17/indent-whole-buffer/)

...