emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/progmodes/ada-prj.el


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/progmodes/ada-prj.el
Date: Tue, 09 Apr 2002 14:56:35 -0400

Index: emacs/lisp/progmodes/ada-prj.el
diff -c emacs/lisp/progmodes/ada-prj.el:1.7 emacs/lisp/progmodes/ada-prj.el:1.8
*** emacs/lisp/progmodes/ada-prj.el:1.7 Mon Jul 16 03:46:48 2001
--- emacs/lisp/progmodes/ada-prj.el     Tue Apr  9 14:56:34 2002
***************
*** 1,9 ****
  ;;; ada-prj.el --- easy editing of project files for the ada-mode
  
! ;; Copyright (C) 1998, 1999 Free Software Foundation, Inc.
  
  ;; Author: Emmanuel Briot <address@hidden>
! ;; Ada Core Technologies's version:   $Revision: 1.7 $
  ;; Keywords: languages, ada, project file
  
  ;; This file is part of GNU Emacs.
--- 1,9 ----
  ;;; ada-prj.el --- easy editing of project files for the ada-mode
  
! ;; Copyright (C) 1998, 99, 2000, 2001 Free Software Foundation, Inc.
  
  ;; Author: Emmanuel Briot <address@hidden>
! ;; Ada Core Technologies's version:   $Revision: 1.8 $
  ;; Keywords: languages, ada, project file
  
  ;; This file is part of GNU Emacs.
***************
*** 53,58 ****
--- 53,61 ----
  (defvar ada-prj-ada-buffer nil
    "Indicates what Ada source file was being edited.")
  
+ (defvar ada-old-cross-prefix nil
+   "The cross-prefix associated with the currently loaded runtime library.")
+ 
  
  ;; ----- Functions --------------------------------------------------------
  
