/[emacs]/emacs/lisp/progmodes/ada-xref.el
ViewVC logotype

Diff of /emacs/lisp/progmodes/ada-xref.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by rms, Sun Apr 28 03:17:51 2002 UTC revision 1.11 by monnier, Thu Jun 20 17:31:56 2002 UTC
# Line 1  Line 1 
1  ;;; ada-xref.el --- for lookup and completion in Ada mode  ;;; ada-xref.el --- for lookup and completion in Ada mode
2    
3  ;; Copyright (C) 1994, 95, 96, 97, 98, 99, 2000, 2001  ;; Copyright (C) 1994, 95, 96, 97, 98, 99, 2000, 2001, 2002
4  ;;    Free Software Foundation, Inc.  ;;    Free Software Foundation, Inc.
5    
6  ;; Author: Markus Heritsch <Markus.Heritsch@studbox.uni-stuttgart.de>  ;; Author: Markus Heritsch <Markus.Heritsch@studbox.uni-stuttgart.de>
7  ;;      Rolf Ebert <ebert@inf.enst.fr>  ;;      Rolf Ebert <ebert@inf.enst.fr>
8  ;;      Emmanuel Briot <briot@gnat.com>  ;;      Emmanuel Briot <briot@gnat.com>
9  ;; Maintainer: Emmanuel Briot <briot@gnat.com>  ;; Maintainer: Emmanuel Briot <briot@gnat.com>
10  ;; Ada Core Technologies's version:   $Revision$  ;; Ada Core Technologies's version:   Revision: 1.155.2.8 (GNAT 3.15)
11  ;; Keywords: languages ada xref  ;; Keywords: languages ada xref
12    
13  ;; This file is part of GNU Emacs.  ;; This file is part of GNU Emacs.
# Line 51  Line 51 
51  Otherwise create either a new buffer or a new frame."  Otherwise create either a new buffer or a new frame."
52    :type 'boolean :group 'ada)    :type 'boolean :group 'ada)
53    
54  (defcustom ada-xref-create-ali t  (defcustom ada-xref-create-ali nil
55    "*If non-nil, run gcc whenever the cross-references are not up-to-date.    "*If non-nil, run gcc whenever the cross-references are not up-to-date.
56  If nil, the cross-reference mode will never run gcc."  If nil, the cross-reference mode will never run gcc."
57    :type 'boolean :group 'ada)    :type 'boolean :group 'ada)
# Line 91  The command gnatfind is used every time Line 91  The command gnatfind is used every time
91    :type 'string :group 'ada)    :type 'string :group 'ada)
92    
93  (defcustom ada-prj-default-comp-cmd  (defcustom ada-prj-default-comp-cmd
94    "${cross_prefix}gcc -x ada -c ${comp_opt} ${full_current}"    (concat "${cross_prefix}gnatmake -u -c ${gnatmake_opt} ${full_current} -cargs"
95              " ${comp_opt}")
96    "*Default command to be used to compile a single file.    "*Default command to be used to compile a single file.
97  Emacs will add the filename at the end of this command. This is the same  Emacs will add the filename at the end of this command. This is the same
98  syntax as in the project file."  syntax as in the project file."
# Line 132  Otherwise, ask the user for the name of Line 133  Otherwise, ask the user for the name of
133    "*If non-nil, a new Emacs frame will be swallowed in GVD when debugging.    "*If non-nil, a new Emacs frame will be swallowed in GVD when debugging.
134  If GVD is not the debugger used, nothing happens.")  If GVD is not the debugger used, nothing happens.")
135    
136    (defcustom ada-xref-search-with-egrep t
137      "*If non-nil, use egrep to find the possible declarations for an entity.
138    This alternate method is used when the exact location was not found in the
139    information provided by GNAT. However, it might be expensive if you have a lot
140    of sources, since it will search in all the files in your project."
141      :type 'boolean :group 'ada)
142    
143    (defvar ada-load-project-hook nil
144      "Hook that is run when loading a project file.
145    Each function in this hook takes one argument FILENAME, that is the name of
146    the project file to load.
147    This hook should be used to support new formats for the project files.
148    
149    If the function can load the file with the given filename, it should create a
150    buffer that contains a conversion of the file to the standard format of the
151    project files, and return that buffer. (the usual \"src_dir=\" or \"obj_dir=\"
152    lines).  It should return nil if it doesn't know how to convert that project
153    file.")
154    
155    
156  ;; ------- Nothing to be modified by the user below this  ;; ------- Nothing to be modified by the user below this
157  (defvar ada-last-prj-file ""  (defvar ada-last-prj-file ""
158    "Name of the last project file entered by the user.")    "Name of the last project file entered by the user.")
# Line 289  replaced by the name including the exten Line 310  replaced by the name including the exten
310             ;;  Ada file or not even associated with a file             ;;  Ada file or not even associated with a file
311             (list 'filename (expand-file-name             (list 'filename (expand-file-name
312                              (cond                              (cond
                              (file  
                               (ada-prj-get-prj-dir file))  
313                               (ada-prj-default-project-file                               (ada-prj-default-project-file
314                                ada-prj-default-project-file)                                ada-prj-default-project-file)
315                                 (file
316                                  (ada-prj-get-prj-dir file))
317                               (t                               (t
318                                (message (concat "Not editing an Ada file,"                                (message (concat "Not editing an Ada file,"
319                                                 "and no default project "                                                 "and no default project "
# Line 436  All the directories are returned as abso Line 457  All the directories are returned as abso
457                (append submenu                (append submenu
458                        (list (cons (intern name)                        (list (cons (intern name)
459                                    (list                                    (list
460                                     'menu-item (file-name-sans-extension                                     'menu-item
461                                                 (file-name-nondirectory name))                                     (if (string= (file-name-extension name)
462                                                    ada-project-file-extension)
463                                           (file-name-sans-extension
464                                            (file-name-nondirectory name))
465                                         (file-name-nondirectory name))
466                                     command                                     command
467                                     :button (cons                                     :button (cons
468                                              :toggle                                              :toggle
# Line 515  Completion is available." Line 540  Completion is available."
540    (define-key ada-mode-map "\C-c5\C-d" 'ada-goto-declaration-other-frame)    (define-key ada-mode-map "\C-c5\C-d" 'ada-goto-declaration-other-frame)
541    (define-key ada-mode-map "\C-c\C-d" 'ada-goto-declaration)    (define-key ada-mode-map "\C-c\C-d" 'ada-goto-declaration)
542    (define-key ada-mode-map "\C-c\C-s" 'ada-xref-goto-previous-reference)    (define-key ada-mode-map "\C-c\C-s" 'ada-xref-goto-previous-reference)
   (define-key ada-mode-map "\C-c\C-x" 'ada-reread-prj-file)  
543    (define-key ada-mode-map "\C-c\C-c" 'ada-compile-application)    (define-key ada-mode-map "\C-c\C-c" 'ada-compile-application)
544    (define-key ada-mode-map "\C-cc"  'ada-change-prj)    (define-key ada-mode-map "\C-cc"  'ada-change-prj)
545    (define-key ada-mode-map "\C-cd"  'ada-set-default-project-file)    (define-key ada-mode-map "\C-cd"  'ada-set-default-project-file)
# Line 523  Completion is available." Line 547  Completion is available."
547    (define-key ada-mode-map "\C-cr"  'ada-run-application)    (define-key ada-mode-map "\C-cr"  'ada-run-application)
548    (define-key ada-mode-map "\C-c\C-o" 'ada-goto-parent)    (define-key ada-mode-map "\C-c\C-o" 'ada-goto-parent)
549    (define-key ada-mode-map "\C-c\C-r" 'ada-find-references)    (define-key ada-mode-map "\C-c\C-r" 'ada-find-references)
550      (define-key ada-mode-map "\C-cl" 'ada-find-local-references)
551    (define-key ada-mode-map "\C-c\C-v" 'ada-check-current)    (define-key ada-mode-map "\C-c\C-v" 'ada-check-current)
552    (define-key ada-mode-map "\C-c\C-f" 'ada-find-file)    (define-key ada-mode-map "\C-cf" 'ada-find-file)
553    )    )
554    
555  ;; ----- Menus --------------------------------------------------------------  ;; ----- Menus --------------------------------------------------------------
# Line 564  name as was passed to `ada-create-menu'. Line 589  name as was passed to `ada-create-menu'.
589                   goto-menu ["List References" ada-find-references t]                   goto-menu ["List References" ada-find-references t]
590                   "Next compilation error")                   "Next compilation error")
591          (funcall (symbol-function 'add-menu-button)          (funcall (symbol-function 'add-menu-button)
592                     goto-menu ["List Local References" ada-find-local-references t]
593                     "Next compilation error")
594            (funcall (symbol-function 'add-menu-button)
595                   goto-menu ["Goto Declaration Other Frame"                   goto-menu ["Goto Declaration Other Frame"
596                              ada-goto-declaration-other-frame t]                              ada-goto-declaration-other-frame t]
597                   "Next compilation error")                   "Next compilation error")
# Line 620  name as was passed to `ada-create-menu'. Line 648  name as was passed to `ada-create-menu'.
648          )          )
649            
650      ;; for Emacs      ;; for Emacs
651      (let* ((menu         (lookup-key ada-mode-map [menu-bar ada]))      (let* ((menu      (or (lookup-key ada-mode-map [menu-bar Ada])
652             (edit-menu    (lookup-key ada-mode-map [menu-bar ada edit]))                            ;; Emacs-21.4's easymenu.el downcases the events.
653             (help-menu    (lookup-key ada-mode-map [menu-bar ada help]))                            (lookup-key ada-mode-map [menu-bar ada])))
654             (goto-menu    (lookup-key ada-mode-map [menu-bar ada goto]))             (edit-menu (or (lookup-key menu [Edit]) (lookup-key menu [edit])))
655             (options-menu (lookup-key ada-mode-map [menu-bar ada options])))             (help-menu (or (lookup-key menu [Help]) (lookup-key menu [help])))
656               (goto-menu (or (lookup-key menu [Goto]) (lookup-key menu [goto])))
657               (options-menu (or (lookup-key menu [Options])
658                                 (lookup-key menu [options]))))
659    
660        (define-key-after menu [Check] '("Check file" . ada-check-current)        (define-key-after menu [Check] '("Check file" . ada-check-current)
661          'Customize)          'Customize)
# Line 656  name as was passed to `ada-create-menu'. Line 687  name as was passed to `ada-create-menu'.
687          '("Goto References to any entity" . ada-find-any-references))          '("Goto References to any entity" . ada-find-any-references))
688        (define-key goto-menu [References]        (define-key goto-menu [References]
689          '("List References" . ada-find-references))          '("List References" . ada-find-references))
690          (define-key goto-menu [Local-References]
691            '("List Local References" . ada-find-local-references))
692        (define-key goto-menu [Prev]        (define-key goto-menu [Prev]
693          '("Goto Previous Reference" . ada-xref-goto-previous-reference))          '("Goto Previous Reference" . ada-xref-goto-previous-reference))
694        (define-key goto-menu [Decl-other]        (define-key goto-menu [Decl-other]
# Line 732  This is overriden on VMS to convert from Line 765  This is overriden on VMS to convert from
765  (defun ada-set-default-project-file (name)  (defun ada-set-default-project-file (name)
766    "Set the file whose name is NAME as the default project file."    "Set the file whose name is NAME as the default project file."
767    (interactive "fProject file:")    (interactive "fProject file:")
768    (set 'ada-prj-default-project-file name)    (setq ada-prj-default-project-file name)
769    (ada-reread-prj-file name)    (ada-reread-prj-file name)
770    )    )
771    
# Line 843  The current buffer should be the ada-fil Line 876  The current buffer should be the ada-fil
876          ;;  find-file anyway, since the speedbar frame is special and does not          ;;  find-file anyway, since the speedbar frame is special and does not
877          ;;  allow the selection of a file in it.          ;;  allow the selection of a file in it.
878    
879          (set-buffer (find-file-noselect prj-file))          (let* ((buffer (run-hook-with-args-until-success
880                                   'ada-load-project-hook prj-file)))
881              (unless buffer
882                (setq buffer (find-file-noselect prj-file nil)))
883              (set-buffer buffer))
884    
885          (widen)          (widen)
886          (goto-char (point-min))          (goto-char (point-min))
887    
# Line 930  The current buffer should be the ada-fil Line 967  The current buffer should be the ada-fil
967               (append (mapcar 'directory-file-name compilation-search-path)               (append (mapcar 'directory-file-name compilation-search-path)
968                       ada-search-directories))                       ada-search-directories))
969                    
970          ;; Kill the .ali buffer          ;; Kill the project buffer
971          (kill-buffer nil)          (kill-buffer nil)
972          (set-buffer ada-buffer)          (set-buffer ada-buffer)
973    
# Line 946  The current buffer should be the ada-fil Line 983  The current buffer should be the ada-fil
983      ))      ))
984                
985            
986  (defun ada-find-references (&optional pos)  (defun ada-find-references (&optional pos arg local-only)
987    "Find all references to the entity under POS.    "Find all references to the entity under POS.
988  Calls gnatfind to find the references."  Calls gnatfind to find the references.
989    (interactive "")  if ARG is t, the contents of the old *gnatfind* buffer is preserved.
990    (unless pos  if LOCAL-ONLY is t, only the declarations in the current file are returned."
991      (set 'pos (point)))    (interactive "d
992    P")
993    (ada-require-project-file)    (ada-require-project-file)
994    
995    (let* ((identlist (ada-read-identifier pos))    (let* ((identlist (ada-read-identifier pos))
# Line 965  Calls gnatfind to find the references." Line 1003  Calls gnatfind to find the references."
1003              (file-newer-than-file-p (ada-file-of identlist) alifile))              (file-newer-than-file-p (ada-file-of identlist) alifile))
1004          (ada-find-any-references (ada-name-of identlist)          (ada-find-any-references (ada-name-of identlist)
1005                                   (ada-file-of identlist)                                   (ada-file-of identlist)
1006                                   nil nil)                                   nil nil local-only arg)
1007        (ada-find-any-references (ada-name-of identlist)        (ada-find-any-references (ada-name-of identlist)
1008                                 (ada-file-of identlist)                                 (ada-file-of identlist)
1009                                 (ada-line-of identlist)                                 (ada-line-of identlist)
1010                                 (ada-column-of identlist))))                                 (ada-column-of identlist) local-only arg)))
1011    )    )
1012    
1013  (defun ada-find-any-references (entity &optional file line column)  (defun ada-find-local-references (&optional pos arg)
1014      "Find all references to the entity under POS.
1015    Calls gnatfind to find the references.
1016    if ARG is t, the contents of the old *gnatfind* buffer is preserved."
1017      (interactive "d
1018    P")
1019      (ada-find-references pos arg t))
1020    
1021    (defun ada-find-any-references
1022      (entity &optional file line column local-only append)
1023    "Search for references to any entity whose name is ENTITY.    "Search for references to any entity whose name is ENTITY.
1024  ENTITY was first found the location given by FILE, LINE and COLUMN."  ENTITY was first found the location given by FILE, LINE and COLUMN.
1025    If LOCAL-ONLY is t, then only the references in file will be listed, which
1026    is much faster.
1027    If APPEND is t, then the output of the command will be append to the existing
1028    buffer *gnatfind* if it exists."
1029    (interactive "sEntity name: ")    (interactive "sEntity name: ")
1030    (ada-require-project-file)    (ada-require-project-file)
1031    
# Line 992  ENTITY was first found the location give Line 1043  ENTITY was first found the location give
1043                            quote-entity                            quote-entity
1044                            (if file (concat ":" (file-name-nondirectory file)))                            (if file (concat ":" (file-name-nondirectory file)))
1045                            (if line (concat ":" line))                            (if line (concat ":" line))
1046                            (if column (concat ":" column)))))                            (if column (concat ":" column))
1047                              (if local-only (concat " " (file-name-nondirectory file)))
1048                              ))
1049             old-contents)
1050    
1051      ;;  If a project file is defined, use it      ;;  If a project file is defined, use it
1052      (if (and ada-prj-default-project-file      (if (and ada-prj-default-project-file
1053               (not (string= ada-prj-default-project-file "")))               (not (string= ada-prj-default-project-file "")))
1054          (setq command (concat command " -p" ada-prj-default-project-file)))          (setq command (concat command " -p" ada-prj-default-project-file)))
1055    
1056        (if (and append (get-buffer "*gnatfind*"))
1057            (save-excursion
1058              (set-buffer "*gnatfind*")
1059              (setq old-contents (buffer-string))))
1060        
1061      (compile-internal command "No more references" "gnatfind")      (compile-internal command "No more references" "gnatfind")
1062    
1063      ;;  Hide the "Compilation" menu      ;;  Hide the "Compilation" menu
1064      (save-excursion      (save-excursion
1065        (set-buffer "*gnatfind*")        (set-buffer "*gnatfind*")
1066        (local-unset-key [menu-bar compilation-menu]))        (local-unset-key [menu-bar compilation-menu])
1067    
1068          (if old-contents
1069              (progn
1070                (goto-char 1)
1071                (insert old-contents)
1072                (goto-char (point-max)))))
1073      )      )
1074    )    )
1075    
# Line 1102  If OTHER-FRAME is non-nil, display the c Line 1167  If OTHER-FRAME is non-nil, display the c
1167    (let ((identlist (ada-read-identifier pos)))    (let ((identlist (ada-read-identifier pos)))
1168      (condition-case nil      (condition-case nil
1169          (ada-find-in-ali identlist other-frame)          (ada-find-in-ali identlist other-frame)
1170        (error (ada-find-in-src-path identlist other-frame)))))        (error
1171           (let ((ali-file (ada-get-ali-file-name (ada-file-of identlist))))
1172    
1173             ;; If the ALI file was up-to-date, then we probably have a predefined
1174             ;; entity, whose references are not given by GNAT
1175             (if (and (file-exists-p ali-file)
1176                      (file-newer-than-file-p ali-file (ada-file-of identlist)))
1177                 (message "No cross-reference found. It might be a predefined entity.")
1178    
1179               ;; Else, look in every ALI file, except if the user doesn't want that
1180               (if ada-xref-search-with-egrep
1181                   (ada-find-in-src-path identlist other-frame)
1182                 (message "Cross-referencing information is not up-to-date. Please recompile.")
1183                 )))))))
1184    
1185  (defun ada-goto-declaration-other-frame (pos &optional other-frame)  (defun ada-goto-declaration-other-frame (pos &optional other-frame)
1186    "Display the declaration of the identifier around POS.    "Display the declaration of the identifier around POS.
# Line 1647  macros `ada-name-of', `ada-line-of', `ad Line 1725  macros `ada-name-of', `ada-line-of', `ad
1725      (set 'identlist    (ada-make-identlist))      (set 'identlist    (ada-make-identlist))
1726      (ada-set-name      identlist (downcase identifier))      (ada-set-name      identlist (downcase identifier))
1727      (ada-set-line      identlist      (ada-set-line      identlist
1728                         (number-to-string (count-lines (point-min) (point))))                         (number-to-string (count-lines 1 (point))))
1729      (ada-set-column    identlist      (ada-set-column    identlist
1730                         (number-to-string (1+ (current-column))))                         (number-to-string (1+ (current-column))))
1731      (ada-set-file      identlist (buffer-file-name))      (ada-set-file      identlist (buffer-file-name))
# Line 1677  from the ali file (definition file and p Line 1755  from the ali file (definition file and p
1755                  (concat "^"    (ada-line-of identlist)                  (concat "^"    (ada-line-of identlist)
1756                          "."    (ada-column-of identlist)                          "."    (ada-column-of identlist)
1757                          "[ *]" (ada-name-of identlist)                          "[ *]" (ada-name-of identlist)
1758                          " \\(.*\\)$") bound t))                          "[{\(<= ]?\\(.*\\)$") bound t))
1759            (if declaration-found            (if declaration-found
1760                (ada-set-on-declaration identlist t))                (ada-set-on-declaration identlist t))
1761            ))            ))
# Line 1696  from the ali file (definition file and p Line 1774  from the ali file (definition file and p
1774         (number-to-string (ada-find-file-number-in-ali         (number-to-string (ada-find-file-number-in-ali
1775                            (ada-file-of identlist))))                            (ada-file-of identlist))))
1776        (unless (re-search-forward (concat (ada-ali-index-of identlist)        (unless (re-search-forward (concat (ada-ali-index-of identlist)
1777                                           "|\\([0-9]+.[0-9]+ \\)*"                                           "|\\([0-9]+[^0-9][0-9]+\\(\n\\.\\)? \\)*"
1778                                           (ada-line-of identlist)                                           (ada-line-of identlist)
1779                                           "[^0-9]"                                           "[^etp]"
1780                                           (ada-column-of identlist))                                           (ada-column-of identlist) "\\>")
1781                                   nil t)                                   nil t)
1782    
1783            ;; if we did not find it, it may be because the first reference            ;; if we did not find it, it may be because the first reference
# Line 1707  from the ali file (definition file and p Line 1785  from the ali file (definition file and p
1785            ;; Or maybe we are already on the declaration...            ;; Or maybe we are already on the declaration...
1786            (unless (re-search-forward            (unless (re-search-forward
1787                     (concat                     (concat
1788                      "^\\(\\([a-zA-Z0-9_.]+\\|\"[<>=+*-/a-z]\"\\)[ *]\\)*"                      "^[0-9]+.[0-9]+[ *]"
1789                        (ada-name-of identlist)
1790                        "[ <{=\(]\\(.\\|\n\\.\\)*\\<"
1791                      (ada-line-of identlist)                      (ada-line-of identlist)
1792                      "[^0-9]"                      "[^0-9]"
1793                      (ada-column-of identlist))                      (ada-column-of identlist) "\\>")
1794                     nil t)                     nil t)
1795                            
1796              ;; If still not found, then either the declaration is unknown              ;; If still not found, then either the declaration is unknown
# Line 1729  from the ali file (definition file and p Line 1809  from the ali file (definition file and p
1809              (while (looking-at "^\\.")              (while (looking-at "^\\.")
1810                (previous-line 1))                (previous-line 1))
1811              (unless (looking-at (concat "[0-9]+.[0-9]+[ *]"              (unless (looking-at (concat "[0-9]+.[0-9]+[ *]"
1812                                          (ada-name-of identlist) "[ <]"))                                          (ada-name-of identlist) "[ <{=\(]"))
1813                (set 'declaration-found nil))))                (set 'declaration-found nil))))
1814    
1815        ;; Still no success ! The ali file must be too old, and we need to        ;; Still no success ! The ali file must be too old, and we need to
# Line 1802  This function is disabled for operators, Line 1882  This function is disabled for operators,
1882            (goto-char (point-max))            (goto-char (point-max))
1883            (while (re-search-backward my-regexp nil t)            (while (re-search-backward my-regexp nil t)
1884              (save-excursion              (save-excursion
1885                (set 'line-ali (count-lines (point-min) (point)))                (setq line-ali (count-lines 1 (point)))
1886                (beginning-of-line)                (beginning-of-line)
1887                ;; have a look at the line and column numbers                ;; have a look at the line and column numbers
1888                (if (looking-at "^\\([0-9]+\\).\\([0-9]+\\)[ *]")                (if (looking-at "^\\([0-9]+\\).\\([0-9]+\\)[ *]")
# Line 2291  find-file...." Line 2371  find-file...."
2371    ;; This should really be an `add-hook'.  -stef    ;; This should really be an `add-hook'.  -stef
2372    (setq ff-file-created-hooks 'ada-make-body-gnatstub)    (setq ff-file-created-hooks 'ada-make-body-gnatstub)
2373    
   ;; Read the project file and update the search path  
   ;; before looking for the other file  
   (make-local-hook 'ff-pre-find-hooks)  
   (add-hook 'ff-pre-find-hooks 'ada-require-project-file nil t)  
   
2374    ;; Completion for file names in the mini buffer should ignore .ali files    ;; Completion for file names in the mini buffer should ignore .ali files
2375    (add-to-list 'completion-ignored-extensions ".ali")    (add-to-list 'completion-ignored-extensions ".ali")
2376    )    )
# Line 2334  find-file...." Line 2409  find-file...."
2409  ;;  Make sure that the files are always associated with a project file. Since  ;;  Make sure that the files are always associated with a project file. Since
2410  ;;  the project file has some fields that are used for the editor (like the  ;;  the project file has some fields that are used for the editor (like the
2411  ;;  casing exceptions), it has to be read before the user edits a file).  ;;  casing exceptions), it has to be read before the user edits a file).
2412  (add-hook 'ada-mode-hook  ;; (add-hook 'ada-mode-hook
2413            (lambda()  ;;        (lambda()
2414              (let ((file (ada-prj-find-prj-file t)))  ;;          (let ((file (ada-prj-find-prj-file t)))
2415                (if file (ada-reread-prj-file file)))))  ;;            (if file (ada-reread-prj-file file)))))
2416    
2417  (provide 'ada-xref)  (provide 'ada-xref)
2418    

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26