]> 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
old mode 100755 (executable)
new mode 100644 (file)
index b267014..1bf11c8
@@ -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)))
     ;; (define-key map "\C-c\C-n" 'ada-next-statement-keyword)
     ;; (define-key map "\C-c\C-p" 'ada-prev-statement-keyword)
     (define-key map "\C-c\C-o"          'ff-find-other-file)
-    (define-key map "\C-c\C-S-p" 'gpr-set-as-project)
+    (define-key map "\C-c\C-P" 'gpr-set-as-project)
     (define-key map "\C-c\C-t" 'ada-case-read-all-exceptions)
     (define-key map "\C-c\C-w" 'ada-case-adjust-at-point)
     (define-key map "\C-c\C-y" 'ada-case-create-exception)
     (define-key map "\C-c\C-\M-y" (lambda () (ada-case-create-exception nil nil t)))
+    (define-key map "\M-n" 'skeleton-next-placeholder)
+    (define-key map "\M-p" 'skeleton-prev-placeholder)
     map
   )  "Local keymap used for GPR mode.")
 
     ["------"        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]
     ["Other file"                  ff-find-other-file               t]
     ("Edit"
-     ["Indent Line or selection"    indent-for-tab-command         t]
-     ["Indent current statement"    gpr-indent-statement           t]
-     ["Indent Lines in File"        (indent-region (point-min) (point-max))  t]
-     ["Expand skeleton"             gpr-expand                     t]
-     ["Comment/uncomment selection" comment-dwim                   t]
-     ["Fill Comment Paragraph"      fill-paragraph                 t]
+     ["Indent Line or selection"      indent-for-tab-command         t]
+     ["Indent current statement"      gpr-indent-statement           t]
+     ["Indent Lines in File"          (indent-region (point-min) (point-max))  t]
+     ["Expand skeleton"               gpr-expand                     t]
+     ["Next skeleton placeholder"     skeleton-next-placeholder      t]
+     ["Previous skeleton placeholder" skeleton-prev-placeholder      t]
+     ["Comment/uncomment selection"   comment-dwim                   t]
+     ["Fill Comment Paragraph"        fill-paragraph                 t]
 
      ["Fill Comment Paragraph Justify" ada-fill-comment-paragraph-justify t]
      ["Fill Comment Paragraph Postfix" ada-fill-comment-paragraph-postfix t]
@@ -204,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))))
 
@@ -233,22 +247,11 @@ 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)
 
-  ;; used by autofill to break a comment line and continue it on
-  ;; another line. The reason we need this one is that the default
-  ;; behavior does not work correctly with the definition of
-  ;; paragraph-start above when the comment is right after a
-  ;; multi-line subprogram declaration (the comments are aligned under
-  ;; the latest parameter, not under the declaration start).
-  ;; FIXME: need test - should be in gpr-wisi? why doesn't ada-mode do this?
-  (set (make-local-variable 'comment-line-break-function)
-       (lambda (&optional soft) (let ((fill-prefix nil))
-                                 (indent-new-comment-line soft))))
-
   (run-hooks 'gpr-mode-hook)
 
   )