leoliu pushed a commit to branch master
in repository elpa.
commit a0d7e04fc7f63e1c0eb14b819d804f941d6b6b2f
Author: Leo Liu <[email protected]>
Date: Thu Mar 27 17:11:14 2014 +0800
Fix #42: Clear ggtags-project-root in non-file buffers
---
ggtags.el | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/ggtags.el b/ggtags.el
index e31b45f..aeac34a 100644
--- a/ggtags.el
+++ b/ggtags.el
@@ -392,8 +392,19 @@ Value is new modtime if updated."
(defvar-local ggtags-project-root 'unset
"Internal variable for project root directory.")
+(defun ggtags-clear-project-root ()
+ (kill-local-variable 'ggtags-project-root))
+
;;;###autoload
(defun ggtags-find-project ()
+ ;; See https://github.com/leoliu/ggtags/issues/42
+ ;;
+ ;; It is unsafe to cache `ggtags-project-root' in non-file buffers.
+ ;; But we keep the cache for at this a command's duration so that
+ ;; multiple calls of `ggtags-find-project' has no performance
+ ;; impact.
+ (unless buffer-file-name
+ (add-hook 'pre-command-hook #'ggtags-clear-project-root nil t))
(let ((project (gethash ggtags-project-root ggtags-projects)))
(if (ggtags-project-p project)
(if (ggtags-project-expired-p project)