如何在屏幕移出后保持选定的区域

时间:2014-03-04 18:11:02

标签: emacs elisp

如果区域滚动到视线之外,是否存在选择区域功能以保留选择?

我每天都会使用两种选定的区域。第一种是使用移位键在各种移动功能中使用交互式代码"^" - 例如,左或右。第二种是set-mark-command。在第一种情况下,当我向上或向下滚动时,取消选择突出显示的区域。在第二种情况下,如果所选区域在滚动时触摸窗口的顶部或底部,则突出显示的区域会更改/移动。

理想情况下,我想选择一个区域,然后可以自由地在缓冲区内从point-min移动到point-max。

3 个答案:

答案 0 :(得分:2)

我认为没有这样的功能。事情是emacs在滚动时移动点(当点移出窗口时),这就是所选区域发生变化的原因。见question

答案 1 :(得分:2)

看起来很有希望:

https://sites.google.com/site/steveyemacsutils/multi-select-el

emacswiki.org上还有一个multi-region.el

答案 2 :(得分:1)

INITIAL (2014年3月4日):第一份草稿。 lawlist-mwheel-scroll是对mwheel-scrollmwheel.el的修改 - 主要修改是删除 (let ((newpoint (point))) (goto-char opoint) (deactivate-mark) (goto-char newpoint))并将其替换为基于{的固定叠加层在向上或向下滚动之前立即{1}}和region-begin

编辑(2014年3月5日):修改后的region-end行为更像lawlist-mwheel-scroll,原本打算在mwheel-scroll内。由于可以从左到右或从右到左选择区域,因此mwheel.el可以位于所选区域的任一侧。因此,original-pointregion-begin不会用于计算region-end是否已移动 - 我们使用point并在滚动后将其与潜在的新original-point进行比较已经发生了。将先前函数(point)的内容合并到函数lawlist-select-region中,以便不再使用前者。


  
lawlist-activate-deactivate-mark

  
(global-set-key (kbd "C-c c") 'lawlist-copy-selected-region)

(global-set-key (kbd "C-SPC") 'lawlist-activate-deactivate-mark)

(global-set-key [(wheel)] 'lawlist-mwheel-scroll)

(global-set-key [(wheel-down)] 'lawlist-mwheel-scroll)

(global-set-key [(wheel-up)] 'lawlist-mwheel-scroll)