庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

Emacs之一键格式化

Posted on 2011-07-26 11:24 dennis 阅读(9484) 评论(4)  编辑  收藏 所属分类: 工具和命令

    格式化源码是很常见的需求,emacs有个indent-region函数用于格式化选定的代码,前提是你处在某个非text mode下,如c-mode或者java-mode之类。如果要格式化整个文件,你需要先选定整个文件(C-x-h),然后调用indent-region(或者 C-M-\ )。两个命令总是麻烦,我们可以定义个函数搞定这一切,并绑定在一个特定键上,实现一键格式化:

;;格式化整个文件函数
(defun indent
-whole ()
  (interactive)
  (indent
-region (point-min) (point-max))
  (message 
"format successfully"))
;;绑定到F7键
(global
-set-key [f7] 'indent-whole)

    将这段代码添加到你的emacs配置文件(~/.emacs),重启emacs,以后格式化源码都可以用F7一键搞定。

评论

# re: Emacs之一键格式化[未登录]  回复  更多评论   

2011-07-26 14:52 by jh
这是我用的函数:

(defun indent-buffer ()
"Indent the whole buffer."
(interactive)
(save-excursion
(indent-region (point-min) (point-max) nil)))

可以避免光标位置移动。

# re: Emacs之一键格式化[未登录]  回复  更多评论   

2011-07-26 14:59 by dennis
@jh
感谢,这个版本更好,我update下。

# re: Emacs之一键格式化  回复  更多评论   

2011-07-26 15:01 by dennis
@jh
貌似不调用save-excursion,光标也没有发生移动。

# re: Emacs之一键格式化  回复  更多评论   

2011-07-27 13:49 by Regis
不需要重启emacs, c-x c-e 一下新加的代码就可以了

只有注册用户登录后才能发表评论。


网站导航: