ggtag-find-file似乎覆盖了select-window

时间:2015-04-20 21:23:06

标签: emacs elisp global emacs24

假设我有一个功能:

(defun test (file line)
  (let ((currwin (get-buffer-window  (current-buffer))))
    (other-window 1)
    ;; (find-file filename)
    (ggtags-find-file file)
    (goto-line line)
    (select-window currwin)
    )
  )

这使用ggtags包中的新ggtags函数。

ggtags-find-file在“我的窗口”中显示但goto-line在其他窗口(应显示ggtags-find-file时)发生了什么事情!

现在让我们采取一个有趣的变化:

(defun test (file line)
  (let (currwin (get-buffer-window  (current-buffer)))
;;    (setq currwin (get-buffer-window  (current-buffer))) ;; (A)
    (other-window 1)
    ;; (find-file filename)
    (ggtags-find-file file)
    (goto-line line)
    ;;    (select-window currwin)  ;; (B)
;;    (other-window 1)    ;; (C)
    )
  )

在这个变化中(实际上是一个错字,因为我忘记了外部封闭()), 我在“其他窗口”中显示了显示,但goto-line无法正常工作。 [事实上,它在它下面的缓冲区工作!]

更有趣的是,如果我取消注释(C)OR(A)& (B),我回到了早先的状态。

似乎ggtags-find-file是一个衍生出来的过程。

我做了这个实验:

(defun test (file line)
  (with-output-to-temp-buffer "*Test*"
    (ggtags-find-file file)
    (goto-line line)
    )
  (switch-to-buffer-other-window "*Test*")
  )

在这种情况下,我看到 Test 显示半秒,并显示ggtags-file

无论如何,欢迎提出建议,帮助,批评!

N.B。   我可能会注意到,如果我使用find-file,似乎所有人都在工作!

0 个答案:

没有答案