summaryrefslogtreecommitdiff
path: root/lisp/cedet/cedet-global.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/cedet/cedet-global.el')
-rw-r--r--lisp/cedet/cedet-global.el31
1 files changed, 31 insertions, 0 deletions
diff --git a/lisp/cedet/cedet-global.el b/lisp/cedet/cedet-global.el
index 3a34ca44e25..cedd1dd1162 100644
--- a/lisp/cedet/cedet-global.el
+++ b/lisp/cedet/cedet-global.el
@@ -33,6 +33,12 @@
: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.
@@ -75,6 +81,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."
@@ -152,6 +171,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