我現在在做ELISP教程,並且不確定標準elisp函數save-excursion(或同樣保存當前緩衝區)中的「還原」的含義。這可能只是因爲我不是母語爲英語的人,並且不知道「恢復」的強弱程度。save-excursion中的「還原」是否還原當前緩衝區的內容?
假設當前緩衝區是A,並且我在save-excursion環境中執行了一個操作,其中A被修改了,例如插入了一個字符串,我希望保存遊覽來恢復A,以便撤消該操作中的更改。
實際的問題,我不明白的是從示例複製到緩衝區:
(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)))))
最後保存衝程工作中的框架與電流緩衝,這讓給予緩衝由用戶當前並在那裏插入一個字符串。如果它恢復緩衝區,它將撤消插入。顯然它不是,但是「恢復緩衝區」是什麼意思?
'save-excursion'的文檔非常明確(Ctrl-h f save-excursion):「保存點,標記和當前緩衝區;執行BODY;恢復這些東西。」 – tripleee