我想将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
为什么会起作用......
答案 0 :(得分:1)
回答我自己的问题,基本上,看看我做的PR和讨论:https://github.com/dominikh/go-mode.el/pull/85
这个问题特定于go-mode,现在已经修复了。