Emacs重新定义整个C ++缓冲区

时间:2010-11-03 19:21:09

标签: emacs indentation

我有一个c ++代码文件,但有一个非常丑陋的缩进。我如何告诉emacs将缩进应用于文件?

4 个答案:

答案 0 :(得分:30)

C-x h C-M-\

这两个命令选择整个缓冲区并运行indent-region

答案 1 :(得分:8)

这是我放在~/.emacs.d/defuns.el文件中的“缩进整个缓冲区”代码。我采取了额外的步骤并将其绑定到快捷键C-x \。这个也将清除所有悬挂的whitspace,并将制表符转换为它们的空间等效表示。

(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 :(得分:5)

选择整个缓冲区并执行M-x缩进区域

请参阅this guide

答案 3 :(得分:1)

(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/复制了这个)