]> code.delx.au - gnu-emacs/blobdiff - lisp/cedet/cedet-global.el
lisp/startup.el (argi): Declare as global variable (bug#9275).
[gnu-emacs] / lisp / cedet / cedet-global.el
index b98bd31693501395e46904531bc762067e40949d..d2a9794ec81e846d8c6a4b059e2a04355ef85d17 100644 (file)
@@ -1,6 +1,6 @@
 ;;; cedet-global.el --- GNU Global support for CEDET.
 
-;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
 
 ;; Author: Eric M. Ludlam <eric@siege-engine.com>
 ;; Package: cedet
   :type 'string
   :group 'cedet)
 
+(defcustom cedet-global-gtags-command "gtags"
+  "Command name for the GNU Global gtags executable.
+GTAGS is used to create the tags table queried by the 'global' command."
+  :type 'string
+  :group 'cedet)
+
 ;;; Code:
 (defun cedet-gnu-global-search (searchtext texttype type scope)
   "Perform a search with GNU Global, return the created buffer.
@@ -76,6 +82,19 @@ SCOPE is the scope of the search, such as 'project or 'subdirs."
           flags)
     b))
 
+(defun cedet-gnu-global-gtags-call (flags)
+  "Create GNU Global TAGS using gtags with FLAGS."
+  (let ((b (get-buffer-create "*CEDET Global gtags*"))
+       (cd default-directory)
+       )
+    (with-current-buffer b
+      (setq default-directory cd)
+      (erase-buffer))
+    (apply 'call-process cedet-global-gtags-command
+          nil b nil
+          flags)
+    b))
+
 (defun cedet-gnu-global-expand-filename (filename)
   "Expand the FILENAME with GNU Global.
 Return a fully qualified filename."
@@ -153,7 +172,18 @@ return nil."
       ;; Return the results
       (nreverse hits))))
 
+(defun cedet-gnu-global-create/update-database (&optional dir)
+  "Create a GNU Global database in DIR.
+If a database already exists, then just update it."
+  (interactive "DDirectory: ")
+  (let ((root (cedet-gnu-global-root dir)))
+    (if root (setq dir root))
+    (let ((default-directory dir))
+      (cedet-gnu-global-gtags-call
+       (when root
+        '("-i");; Incremental update flag.
+        )))))
+
 (provide 'cedet-global)
 
-;; arch-tag: 0d0d3ac2-91ef-4820-bb2b-1d59ccf38392
 ;;; cedet-global.el ends here