]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/ada-mode/gpr-mode.el
publish ada-mode 5.1.6, wisi 1.0.6, new package ada-ref-man
[gnu-emacs-elpa] / packages / ada-mode / gpr-mode.el
index cd9ddd6406fd60ef4c6559a4dae266047c680204..1bf11c841ad178c76efc02b6ddcf63a85e77b53b 100644 (file)
@@ -36,6 +36,7 @@
 
 ;; we reuse several ada-mode functions
 (require 'ada-mode)
+(require 'cl-lib)
 
 (defvar gpr-mode-map
   (let ((map (make-sparse-keymap)))
@@ -77,8 +78,9 @@
     ["------"        nil nil]
     ["Find and select project ..." ada-build-prompt-select-prj-file t]
     ["Select project ..."          ada-prj-select                   t]
-    ["Set as current project"      gpr-set-as-project               t]
+    ["Parse and select current file" gpr-set-as-project             t]
     ["Show current project"        ada-prj-show                     t]
+    ["Show project search path"    ada-prj-show-path                t]
     ["Next compilation error"      next-error                       t]
     ["Show secondary error"        ada-show-secondary-error         t]
     ["Show last parse error"       gpr-show-parse-error             t]
@@ -208,6 +210,14 @@ of the package or project point is in or just after, or nil.")
 (defun gpr-set-as-project (&optional file)
   "Set FILE (default current buffer file) as Emacs project file."
   (interactive)
+  (save-some-buffers t)
+  ;; Kill sessions to catch changed env vars
+  ;; FIXME: need dispatching kill single session
+  (cl-ecase ada-xref-tool
+    (gnat_xref nil)
+    (gnat_inspect (gnat-inspect-kill-all-sessions))
+    (gpr_query (gpr-query-kill-all-sessions))
+    )
   (ada-parse-prj-file (or file (buffer-file-name)))
   (ada-select-prj-file (or file (buffer-file-name))))
 
@@ -237,7 +247,7 @@ of the package or project point is in or just after, or nil.")
         ((?\_ . "w"))))
 
   (gpr-set-ff-special-constructs)
-  (setq ff-search-directories 'ada-project-search-path)
+  (setq ff-search-directories 'compilation-search-path);; includes project search path
 
   (set (make-local-variable 'add-log-current-defun-function)
        'gpr-add-log-current-function)