meow-grab

新加了一个叫 meow-grab 的功能,在 grab 分支。大致上是创建一个第二选区。 这个选区会被 meow 中使用 kill-ring 的命令看作是当前的 kill-ring,然后就可以做一些有意思的事

首先可以用来当一个位置的标记,之后回来,通过创建和取消。 grab-mark 可以用来做交换两个内容,通过 replace-save 。grab-ex

可以用来从一个 buffer 向另一个 buffer 摘内容,通过 kill/save 。 grab-send 也可以用来自动向 minibuffer 插入。 grab-rep 对 kill-ring 的影响只有 window 可见时,grab 才可用,所以很多时候可以不用取消,直接关了窗口就可以。 grab-cover

还有一点 Breaking Change: 同时去掉了一些针对 line 选择的 hack。现在如果需要删掉或复制一整行(带换行),需要用 bounds-of-thing line 的方式来选,粘贴的时候也不会自动的插入换行。

3 个赞

看着很有趣,能说一下场景不?

这么复杂的操作,年纪大一点的估计记不住。

1 个赞

就是把一个区域,当做 kill-ring 的 car,然后原本操作kill-ring 的命令,就会变成操作那个区域。

实际上只有两个新命令,一个创建选区,一个取消。 其他的命令都是现有的,用途的话还要用用才能想到更多。

记录位置和交换还挺实用的,其他用途确实还得再想想,不过感觉挺有开发空间的。

好有意思的功能!

其实 emacs 里面有一整套的操作 kill-ring 的东西

实装了这个功能,还优化了很多命令的实现。

1 个赞

拉取了最新的master。算是理解了grab的操作逻辑。赞

我感觉我搞懂了,就是从另一个地方复制,剪贴到当前位置,或和当前位置交换,或是简化 Minibuffer 输入的时候用。

1 个赞

meow-save 的fallback被覆盖了。我自己追加了下。

(defun meow-save ()
  "Copy, like command `kill-ring-save'.

This command support `meow-selection-command-fallback'."
  (interactive)
  (if (region-active-p)
      (meow--with-kill-ring
       (let ((select-enable-clipboard nil))
         (meow--prepare-region-for-kill)
         (meow--execute-kbd-macro meow--kbd-kill-ring-save)))
    (meow--selection-fallback)))
2 个赞

是个 BUG, 我修了

1 个赞