emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] 05/14: Fix #42: Clear ggtags-project-root in non-file buffers


From: Leo Liu
Subject: [elpa] 05/14: Fix #42: Clear ggtags-project-root in non-file buffers
Date: Sun, 30 Mar 2014 07:02:39 +0000

leoliu pushed a commit to branch master
in repository elpa.

commit a0d7e04fc7f63e1c0eb14b819d804f941d6b6b2f
Author: Leo Liu <address@hidden>
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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]