【发布时间】:2013-11-27 16:34:28
【问题描述】:
我有以下代码,我使用这些代码更新了我正在使用的一些遗留代码的编码样式。它现在可以正常工作,但是令人讨厌的是,在区域上执行命令后,缓冲区会滚动,因此该区域的顶部位于窗口的顶部。我该如何解决这个问题?
(defun mkm/cleanup ()
(interactive)
(let (start end doit)
(if (region-active-p)
(setq start (region-beginning) end (region-end) doit t)
(progn (setq start (point-min) end (point-max))
(setq doit (y-or-n-p "Really cleanup whole buffer? "))))
(if doit
(save-excursion
(save-restriction
(narrow-to-region start end)
(replace-regexp "\([[:alpha:]]\)[ ]+" "\1 " nil (point-min) (point-max))
(replace-regexp " *&" " &" nil (point-min) (point-max))
(replace-regexp "[ ]*\\*" " *" nil (point-min) (point-max))
(replace-regexp "( +" "(" nil (point-min) (point-max))
(replace-regexp " +)" ")" nil (point-min) (point-max))
(replace-regexp "{ +" "{" nil (point-min) (point-max))
(replace-regexp "} +" "}" nil (point-min) (point-max))
(replace-regexp " +]" "]" nil (point-min) (point-max))
(replace-regexp "\s*,\s*" ", " nil (point-min) (point-max))
(replace-regexp "\s*->\s*" "->" nil (point-min) (point-max))
(replace-regexp "\\[ +" "\\[" nil (point-min) (point-max))
(replace-regexp " += +" " = " nil (point-min) (point-max))
(replace-regexp "\([[:alpha:]]\)[ ]+>" "\1>" nil (point-min) (point-max))
(replace-regexp "<\s+" "<" nil (point-min) (point-max))
(replace-regexp "<<\([^\s]\)" "<< \1" nil (point-min) (point-max))))
(message "Cleanup aborted."))))
【问题讨论】: