首页 > 解决方案 > 在掩埋缓冲区上的 goto-char 后 Emacs 没有移动点

问题描述

如果我评估

(with-current-buffer "xx" 
 (goto-char(point-max)))

当缓冲区 xx 被掩埋时,点在我切换到它后不会移动。在为错误筛选代码 5 天后才发现它不是一个错误,而是一种令人发狂的行为,我找不到任何文档或相关搜索结果,这让我发疯了。

标签: emacsmotion

解决方案


您将点移动到该缓冲区中您想要的位置,但不是在任何窗口中。有问题的缓冲区永远不需要显示。with-current-buffer让 Lisp 代码在缓冲区中做事。你混淆window-pointpoint.

试试这个,看看区别,假设您的缓冲区xx显示在某个框架的某个可见窗口中(或者如果它在一个不可见窗口中,则使用t而不是):visible

(with-current-buffer "xx"
  (goto-char 5000)
  (message "PT: %S, WINDOW PT: %S"
           (point)
           (window-point (get-buffer-window "xx" 'visible))))

您可以使用函数set-window-point来设置window-point. 请参阅 Elisp 手册,节点Window Point


推荐阅读