***************
*** 60,67 ****
    "Open a new project file"
    (interactive)
    (let* ((prj
!         (if (my-local-variable-if-set-p 'ada-prj-prj-file (current-buffer))
!             ada-prj-prj-file
            "default.adp"))
         (filename (read-file-name "Project file: "
                                   (if prj "" nil)
--- 63,71 ----
    "Open a new project file"
    (interactive)
    (let* ((prj
!         (if (and ada-prj-default-project-file
!                  (not (string= ada-prj-default-project-file "")))
!             ada-prj-default-project-file
            "default.adp"))
         (filename (read-file-name "Project file: "
                                   (if prj "" nil)
***************
*** 84,106 ****
          (ada-customize))
        (ada-prj-new))))
  
- (defun ada-prj-add-ada-menu ()
-   "Add a new submenu to the Ada menu.
- The items are added to the menu NAME in map MAP. NAME should be the same
- name as was passed to `ada-create-menu'."
-   (if ada-xemacs
-       (progn
-       (funcall (symbol-function 'add-menu-button)
-                '("Ada" "Project")
-                ["Edit" ada-prj-edit t] "Associate")
-       (funcall (symbol-function 'add-menu-button)
-                '("Ada" "Project")
-                ["New..." ada-prj-new t] "Associate"))
-     (define-key (lookup-key ada-mode-map [menu-bar Ada Project])
-       [Edit] '("Edit current" . ada-prj-edit))
-     (define-key (lookup-key ada-mode-map [menu-bar Ada Project])
-       [New]  '("New" . ada-prj-new))))
- 
  (defun ada-prj-add-keymap ()
    "Add new keybindings for ada-prj."
    (define-key ada-mode-map "\C-cu"  'ada-prj-edit))
--- 88,93 ----
***************
*** 117,126 ****
        (if (file-exists-p filename)
          (ada-reread-prj-file))
  
!       ;; Else use the one from the current buffer
!       (save-excursion
!       (set-buffer ada-buffer)
!       (set 'prj ada-prj-prj-file)))
  
         
      (if (and prj
--- 104,111 ----
        (if (file-exists-p filename)
          (ada-reread-prj-file))
  
!       ;; Else use the active one
!       (set 'prj ada-prj-default-project-file))
  
         
      (if (and prj
***************
*** 160,184 ****
          (ada-prj-save-specific-option 'bind_opt)
          (ada-prj-save-specific-option 'link_opt)
          (ada-prj-save-specific-option 'gnatmake_opt)
          (ada-prj-save-specific-option 'cross_prefix)
          (ada-prj-save-specific-option 'remote_machine)
-         (ada-prj-save-specific-option 'comp_cmd)
-         (ada-prj-save-specific-option 'check_cmd)
-         (ada-prj-save-specific-option 'make_cmd)
-         (ada-prj-save-specific-option 'run_cmd)
          (ada-prj-save-specific-option 'debug_cmd)
  
          ;;  Always save the fields that depend on the current buffer
!         (concat "main="      (plist-get ada-prj-current-values 'main) "\n")
!         (concat "main_unit=" (plist-get ada-prj-current-values 'main_unit) 
"\n")
!         (concat "build_dir=" (plist-get ada-prj-current-values 'build_dir) 
"\n")
!         
!         (ada-prj-set-list "casing"
!                           (plist-get ada-prj-current-values 'casing)) "\n"
          (ada-prj-set-list "src_dir"
!                           (plist-get ada-prj-current-values 'src_dir)) "\n"
          (ada-prj-set-list "obj_dir"
!                           (plist-get ada-prj-current-values 'obj_dir)) "\n"
          ))
      
      (find-file file-name)
--- 145,179 ----
          (ada-prj-save-specific-option 'bind_opt)
          (ada-prj-save-specific-option 'link_opt)
          (ada-prj-save-specific-option 'gnatmake_opt)
+         (ada-prj-save-specific-option 'gnatfind_opt)
          (ada-prj-save-specific-option 'cross_prefix)
          (ada-prj-save-specific-option 'remote_machine)
          (ada-prj-save-specific-option 'debug_cmd)
  
          ;;  Always save the fields that depend on the current buffer
!         "main="      (plist-get ada-prj-current-values 'main) "\n"
!         "main_unit=" (plist-get ada-prj-current-values 'main_unit) "\n"
!         "build_dir=" (plist-get ada-prj-current-values 'build_dir) "\n"
!         (ada-prj-set-list "check_cmd"
!                           (plist-get ada-prj-current-values 'check_cmd)) "\n"
!         (ada-prj-set-list "make_cmd"
!                           (plist-get ada-prj-current-values 'make_cmd)) "\n"
!         (ada-prj-set-list "comp_cmd"
!                           (plist-get ada-prj-current-values 'comp_cmd)) "\n"
!         (ada-prj-set-list "run_cmd"
!                           (plist-get ada-prj-current-values 'run_cmd)) "\n"
          (ada-prj-set-list "src_dir"
!                           (plist-get ada-prj-current-values 'src_dir)
!                           t) "\n"
          (ada-prj-set-list "obj_dir"
!                           (plist-get ada-prj-current-values 'obj_dir)
!                           t) "\n"
!         (ada-prj-set-list "debug_pre_cmd"
!                           (plist-get ada-prj-current-values 'debug_pre_cmd))
!         "\n"
!         (ada-prj-set-list "debug_post_cmd"
!                           (plist-get ada-prj-current-values 'debug_post_cmd))
!         "\n"
          ))
      
      (find-file file-name)
***************
*** 191,199 ****
      ;; kill the editor buffer
      (kill-buffer "*Customize Ada Mode*")
  
!     ;; automatically associates the current buffer with the
!     ;; new project file
!     (set (make-local-variable 'ada-prj-prj-file) file-name)
  
      ;; force Emacs to reread the project files
      (ada-reread-prj-file file-name)
--- 186,193 ----
      ;; kill the editor buffer
      (kill-buffer "*Customize Ada Mode*")
  
!     ;; automatically set the new project file as the active one
!     (set 'ada-prj-default-project-file file-name)
  
      ;; force Emacs to reread the project files
      (ada-reread-prj-file file-name)
***************
*** 261,270 ****
    (let ((inhibit-read-only t))
      (erase-buffer))
  
    ;;  Display the tabs
    
    (widget-insert "\n               Project and Editor configuration.\n
!    ___________    ____________    ____________    ____________\n  / ")
    (widget-create 'push-button :notify
                 (lambda (&rest dummy) (ada-prj-display-page 1)) "General")
    (widget-insert " \\  /   ")
--- 255,272 ----
    (let ((inhibit-read-only t))
      (erase-buffer))
  
+   ;;  Widget support in Emacs 21 requires that we clear the buffer first
+   (if (and (not (boundp 'running-xemacs)) (>= emacs-major-version 21))
+       (progn
+       (setq widget-field-new  nil
+             widget-field-list nil)
+       (mapcar (lambda (x) (delete-overlay x)) (car (overlay-lists)))
+       (mapcar (lambda (x) (delete-overlay x)) (cdr (overlay-lists)))))
+   
    ;;  Display the tabs
    
    (widget-insert "\n               Project and Editor configuration.\n
!   ___________    ____________    ____________    ____________    
____________\n / ")
    (widget-create 'push-button :notify
                 (lambda (&rest dummy) (ada-prj-display-page 1)) "General")
    (widget-insert " \\  /   ")
***************
*** 276,281 ****
--- 278,286 ----
    (widget-insert " \\  / ")
    (widget-create 'push-button :notify
                 (lambda (&rest dummy) (ada-prj-display-page 4)) "Ada Menu")
+   (widget-insert " \\  / ")
+   (widget-create 'push-button :notify
+                (lambda (&rest dummy) (ada-prj-display-page 5)) "Debugger")
    (widget-insert " \\\n")
  
    ;;  Display the currently selected page
***************
*** 286,292 ****
     ;;  First page (General)
     ;;
     ((= tab-num 1)
!     (widget-insert "_/             
\\/______________\\/______________\\/______________\\_____\n\n")
  
      (widget-insert "Project file name:\n")
      (widget-insert (plist-get ada-prj-current-values 'filename))
--- 291,297 ----
     ;;  First page (General)
     ;;
     ((= tab-num 1)
!     (widget-insert "/             
\\/______________\\/______________\\/______________\\/______________\\\n")
  
      (widget-insert "Project file name:\n")
      (widget-insert (plist-get ada-prj-current-values 'filename))
***************
*** 333,339 ****
     ;;  Second page (Paths)
     ;;
     ((= tab-num 2)
!     (widget-insert "_/_____________\\/              
\\/______________\\/______________\\_____\n\n")
      (ada-prj-field 'src_dir  "Source directories"
  "Enter the list of directories where your Ada
  sources can be found. These directories will be
--- 338,352 ----
     ;;  Second page (Paths)
     ;;
     ((= tab-num 2)
!     (if (not (equal (plist-get ada-prj-current-values 'cross_prefix)
!                   ada-old-cross-prefix))
!       (progn
!         (setq ada-old-cross-prefix
!               (plist-get ada-prj-current-values 'cross_prefix))
!         (ada-initialize-runtime-library ada-old-cross-prefix)))
! 
!     
!     (widget-insert "/_____________\\/              
\\/______________\\/______________\\/______________\\\n")
      (ada-prj-field 'src_dir  "Source directories"
  "Enter the list of directories where your Ada
  sources can be found. These directories will be
***************
*** 343,351 ****
  and the standard runtime."
        t t
        (mapconcat (lambda(x)
!                  (concat "           " x))
!                ada-xref-runtime-library-specs-path
!                "\n")
        )
      (widget-insert "\n\n")
      
--- 356,364 ----
  and the standard runtime."
        t t
        (mapconcat (lambda(x)
!                    (concat "           " x))
!                  ada-xref-runtime-library-specs-path
!                  "\n")
        )
      (widget-insert "\n\n")
      
***************
*** 358,366 ****
  and the standard runtime."
        t t
        (mapconcat (lambda(x)
!                  (concat "           " x))
!                ada-xref-runtime-library-ali-path
!                "\n")
        )
      (widget-insert "\n\n")
      )
--- 371,379 ----
  and the standard runtime."
        t t
        (mapconcat (lambda(x)
!                    (concat "           " x))
!                  ada-xref-runtime-library-ali-path
!                  "\n")
        )
      (widget-insert "\n\n")
      )
***************
*** 369,375 ****
     ;;  Third page (Switches)
     ;;
     ((= tab-num 3)
!     (widget-insert "_/_____________\\/______________\\/              
\\/______________\\_____\n\n")
      (ada-prj-field 'comp_opt "Switches for the compiler"
  "These switches are used in the default
  compilation commands, both for compiling a
--- 382,388 ----
     ;;  Third page (Switches)
     ;;
     ((= tab-num 3)
!     (widget-insert "/_____________\\/______________\\/              
\\/______________\\/______________\\\n")
      (ada-prj-field 'comp_opt "Switches for the compiler"
  "These switches are used in the default
  compilation commands, both for compiling a
***************
*** 383,438 ****
      (ada-prj-field 'gnatmake_opt "Switches for gnatmake"
  "These switches are used in the default gnatmake
  command.")               
      )
  
     ;;
     ;;  Fourth page
     ;;
     ((= tab-num 4)
!     (widget-insert "_/_____________\\/______________\\/______________\\/      
        \\_____\n\n")
!     (widget-insert "All the fields below can use variable substitution\n")
!     (widget-insert "The syntax is ${name}, where name is the name that\n")
!     (widget-insert "appears after the Help buttons in this buffer.\n")
!     (widget-insert "As a special case, ${current} is replaced with the 
name\n")
!     (widget-insert "of the file currently edited, with directory name but\n")
!     (widget-insert "no extension.\n\n")
!     (widget-insert
!      "The environment variables ADA_INCLUDE_PATH and ADA_OBJECTS_PATH\n")
      (widget-insert
!      "are set to ${src_dir} and ${obj_dir} before running the compilation\n")
      (widget-insert
!      "commands, so that you don't need to specify the -aI and -aO\n")
      (widget-insert
!      "switches on the command line\n\n")
!     
      (ada-prj-field 'check_cmd
        "Check syntax of a single file (menu Ada->Check File)"
  "This command is run to check the syntax and semantics of a file.
! The file name is added at the end of this command.")
      (ada-prj-field 'comp_cmd
        "Compiling a single file (menu Ada->Compile File)"
  "This command is run when the recompilation
  of a single file is needed. The file name is
! added at the end of this command.")
      (ada-prj-field 'make_cmd "Rebuilding the whole project (menu Ada->Build)"
  "This command is run when you want to rebuild
  your whole application. It is never issues
  automatically and you will need to ask for it.
  If remote_machine has been set, this command
! will be executed on the remote machine.")
      (ada-prj-field 'run_cmd "Running the application (menu Ada->Run)"
  "This command specifies how to run the
  application, including any switch you need to
  specify. If remote_machine has been set, this
! command will be executed on the remote host.")
      (ada-prj-field 'debug_cmd "Debugging the application"
  "Specifies how to debug the application, possibly
  remotely if remote_machine has been set. We
  recommend the following debuggers:
    > gdb
!   > gdbtk
    > ddd --tty -fullname -toolbar")
      )
     )
  
  
--- 396,473 ----
      (ada-prj-field 'gnatmake_opt "Switches for gnatmake"
  "These switches are used in the default gnatmake
  command.")               
+     (ada-prj-field 'gnatfind_opt "Switches for gnatfind"
+ "The command gnatfind is run every time the Ada/Goto/List_References menu.
+ You should for instance add -a if you are working in an environment
+ where most ALI files are write-protected, since otherwise they get
+ ignored by gnatfind and you don't see the references within.")
      )
  
     ;;
     ;;  Fourth page
     ;;
     ((= tab-num 4)
!     (widget-insert "/_____________\\/______________\\/______________\\/       
       \\/______________\\\n")
      (widget-insert
! "All the fields below can use variable substitution The syntax is ${name},
! where name is the name that appears after the Help buttons in this buffer. As
! a special case, ${current} is replaced with the name of the file currently
! edited, with directory name but no extension, whereas ${full_current} is
! replaced with the name of the current file with directory name and
! extension.\n")
      (widget-insert
! "The environment variables ADA_INCLUDE_PATH and ADA_OBJECTS_PATH are set to
! ${src_dir} and ${obj_dir} before running the compilation commands, so that you
! don't need to specify the -aI and -aO switches on the command line\n")
      (widget-insert
! "You can reference any environment variable using the same ${...} syntax as
! above, and put the name of the variable between the quotes.\n\n")
      (ada-prj-field 'check_cmd
        "Check syntax of a single file (menu Ada->Check File)"
  "This command is run to check the syntax and semantics of a file.
! The file name is added at the end of this command." t)
      (ada-prj-field 'comp_cmd
        "Compiling a single file (menu Ada->Compile File)"
  "This command is run when the recompilation
  of a single file is needed. The file name is
! added at the end of this command." t)
      (ada-prj-field 'make_cmd "Rebuilding the whole project (menu Ada->Build)"
  "This command is run when you want to rebuild
  your whole application. It is never issues
  automatically and you will need to ask for it.
  If remote_machine has been set, this command
! will be executed on the remote machine." t)
      (ada-prj-field 'run_cmd "Running the application (menu Ada->Run)"
  "This command specifies how to run the
  application, including any switch you need to
  specify. If remote_machine has been set, this
! command will be executed on the remote host." t)
!     )
! 
!    ;;
!    ;;  Fifth page
!    ;;
!    ((= tab-num 5)
!     (widget-insert 
"/_____________\\/______________\\/______________\\/______________\\/           
   \\\n")
!     (ada-prj-field 'debug_pre_cmd "Commands to execute before launching the
! debugger"
! "The following commands are executed one after the other before starting
! the debugger. These can be used to set up your environment." t)
!     
      (ada-prj-field 'debug_cmd "Debugging the application"
  "Specifies how to debug the application, possibly
  remotely if remote_machine has been set. We
  recommend the following debuggers:
    > gdb
!   > gvd --tty
    > ddd --tty -fullname -toolbar")
+ 
+     (ada-prj-field 'debug_post_cmd "Commands to execute in the debugger"
+ "The following commands are executed one in the debugger once it has been
+ started. These can be used to initialize the debugger, for instance to
+ connect to the target when working with cross-environments" t)
      )
+    
     )
  
  
***************
*** 481,496 ****
      (make-local-variable 'widget-keymap)
      (define-key widget-keymap "\C-x\C-s" 'ada-prj-save)
  
      (ada-prj-display-page 1)
    ))
  
  ;; ---------------- Utilities --------------------------------
  
! (defun ada-prj-set-list (string ada-dir-list)
!   "Join the strings in ADA-DIR-LIST into a single string. Each name is put
! on a separate line that begins with STRING."
!   (mapconcat (lambda (x) (concat string "=" (file-name-as-directory x)))
!              ada-dir-list "\n"))
  
  
  (defun ada-prj-get-prj-dir (&optional ada-file)
--- 516,540 ----
      (make-local-variable 'widget-keymap)
      (define-key widget-keymap "\C-x\C-s" 'ada-prj-save)
  
+     (set (make-local-variable 'ada-old-cross-prefix)
+        (ada-xref-get-project-field 'cross-prefix))
+ 
      (ada-prj-display-page 1)
    ))
  
  ;; ---------------- Utilities --------------------------------
  
! (defun ada-prj-set-list (string ada-list &optional is-directory)
!   "Join the strings in ADA-LIST into a single string.
! Each name is put on a separate line that begins with STRING.
! If IS-DIRECTORY is non-nil, each name is explicitly converted to a
! directory name."
! 
!   (mapconcat (lambda (x) (concat string "="
!                                (if is-directory
!                                    (file-name-as-directory x)
!                                  x)))
!              ada-list "\n"))
  
  
  (defun ada-prj-get-prj-dir (&optional ada-file)
***************
*** 518,524 ****
  back keeps the new value."
    (set 'ada-prj-current-values
         (plist-put ada-prj-current-values
!                 (widget-get widget 'prj-field)
                  (widget-value widget))))
  
  (defun ada-prj-display-help (widget widget-modified event)
--- 562,568 ----
  back keeps the new value."
    (set 'ada-prj-current-values
         (plist-put ada-prj-current-values
!                 (widget-get widget ':prj-field)
                  (widget-value widget))))
  
  (defun ada-prj-display-help (widget widget-modified event)
***************
*** 539,553 ****
        )))
  
  (defun ada-prj-show-value (widget widget-modified event)
!   (let ((value (plist-get ada-prj-current-values
!                         (widget-get widget 'prj-field)))
!       (inhibit-read-only t))
  
      ;;  If the other widget is already visible, delete it
      (if (widget-get widget 'prj-other-widget)
        (progn
          (widget-delete (widget-get widget 'prj-other-widget))
          (widget-put widget 'prj-other-widget nil)
          (widget-default-value-set widget "Show Value")
          )
  
--- 583,599 ----
        )))
  
  (defun ada-prj-show-value (widget widget-modified event)
!   (let* ((field (widget-get widget ':prj-field))
!        (value (plist-get ada-prj-current-values field))
!        (inhibit-read-only t)
!        w)
  
      ;;  If the other widget is already visible, delete it
      (if (widget-get widget 'prj-other-widget)
        (progn
          (widget-delete (widget-get widget 'prj-other-widget))
          (widget-put widget 'prj-other-widget nil)
+         (widget-put widget ':prj-field field)
          (widget-default-value-set widget "Show Value")
          )
  
***************
*** 556,569 ****
        (mouse-set-point event)
        (forward-line 1)
        (beginning-of-line)
!       (widget-put widget 'prj-other-widget
!                   (widget-create 'editable-list
!                                  :entry-format "%i%d %v"
!                                  :notify 'ada-prj-field-modified
!                                  :help-echo (widget-get widget 'prj-help)
!                                  :value value
!                                  (list 'editable-field
!                                        :keymap widget-keymap)))
        (widget-default-value-set widget "Hide Value")
        )
        )
--- 602,616 ----
        (mouse-set-point event)
        (forward-line 1)
        (beginning-of-line)
!       (setq w (widget-create 'editable-list
!                              :entry-format "%i%d %v"
!                              :notify 'ada-prj-field-modified
!                              :help-echo (widget-get widget 'prj-help)
!                              :value value
!                              (list 'editable-field :keymap widget-keymap)))
!       (widget-put widget 'prj-other-widget w)
!       (widget-put w ':prj-field field)
!       (widget-put widget ':prj-field field)
        (widget-default-value-set widget "Hide Value")
        )
        )
***************
*** 609,614 ****
--- 656,662 ----
                                     (list 'quote field)))
                         "Load Recursive Directory")
          (widget-insert "\n           ${build_dir}\n")))
+ 
      (set 'widget
         (if is-list
             (if (< (length value) 15)
***************
*** 618,628 ****
                                :help-echo help-text
                                :value value
                                (list 'editable-field :keymap widget-keymap))
               (let ((w (widget-create 'push-button
                                       :notify 'ada-prj-show-value
                                       "Show value")))
                 (widget-insert "\n")
-                (widget-put w 'prj-field field)
                 (widget-put w 'prj-help  help-text)
                 (widget-put w 'prj-other-widget nil)
                 w)
--- 666,676 ----
                                :help-echo help-text
                                :value value
                                (list 'editable-field :keymap widget-keymap))
+ 
               (let ((w (widget-create 'push-button
                                       :notify 'ada-prj-show-value
                                       "Show value")))
                 (widget-insert "\n")
                 (widget-put w 'prj-help  help-text)
                 (widget-put w 'prj-other-widget nil)
                 w)
***************
*** 633,639 ****
                          :help-echo help-text
                          :keymap widget-keymap
                          value)))
!     (widget-put widget 'prj-field field)
      (if after-text
        (widget-insert after-text))
      (widget-insert "\n")
--- 681,687 ----
                          :help-echo help-text
                          :keymap widget-keymap
                          value)))
!     (widget-put widget ':prj-field field)
      (if after-text
        (widget-insert after-text))
      (widget-insert "\n")
***************
*** 643,649 ****
  ;;  Set the keymap once and for all, so that the keys set by the user in his
  ;;  config file are not overwritten every time we open a new file.
  (ada-prj-add-keymap)
- (ada-prj-add-ada-menu)
  
  (provide 'ada-prj)
  
--- 691,696 ----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]