changeset 78543:4e51ba479b3c

(ada-gnatls-args): Fix docstring. (ada-treat-cmd-string): Improve error message. (ada-do-file-completion): Call `ada-require-project-file', so project variables are set properly. (ada-prj-find-prj-file): Delete Emacs 20.2 support. (ada-gnatfind-buffer-name): New constant. (ada-find-any-references): Use new constant. Set buffer name properly in compilation-start. Toggle read-only properly. (ada-find-in-src-path): Fix spelling error in docstring.
author Juanma Barranquero <lekktu@gmail.com>
date Mon, 13 Aug 2007 11:38:37 +0000
parents 889170c201e6
children 4af36cf4d2db
files lisp/progmodes/ada-xref.el
diffstat 1 files changed, 15 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/ada-xref.el	Mon Aug 13 11:37:50 2007 +0000
+++ b/lisp/progmodes/ada-xref.el	Mon Aug 13 11:38:37 2007 +0000
@@ -71,7 +71,7 @@
   :type 'string :group 'ada)
 
 (defcustom ada-gnatls-args '("-v")
-  "*Arguments to pass to `gnatfind' to find location of the runtime.
+  "*Arguments to pass to `gnatls' to find location of the runtime.
 Typical use is to pass `--RTS=soft-floats' on some systems that support it.
 
 You can also add `-I-' if you do not want the current directory to be included.
@@ -322,7 +322,6 @@
 	 (reverse ada-xref-runtime-library-ali-path))
     ))
 
-
 (defun ada-treat-cmd-string (cmd-string)
   "Replace meta-sequences like ${...} in CMD-STRING with the appropriate value.
 Assumes project exists.
@@ -345,7 +344,7 @@
       ;; Check if there is an environment variable with the same name
       (if (null value)
 	  (if (not (setq value (getenv name)))
-	      (message "%s" (concat "No environment variable " name " found"))))
+	      (message "%s" (concat "No project or environment variable " name " found"))))
 
       (cond
        ((null value)
@@ -535,6 +534,11 @@
 Completion is attempted in all the directories in the source path, as
 defined in the project file."
   ;; FIXME: doc arguments
+
+  ;; This function is not itself interactive, but it is called as part
+  ;; of the prompt of interactive functions, so we require a project
+  ;; file.
+  (ada-require-project-file)
   (let (list
 	(dirs (ada-xref-get-src-dir-field)))
 
@@ -663,9 +667,6 @@
 			    ada-prj-file-extension))
 	     (dir          (file-name-directory current-file))
 
-	     ;; on Emacs 20.2, directory-files does not work if
-	     ;; parse-sexp-lookup-properties is set
-	     (parse-sexp-lookup-properties nil)
 	     (prj-files    (directory-files
 			    dir t
 			    (concat ".*" (regexp-quote
@@ -905,6 +906,8 @@
   (interactive "d\nP")
   (ada-find-references pos arg t))
 
+(defconst ada-gnatfind-buffer-name "*gnatfind*")
+
 (defun ada-find-any-references
   (entity &optional file line column local-only append)
   "Search for references to any entity whose name is ENTITY.
@@ -943,23 +946,25 @@
 	    (setq command (concat command " -P" ada-prj-default-project-file))
 	  (setq command (concat command " -p" ada-prj-default-project-file))))
 
-    (if (and append (get-buffer "*gnatfind*"))
+    (if (and append (get-buffer ada-gnatfind-buffer-name))
 	(save-excursion
 	  (set-buffer "*gnatfind*")
 	  (setq old-contents (buffer-string))))
 
     (let ((compilation-error "reference"))
-      (compilation-start command))
+      (compilation-start command 'compilation-mode (lambda (mode) ada-gnatfind-buffer-name)))
 
     ;;  Hide the "Compilation" menu
     (save-excursion
-      (set-buffer "*gnatfind*")
+      (set-buffer ada-gnatfind-buffer-name)
       (local-unset-key [menu-bar compilation-menu])
 
       (if old-contents
 	  (progn
 	    (goto-char 1)
+	    (set 'buffer-read-only nil)
 	    (insert old-contents)
+	    (set 'buffer-read-only t)
 	    (goto-char (point-max)))))
     )
   )
@@ -1940,7 +1945,7 @@
 anywhere in the object path.
 This command requires the external `egrep' program to be available.
 
-This works well when one is using an external librarie and wants to find
+This works well when one is using an external library and wants to find
 the declaration and documentation of the subprograms one is using."
 ;; FIXME: what does this function do?
   (let (list