我想将该区域复制到 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)))))
然而,我有一种强烈的感觉,那就是这不是最理想的,因为我在搞乱杀戮戒指。如何在不影响的情况下做到这一点?(额外的问题:如果没有活动区域,我对区域或整个缓冲区的处理方式是一个好方法吗?)