with-current-buffer不会移动点

nav*_*eet 5 emacs elisp

在Elisp中,这种看似简单易用的代码实际上并没有改变这一点.

(with-current-buffer "foo"
  (goto-char (point-max)))
Run Code Online (Sandbox Code Playgroud)

AFAIK with-current-buffer不应该恢复目标缓冲区中的点.如果没有,那么我如何操纵缓冲区中的点?

Ste*_*fan 6

我认为你把缓冲区的重点与窗口点混淆了.如果要在显示"foo"的某个窗口中移动光标,则需要在执行时选择该窗口goto-char,否则需要使用set-window-point.通常,缓冲区具有N + 1个点(一个是它自己的,N是用于显示缓冲区的N个窗口).