]> rtime.felk.cvut.cz Git - sojka/company-mode.git/commitdiff
Don't start GTAGS, if no GTAGS file was found.
authorNikolaj Schumacher <git@nschum.de>
Wed, 6 May 2009 10:43:19 +0000 (12:43 +0200)
committerNikolaj Schumacher <git@nschum.de>
Wed, 6 May 2009 11:18:11 +0000 (13:18 +0200)
company-gtags.el

index c4d664bf49f3bce0e550b77f11a6a3b3c200761f..196050dfce6cb84925dcf9a4b228a42444115d47 100644 (file)
   'company-gtags-gnu-global-program-name
   'company-gtags-executable)
 
+(defvar company-gtags--tags-available-p 'unknown)
+(make-variable-buffer-local 'company-gtags--tags-available-p)
+
 (defvar company-gtags-modes '(c-mode c++-mode jde-mode java-mode php-mode))
 
+(defun company-gtags--tags-available-p ()
+  (if (eq company-gtags--tags-available-p 'unknown)
+      (setq company-gtags--tags-available-p
+            (company-locate-dominating-file buffer-file-name "GTAGS"))
+    company-gtags--tags-available-p))
+
 (defun company-gtags-fetch-tags (prefix)
   (with-temp-buffer
     (let (tags)
@@ -60,6 +69,7 @@
     ('prefix (and company-gtags-executable
                   (memq major-mode company-gtags-modes)
                   (not (company-in-string-or-comment))
+                  (company-gtags--tags-available-p)
                   (or (company-grab-symbol) 'stop)))
     ('candidates (company-gtags-fetch-tags arg))
     ('sorted t)