2012-07-13 45 views
4

当我在emacs中点击“撤消”时,它撤销了我的编辑,但是我失去了选定的区域,我必须返回并重新选择它。有没有撤消绑定所以它会选择最后选定区域我该如何回忆在emacs中选择的最后一个区域?

办法,我可以拿出最好的是:

(global-set-key (kbd "\C-o") 
       (lambda() 
        (interactive) 
        (progn (undo) 
          (exchange-point-and-mark) 
         ))) 

回答

1

您可以随时使用advice把你所拥有的和周围undo包装它:

(defadvice undo (around reactivate-mark (&optional arg) activate) 
    (let ((ma mark-active)) 
    ad-do-it 
    ;; Reactiveate mark if it was active 
    (when ma 
     (exchange-point-and-mark)))) 
+2

你应该插入一个全球测试变量,如“撤消-句话区域-P”(或钩调用)在这个建议里面,因为这个建议在全局范围内扩展了这个功能,并且在某些模式下他可能不想要这样的行为,等等。我相信这样做更好。 – alinsoar 2012-07-15 19:53:53

22

你不会失去的区域。该地区仍然在猛拉环。

如果你想重新选择,你可以简单地调用exchange-point-and-mark,其默认绑定到C-XC-X

相关问题