Emacs,快速跳转和go-mode:导航期间点未更新

时间:2015-04-09 10:43:05

标签: emacs elisp

我想将go-mode godef-jump与快速跳转结合起来,这样我就可以在跳跃之前和之后放下一个标记。

(defun my-go-quick-jump-push-def-hook (pnt)
  (interactive "d")
  (message "%s %d" (buffer-name) pnt)
  (quick-jump-push-marker)
  (godef-jump pnt)
  (quick-jump-push-marker)
  (message "%s %d" (buffer-name) (point))
)

(defun my-go-mode-hook ()
  (local-set-key (kbd "M-.") 'my-go-quick-jump-push-def-hook)
)

但是,message调用表示在调用godef-jump完成后缓冲区尚未更新,(point)也未提供与pnt不同的值。但godef-jump确实完成了,并在必要时更改了缓冲区。因此,我无法弄清楚评估顺序的某些事情 - 它几乎就像实际的导航一样懒洋洋地进行着。这是预期的还是go-mode正在做的奇怪的事情?

go-mode位于https://github.com/dominikh/go-mode.el/blob/master/go-mode.el, 快速跳转是http://www.emacswiki.org/emacs/quick-jump.el

非常感谢。

更新:这个问题似乎只发生在跳转到不同的缓冲区时。我不太了解with-current-buffer(在godef--find-file-line-column中使用)来理解出现了什么问题 - 我对文档的阅读是with-current-buffer不应该导致该缓冲区被激活一旦身体完成,所以我无法理解godef-jump为什么会起作用......

1 个答案:

答案 0 :(得分:1)

回答我自己的问题,基本上,看看我做的PR和讨论:https://github.com/dominikh/go-mode.el/pull/85

这个问题特定于go-mode,现在已经修复了。