Elisp 是不是;“恢复”;在保存偏移中,是否再次恢复当前缓冲区的内容?
我现在正在做ELISP教程,不确定标准ELISP函数保存偏移(或同等保存当前缓冲区)中“恢复”的含义。这可能只是因为我不是以英语为母语的人,不知道“恢复”有多强或有多弱 假设当前缓冲区是A,我在保存偏移环境中执行一个操作,其中A被更改,例如插入一个字符串,我希望保存偏移恢复A,所以撤消该操作中的更改 我不理解的实际问题是从复制到缓冲区的示例:Elisp 是不是;“恢复”;在保存偏移中,是否再次恢复当前缓冲区的内容?,elisp,Elisp,我现在正在做ELISP教程,不确定标准ELISP函数保存偏移(或同等保存当前缓冲区)中“恢复”的含义。这可能只是因为我不是以英语为母语的人,不知道“恢复”有多强或有多弱 假设当前缓冲区是A,我在保存偏移环境中执行一个操作,其中A被更改,例如插入一个字符串,我希望保存偏移恢复A,所以撤消该操作中的更改 我不理解的实际问题是从复制到缓冲区的示例: (defun copy-to-buffer (buffer start end) (interactive "BCopy to buffer: \nr
(defun copy-to-buffer (buffer start end)
(interactive "BCopy to buffer: \nr")
(let ((oldbuf (current-buffer)))
(with-current-buffer (get-buffer-create buffer)
(barf-if-buffer-read-only)
(erase-buffer)
(save-excursion
(insert-buffer-substring oldbuf start end)))))
最后一次保存偏移在with current buffer的帧中工作,它使用户给定的缓冲区成为当前缓冲区,并在其中插入一个字符串。如果恢复缓冲区,则会撤消插入。显然不是,但是“恢复缓冲区”意味着什么呢 这里有一个简单的函数来说明保存缓冲区意味着什么:
(defun foo ()
(interactive)
(insert "foo")
(save-excursion
(set-buffer "*scratch*")
(insert "bar")))
从不是*scratch
的缓冲区调用此函数。它将插入当前缓冲区,
切换到*scratch*
,插入其中。还有一件事:保存游览
恢复
从
*scratch*
切换到buffer,这样您就回到了开始的buffer中 Thx,我尝试了你的问题,还将(insert“foo”)int切换为save-shiftion。所以“还原”只是说“重新设置当前值”。save-shiftion
的文档相当明确(Ctrl-h f save-shiftion):“保存点、标记和当前缓冲区;执行主体;还原这些内容。”