Update copyright notices for 2013.
[bpt/emacs.git] / lisp / cedet / cedet-idutils.el
index 562749d..2f1dda4 100644 (file)
@@ -1,10 +1,11 @@
 ;;; cedet-idutils.el --- ID Utils support for CEDET.
 
-;; Copyright (C) 2009, 2010  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
 ;; Author: Eric M. Ludlam <eric@siege-engine.com>
 ;; Version: 0.2
 ;; Keywords: OO, lisp
+;; Package: cedet
 
 ;; This file is part of GNU Emacs.
 
   :type 'string
   :group 'cedet)
 
+(defcustom cedet-idutils-make-command "mkid"
+  "Command name for the ID Utils executable for creating token databases."
+  :type 'string
+  :group 'cedet)
+
 (defun cedet-idutils-search (searchtext texttype type scope)
   "Perform a search with ID Utils, return the created buffer.
 SEARCHTEXT is text to find.
@@ -78,7 +84,7 @@ Note: Scope is not yet supported."
 
 (defun cedet-idutils-fnid-call (flags)
   "Call ID Utils fnid with the list of FLAGS.
-Return the created buffer with with program output."
+Return the created buffer with program output."
   (let ((b (get-buffer-create "*CEDET fnid*"))
        (cd default-directory)
        )
@@ -104,6 +110,20 @@ Return the created buffer with with program output."
           flags)
     b))
 
+(defun cedet-idutils-mkid-call (flags)
+  "Call ID Utils mkid with the list of FLAGS.
+Return the created buffer with program output."
+  (let ((b (get-buffer-create "*CEDET mkid*"))
+       (cd default-directory)
+       )
+    (with-current-buffer b
+      (setq default-directory cd)
+      (erase-buffer))
+    (apply 'call-process cedet-idutils-make-command
+          nil b nil
+          flags)
+    b))
+
 ;;; UTIL CALLS
 ;;
 (defun cedet-idutils-expand-filename (filename)
@@ -143,8 +163,8 @@ the error code."
 
 (defun cedet-idutils-version-check (&optional noerror)
   "Check the version of the installed ID Utils command.
-If optional programatic argument NOERROR is non-nil, then
-instead of throwing an error if Global isn't available, then
+If optional programmatic argument NOERROR is non-nil,
+then instead of throwing an error if Global isn't available,
 return nil."
   (interactive)
   (require 'inversion)
@@ -159,8 +179,9 @@ return nil."
          nil)
       (with-current-buffer b
        (goto-char (point-min))
-       (re-search-forward "fnid - \\([0-9.]+\\)" nil t)
-       (setq rev (match-string 1))
+       (if (re-search-forward "fnid - \\([0-9.]+\\)" nil t)
+           (setq rev (match-string 1))
+         (setq rev "0"))
        (if (inversion-check-version rev nil cedet-idutils-min-version)
            (if noerror
                nil
@@ -171,8 +192,13 @@ return nil."
            (message "ID Utils %s  - Good enough for CEDET." rev))
          t)))))
 
+(defun cedet-idutils-create/update-database (&optional dir)
+  "Create an IDUtils database in DIR.
+IDUtils must start from scratch when updating a database."
+  (interactive "DDirectory: ")
+  (let ((default-directory dir))
+    (cedet-idutils-mkid-call nil)))
 
 (provide 'cedet-idutils)
 
-;; arch-tag: 663ca082-5b3d-4384-8710-cc74f990b501
 ;;; cedet-idutils.el ends here