gpt4 book ai didi

emacs - 如何在不影响 kill ring 的情况下将一个区域或整个缓冲区复制到 Emacs 中的另一个缓冲区?

转载 作者:行者123 更新时间:2023-12-01 10:02:10 25 4
gpt4 key购买 nike

我想将该区域复制到 Emacs 中的另一个(临时)缓冲区,但如果没有(事件的)区域,我想复制整个当前缓冲区。我所做的如下:

(defun do-something-with-region-or-buffer ()
(interactive)
(save-excursion
(let ((begin (point-min)) (end (point-max)))
(when (region-active-p)
(setq begin (region-beginning))
(setq end (region-end)))
(copy-region-as-kill begin end)
(with-temp-buffer
(switch-to-buffer (current-buffer))
(rename-buffer "*My Temp Buffer*")
(delete-other-windows)
(yank)
(do-something-with-current-buffer)))))

但是,我有一种强烈的感觉,认为这是次优的,因为我在摆弄 kill ring。怎么做才不影响呢? (奖金问题:我对区域整个缓冲区做事的方式如果没有事件区域是好的吗?)

最佳答案

我就是这样做的:

(defun aak/dswrob ()
(interactive)
(let* ((regionp (region-active-p))
(beg (and regionp (region-beginning)))
(end (and regionp (region-end)))
(buf (current-buffer)))
(with-temp-buffer
(switch-to-buffer (current-buffer) nil t)
(rename-buffer "*My Temp Buffer*" t)
(insert-buffer-substring buf beg end)
(read-key-sequence "Keys?"))))

由您决定是否要 insert-buffer-substringinsert-buffer-substring-no-properties,但是没有必要使用杀死戒指。

在内部交互地做一些事情也很奇怪with-temp-buffer:你要在那里运行一种模态循环吗?还是只是显示一些进展?

关于处理区域整个缓冲区(注意:取模变窄),这并不是很不寻常(参见 replace-string 和 friend )。

关于emacs - 如何在不影响 kill ring 的情况下将一个区域或整个缓冲区复制到 Emacs 中的另一个缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14636090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com