Emacs повторно резервирует весь буфер С++

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

Ответы

Ответ 1

Здесь код "indent whole buffer", который я размещаю в моем файле ~/.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)                                                                                                                                           

Изменить, включая предложение @JSONs ниже, даст вам defun, который выглядит следующим образом:

(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.

Ответ 2

C-x h C-M-\

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

Ответ 4

(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/)