【发布时间】:2015-04-09 10:43:05
【问题描述】:
我想将 go-mode godef-jump 与 quick-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 完全有效......
【问题讨论】:
-
您可能需要考虑迁移到Emacs.SE。
-
啊,我什至不知道它的存在。是不是把这个删了再发一个新的? - 虽然我可能是盲人,但我看不到迁移这个问题的方法......