annotate lisp/progmodes/ada-xref.el @ 99651:1f2d2e0198b0

(Compilation): Document first-error value of compilation-scroll-output. (Compilation Mode): Note that compilation-auto-jump-to-first-error works as soon as an error is available. Suggested by Juri Linkov.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 17 Nov 2008 01:38:47 +0000
parents bde81f3667cd
children a9dc0e7c3f2b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1 ;; ada-xref.el --- for lookup and completion in Ada mode
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
64699
629afbe74e61 Update copyright for release of 22.1 for progmodes directory.
Nick Roberts <nickrob@snap.net.nz>
parents: 64085
diff changeset
3 ;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
79717
a1342e6e097a Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78543
diff changeset
4 ;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Author: Markus Heritsch <Markus.Heritsch@studbox.uni-stuttgart.de>
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Rolf Ebert <ebert@inf.enst.fr>
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 ;; Emmanuel Briot <briot@gnat.com>
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
9 ;; Maintainer: Stephen Leake <stephen_leake@stephe-leake.org>
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10 ;; Keywords: languages ada xref
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
11
38361
d42c9135a92d Say that the file _is_ part of Emacs.
Eli Zaretskii <eliz@gnu.org>
parents: 32301
diff changeset
12 ;; This file is part of GNU Emacs.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
13
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
14 ;; GNU Emacs is free software: you can redistribute it and/or modify
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
16 ;; the Free Software Foundation, either version 3 of the License, or
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
17 ;; (at your option) any later version.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 38361
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22 ;; GNU General Public License for more details.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;;; This Package provides a set of functions to use the output of the
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29 ;;; cross reference capabilities of the GNAT Ada compiler
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 ;;; for lookup and completion in Ada mode.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;;;
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 ;;; If a file *.`adp' exists in the ada-file directory, then it is
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
33 ;;; read for configuration informations. It is read only the first
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
34 ;;; time a cross-reference is asked for, and is not read later.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
35
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
36 ;;; You need Emacs >= 20.2 to run this package
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
37
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
38
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
39 ;;; History:
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
40 ;;
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
41
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
42 ;;; Code:
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
43
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
44 ;; ----- Requirements -----------------------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
45
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
46 (require 'compile)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
47 (require 'comint)
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
48 (require 'find-file)
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
49 (require 'ada-mode)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
50
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
51 ;; ------ User variables
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
52 (defcustom ada-xref-other-buffer t
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
53 "*If nil, always display the cross-references in the same buffer.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
54 Otherwise create either a new buffer or a new frame."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
55 :type 'boolean :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
57 (defcustom ada-xref-create-ali nil
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
58 "*If non-nil, run gcc whenever the cross-references are not up-to-date.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
59 If nil, the cross-reference mode never runs gcc."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
60 :type 'boolean :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
61
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
62 (defcustom ada-xref-confirm-compile nil
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
63 "*If non-nil, ask for confirmation before compiling or running the application."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
64 :type 'boolean :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
65
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
66 (defcustom ada-krunch-args "0"
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
67 "*Maximum number of characters for filenames created by `gnatkr'.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
68 Set to 0, if you don't use crunched filenames. This should be a string."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
69 :type 'string :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
70
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
71 (defcustom ada-gnat-cmd "gnat"
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
72 "Default GNAT project file parser.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
73 Will be run with args \"list -v -Pfile.gpr\".
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
74 Default is standard GNAT distribution; alternate \"gnatpath\"
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
75 is faster, available from Ada mode web site."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
76 :type 'string :group 'ada)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
77
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
78 (defcustom ada-gnatls-args '("-v")
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
79 "*Arguments to pass to `gnatls' to find location of the runtime.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
80 Typical use is to pass `--RTS=soft-floats' on some systems that support it.
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
81
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
82 You can also add `-I-' if you do not want the current directory to be included.
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
83 Otherwise, going from specs to bodies and back will first look for files in the
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
84 current directory. This only has an impact if you are not using project files,
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
85 but only ADA_INCLUDE_PATH."
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
86 :type '(repeat string) :group 'ada)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
87
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
88 (defcustom ada-prj-default-comp-opt "-gnatq -gnatQ"
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
89 "Default compilation options."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
90 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
91
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
92 (defcustom ada-prj-default-bind-opt ""
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
93 "Default binder options."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
94 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
95
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
96 (defcustom ada-prj-default-link-opt ""
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
97 "Default linker options."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
98 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
99
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
100 (defcustom ada-prj-default-gnatmake-opt "-g"
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
101 "Default options for `gnatmake'."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
102 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
103
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
104 (defcustom ada-prj-default-gpr-file ""
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
105 "Default GNAT project file.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
106 If non-empty, this file is parsed to set the source and object directories for
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
107 the Ada mode project."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
108 :type 'string :group 'ada)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
109
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
110 (defcustom ada-prj-ada-project-path-sep
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
111 (if (or (equal system-type 'windows-nt)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
112 (equal system-type 'ms-dos))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
113 ";"
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
114 ":")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
115 "Default separator for ada_project_path project variable."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
116 :type 'string :group 'ada)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
117
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
118 (defcustom ada-prj-gnatfind-switches "-rf"
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
119 "Default switches to use for `gnatfind'.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
120 You should modify this variable, for instance to add `-a', if you are working
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
121 in an environment where most ALI files are write-protected.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
122 The command `gnatfind' is used every time you choose the menu
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
123 \"Show all references\"."
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
124 :type 'string :group 'ada)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
125
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
126 (defcustom ada-prj-default-check-cmd
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
127 (concat "${cross_prefix}gnatmake -u -c -gnatc ${gnatmake_opt} ${full_current}"
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
128 " -cargs ${comp_opt}")
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
129 "*Default command to be used to compile a single file.
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
130 Emacs will substitute the current filename for ${full_current}, or add
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
131 the filename at the end. This is the same syntax as in the project file."
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
132 :type 'string :group 'ada)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
133
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
134 (defcustom ada-prj-default-comp-cmd
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
135 (concat "${cross_prefix}gnatmake -u -c ${gnatmake_opt} ${full_current} -cargs"
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
136 " ${comp_opt}")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
137 "*Default command to be used to compile a single file.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
138 Emacs will substitute the current filename for ${full_current}, or add
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
139 the filename at the end. This is the same syntax as in the project file."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
140 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
141
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
142 (defcustom ada-prj-default-debugger "${cross_prefix}gdb"
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
143 "*Default name of the debugger."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 :type 'string :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 (defcustom ada-prj-default-make-cmd
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
147 (concat "${cross_prefix}gnatmake -o ${main} ${main} ${gnatmake_opt} "
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
148 "-cargs ${comp_opt} -bargs ${bind_opt} -largs ${link_opt}")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
149 "*Default command to be used to compile the application.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
150 This is the same syntax as in the project file."
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
151 :type 'string :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
152
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
153 (defcustom ada-prj-default-project-file ""
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
154 "*Name of the current project file.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
155 Emacs will not try to use the search algorithm to find the project file if
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
156 this string is not empty. It is set whenever a project file is found."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
157 :type '(file :must-match t) :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
158
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
159 (defcustom ada-gnatstub-opts "-q -I${src_dir}"
97110
59b62ec53121 * lisp/ada-prj.el (ada-prj-initialize-values): Fix use of deleted
Juanma Barranquero <lekktu@gmail.com>
parents: 97078
diff changeset
160 "*Options to pass to `gnatsub' to generate the body of a package.
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
161 This has the same syntax as in the project file (with variable substitution)."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 :type 'string :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
164 (defcustom ada-always-ask-project nil
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
165 "*If nil, use default values when no project file was found.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
166 Otherwise, ask the user for the name of the project file to use."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
167 :type 'boolean :group 'ada)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
168
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
169 (defconst is-windows (memq system-type (quote (windows-nt)))
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
170 "True if we are running on Windows.")
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
171
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
172 (defcustom ada-tight-gvd-integration nil
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
173 "*If non-nil, a new Emacs frame will be swallowed in GVD when debugging.
56284
dc1d86b8bbbe (ada-tight-gvd-integration): Add :group 'ada.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
174 If GVD is not the debugger used, nothing happens."
dc1d86b8bbbe (ada-tight-gvd-integration): Add :group 'ada.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
175 :type 'boolean :group 'ada)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
176
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
177 (defcustom ada-xref-search-with-egrep t
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
178 "*If non-nil, use egrep to find the possible declarations for an entity.
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
179 This alternate method is used when the exact location was not found in the
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
180 information provided by GNAT. However, it might be expensive if you have a lot
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
181 of sources, since it will search in all the files in your project."
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
182 :type 'boolean :group 'ada)
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
183
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
184 (defvar ada-load-project-hook nil
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
185 "Hook that is run when loading a project file.
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
186 Each function in this hook takes one argument FILENAME, that is the name of
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
187 the project file to load.
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
188 This hook should be used to support new formats for the project files.
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
189
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
190 If the function can load the file with the given filename, it should create a
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
191 buffer that contains a conversion of the file to the standard format of the
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
192 project files, and return that buffer. (The usual \"src_dir=\" or \"obj_dir=\"
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
193 lines.) It should return nil if it doesn't know how to convert that project
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
194 file.")
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
195
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
196
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
197 ;; ------- Nothing to be modified by the user below this
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
198 (defvar ada-last-prj-file ""
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
199 "Name of the last project file entered by the user.")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
201 (defconst ada-prj-file-extension ".adp"
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
202 "The extension used for project files.")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
203
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
204 (defvar ada-xref-runtime-library-specs-path '()
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
205 "Directories where the specs for the standard library is found.
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
206 This is used for cross-references.")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
207
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
208 (defvar ada-xref-runtime-library-ali-path '()
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
209 "Directories where the ali for the standard library is found.
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
210 This is used for cross-references.")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
211
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212 (defvar ada-xref-pos-ring '()
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
213 "List of positions selected by the cross-references functions.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
214 Used to go back to these positions.")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
215
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
216 (defvar ada-cd-command
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
217 (if (string-match "cmdproxy.exe" shell-file-name)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
218 "cd /d"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
219 "cd")
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
220 "Command to use to change to a specific directory.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
221 On Windows systems using `cmdproxy.exe' as the shell,
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
222 we need to use `/d' or the drive is never changed.")
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
223
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
224 (defvar ada-command-separator (if is-windows " && " "\n")
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
225 "Separator to use between multiple commands to `compile' or `start-process'.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
226 `cmdproxy.exe' doesn't recognize multiple-line commands, so we have to use
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
227 \"&&\" for now.")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
228
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
229 (defconst ada-xref-pos-ring-max 16
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
230 "Number of positions kept in the list `ada-xref-pos-ring'.")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232 (defvar ada-operator-re
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
233 "\\+\\|-\\|/\\|\\*\\*\\|\\*\\|=\\|&\\|abs\\|mod\\|rem\\|and\\|not\\|or\\|xor\\|<=\\|<\\|>=\\|>"
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
234 "Regexp to match for operators.")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
235
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
236 (defvar ada-xref-project-files '()
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
237 "Associative list of project files with properties.
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
238 It has the format: (project project ...)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
239 A project has the format: (project-file . project-plist)
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
240 \(See 'apropos plist' for operations on property lists).
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
241 See `ada-default-prj-properties' for the list of valid properties.
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
242 The current project is retrieved with `ada-xref-current-project'.
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
243 Properties are retrieved with `ada-xref-get-project-field', set with
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
244 `ada-xref-set-project-field'. If project properties are accessed with no
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
245 project file, a (nil . default-properties) entry is created.")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
246
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
247
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
248 ;; ----- Identlist manipulation -------------------------------------------
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
249 ;; An identlist is a vector that is used internally to reference an identifier
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
250 ;; To facilitate its use, we provide the following macros
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
251
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
252 (defmacro ada-make-identlist () (make-vector 8 nil))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
253 (defmacro ada-name-of (identlist) (list 'aref identlist 0))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
254 (defmacro ada-line-of (identlist) (list 'aref identlist 1))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
255 (defmacro ada-column-of (identlist) (list 'aref identlist 2))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
256 (defmacro ada-file-of (identlist) (list 'aref identlist 3))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
257 (defmacro ada-ali-index-of (identlist) (list 'aref identlist 4))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
258 (defmacro ada-declare-file-of (identlist) (list 'aref identlist 5))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
259 (defmacro ada-references-of (identlist) (list 'aref identlist 6))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
260 (defmacro ada-on-declaration (identlist) (list 'aref identlist 7))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
261
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
262 (defmacro ada-set-name (identlist name) (list 'aset identlist 0 name))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
263 (defmacro ada-set-line (identlist line) (list 'aset identlist 1 line))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
264 (defmacro ada-set-column (identlist col) (list 'aset identlist 2 col))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
265 (defmacro ada-set-file (identlist file) (list 'aset identlist 3 file))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
266 (defmacro ada-set-ali-index (identlist index) (list 'aset identlist 4 index))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
267 (defmacro ada-set-declare-file (identlist file) (list 'aset identlist 5 file))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
268 (defmacro ada-set-references (identlist ref) (list 'aset identlist 6 ref))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
269 (defmacro ada-set-on-declaration (ident value) (list 'aset ident 7 value))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
270
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
271 (defsubst ada-get-ali-buffer (file)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
272 "Read the ali file FILE into a new buffer, and return the buffer's name."
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
273 (find-file-noselect (ada-get-ali-file-name file)))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
274
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
275
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
276 ;; -----------------------------------------------------------------------
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
277
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
278 (defun ada-quote-cmd (cmd)
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
279 "Duplicate all `\\' characters in CMD so that it can be passed to `compile'."
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
280 (mapconcat 'identity (split-string cmd "\\\\") "\\\\"))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
281
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
282 (defun ada-find-executable (exec-name)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
283 "Find the full path to the executable file EXEC-NAME.
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
284 If not found, throw an error.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
285 On Windows systems, this will properly handle .exe extension as well."
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
286 (let ((result (or (ada-find-file-in-dir exec-name exec-path)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
287 (ada-find-file-in-dir (concat exec-name ".exe") exec-path))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
288 (if result
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
289 result
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
290 (error "'%s' not found in path" exec-name))))
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
291
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
292 (defun ada-initialize-runtime-library (cross-prefix)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
293 "Initialize the variables for the runtime library location.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
294 CROSS-PREFIX is the prefix to use for the `gnatls' command."
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
295 (let ((gnatls
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
296 (condition-case nil
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
297 ;; if gnatls not found, just give up (may not be using GNAT)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
298 (ada-find-executable (concat cross-prefix "gnatls"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
299 (error nil))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
300 (if gnatls
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
301 (save-excursion
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
302 (setq ada-xref-runtime-library-specs-path '()
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
303 ada-xref-runtime-library-ali-path '())
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
304 (set-buffer (get-buffer-create "*gnatls*"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
305 (widen)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
306 (erase-buffer)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
307 ;; Even if we get an error, delete the *gnatls* buffer
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
308 (unwind-protect
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
309 (let ((status (apply 'call-process gnatls (append '(nil t nil) ada-gnatls-args))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
310 (goto-char (point-min))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
311
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
312 ;; Since we didn't provide all the inputs gnatls expects, it returns status 4
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
313 (if (/= 4 status)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
314 (error (buffer-substring (point) (line-end-position))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
315
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
316 ;; Source path
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
317
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
318 (search-forward "Source Search Path:")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
319 (forward-line 1)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
320 (while (not (looking-at "^$"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
321 (back-to-indentation)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
322 (if (looking-at "<Current_Directory>")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
323 (add-to-list 'ada-xref-runtime-library-specs-path ".")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
324 (add-to-list 'ada-xref-runtime-library-specs-path
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
325 (buffer-substring-no-properties
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
326 (point)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
327 (save-excursion (end-of-line) (point)))))
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
328 (forward-line 1))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
329
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
330 ;; Object path
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
331
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
332 (search-forward "Object Search Path:")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
333 (forward-line 1)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
334 (while (not (looking-at "^$"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
335 (back-to-indentation)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
336 (if (looking-at "<Current_Directory>")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
337 (add-to-list 'ada-xref-runtime-library-ali-path ".")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
338 (add-to-list 'ada-xref-runtime-library-ali-path
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
339 (buffer-substring-no-properties
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
340 (point)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
341 (save-excursion (end-of-line) (point)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
342 (forward-line 1))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
343 )
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
344 (kill-buffer nil))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
345
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
346 (set 'ada-xref-runtime-library-specs-path
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
347 (reverse ada-xref-runtime-library-specs-path))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
348 (set 'ada-xref-runtime-library-ali-path
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
349 (reverse ada-xref-runtime-library-ali-path))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
350 ))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
351
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
352 (defun ada-gnat-parse-gpr (plist gpr-file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
353 "Set gpr_file, src_dir and obj_dir properties in PLIST by parsing GPR-FILE.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
354 Return new value of PLIST.
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
355 GPR_FILE must be full path to file, normalized.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
356 src_dir, obj_dir will include compiler runtime.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
357 Assumes environment variable ADA_PROJECT_PATH is set properly."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
358 (save-excursion
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
359 (set-buffer (get-buffer-create "*gnatls*"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
360 (erase-buffer)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
361
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
362 ;; this can take a long time; let the user know what's up
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
363 (message "Parsing %s ..." gpr-file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
364
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
365 ;; Even if we get an error, delete the *gnatls* buffer
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
366 (unwind-protect
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
367 (let* ((cross-prefix (plist-get plist 'cross_prefix))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
368 (gnat (concat cross-prefix ada-gnat-cmd))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
369 ;; Putting quotes around gpr-file confuses gnatpath on Lynx; not clear why
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
370 (gpr-opt (concat "-P" gpr-file))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
371 (src-dir '())
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
372 (obj-dir '())
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
373 (status (call-process gnat nil t nil "list" "-v" gpr-opt)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
374 (goto-char (point-min))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
375
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
376 (if (/= 0 status)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
377 (error (buffer-substring (point) (line-end-position))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
378
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
379 ;; Source path
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
380
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
381 (search-forward "Source Search Path:")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
382 (forward-line 1) ; first directory in list
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
383 (while (not (looking-at "^$")) ; terminate on blank line
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
384 (back-to-indentation) ; skip whitespace
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
385 (if (looking-at "<Current_Directory>")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
386 (add-to-list 'src-dir (expand-file-name "."))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
387 (add-to-list 'src-dir
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
388 (expand-file-name
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
389 (buffer-substring-no-properties
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
390 (point) (line-end-position)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
391 (forward-line 1))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
392
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
393 ;; Object path
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
394
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
395 (search-forward "Object Search Path:")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
396 (forward-line 1)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
397 (while (not (looking-at "^$"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
398 (back-to-indentation)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
399 (if (looking-at "<Current_Directory>")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
400 (add-to-list 'obj-dir (expand-file-name "."))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
401 (add-to-list 'obj-dir
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
402 (expand-file-name
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
403 (buffer-substring-no-properties
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
404 (point) (line-end-position)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
405 (forward-line 1))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
406
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
407 ;; Set properties
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
408 (setq plist (plist-put plist 'gpr_file gpr-file))
98674
bde81f3667cd * progmodes/ada-mode.el (ada-get-indent-end, ada-goto-matching-start):
Juanma Barranquero <lekktu@gmail.com>
parents: 97110
diff changeset
409 (setq plist (plist-put plist 'src_dir src-dir))
bde81f3667cd * progmodes/ada-mode.el (ada-get-indent-end, ada-goto-matching-start):
Juanma Barranquero <lekktu@gmail.com>
parents: 97110
diff changeset
410 (plist-put plist 'obj_dir obj-dir)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
411 )
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
412 (kill-buffer nil)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
413 (message "Parsing %s ... done" gpr-file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
414 )
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
415 ))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
416
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
417 (defun ada-treat-cmd-string (cmd-string)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
418 "Replace variable references ${var} in CMD-STRING with the appropriate value.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
419 Also replace standard environment variables $var.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
420 Assumes project exists.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
421 As a special case, ${current} is replaced with the name of the current
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
422 file, minus extension but with directory, and ${full_current} is
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
423 replaced by the name including the extension."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
424
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
425 (while (string-match "\\(-[^-\$IO]*[IO]\\)?\${\\([^}]+\\)}" cmd-string)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
426 (let (value
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
427 (name (match-string 2 cmd-string)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
428 (cond
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
429 ((string= name "current")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
430 (setq value (file-name-sans-extension (buffer-file-name))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
431 ((string= name "full_current")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
432 (setq value (buffer-file-name)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
433 (t
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
434 (save-match-data
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
435 (setq value (ada-xref-get-project-field (intern name))))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
436
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
437 ;; Check if there is an environment variable with the same name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
438 (if (null value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
439 (if (not (setq value (getenv name)))
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
440 (message "%s" (concat "No project or environment variable " name " found"))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
441
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
442 (cond
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
443 ((null value)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
444 (setq cmd-string (replace-match "" t t cmd-string)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
445 ((stringp value)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
446 (setq cmd-string (replace-match value t t cmd-string)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
447 ((listp value)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
448 (let ((prefix (match-string 1 cmd-string)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
449 (setq cmd-string (replace-match
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
450 (mapconcat (lambda(x) (concat prefix x)) value " ")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
451 t t cmd-string)))))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
452 ))
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
453 (substitute-in-file-name cmd-string))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
454
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
455
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
456 (defun ada-xref-get-project-field (field)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
457 "Extract the value of FIELD from the current project file.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
458 Project variables are substituted.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
459
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
460 Note that for src_dir and obj_dir, you should rather use
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
461 `ada-xref-get-src-dir-field' or `ada-xref-get-obj-dir-field'
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
462 which will in addition return the default paths."
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
463
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
464 (let* ((project-plist (cdr (ada-xref-current-project)))
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
465 (value (plist-get project-plist field)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
466
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
467 (cond
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
468 ((eq field 'gnatmake_opt)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
469 (let ((gpr-file (plist-get project-plist 'gpr_file)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
470 (if (not (string= gpr-file ""))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
471 (setq value (concat "-P\"" gpr-file "\" " value)))))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
472
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
473 ;; FIXME: check for src_dir, obj_dir here, rather than requiring user to do it
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
474 (t
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
475 nil))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
476
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
477 ;; Substitute the ${...} constructs in all the strings, including
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
478 ;; inside lists
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
479 (cond
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
480 ((stringp value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
481 (ada-treat-cmd-string value))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
482 ((null value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
483 nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
484 ((listp value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
485 (mapcar (lambda(x) (if x (ada-treat-cmd-string x) x)) value))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
486 (t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
487 value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
488 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
489 ))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
490
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
491 (defun ada-xref-get-src-dir-field ()
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
492 "Return the full value for src_dir, including the default directories.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
493 All the directories are returned as absolute directories."
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
494
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
495 (let ((build-dir (ada-xref-get-project-field 'build_dir)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
496 (append
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
497 ;; Add ${build_dir} in front of the path
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
498 (list build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
499
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
500 (ada-get-absolute-dir-list (ada-xref-get-project-field 'src_dir)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
501 build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
502
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
503 ;; Add the standard runtime at the end
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
504 ada-xref-runtime-library-specs-path)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
505
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
506 (defun ada-xref-get-obj-dir-field ()
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
507 "Return the full value for obj_dir, including the default directories.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
508 All the directories are returned as absolute directories."
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
509
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
510 (let ((build-dir (ada-xref-get-project-field 'build_dir)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
511 (append
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
512 ;; Add ${build_dir} in front of the path
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
513 (list build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
514
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
515 (ada-get-absolute-dir-list (ada-xref-get-project-field 'obj_dir)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
516 build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
517
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
518 ;; Add the standard runtime at the end
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
519 ada-xref-runtime-library-ali-path)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
520
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
521 (defun ada-xref-set-project-field (field value)
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
522 "Set FIELD to VALUE in current project. Assumes project exists."
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
523 ;; same algorithm to find project-plist as ada-xref-current-project
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
524 (let* ((file-name (ada-xref-current-project-file))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
525 (project-plist (cdr (assoc file-name ada-xref-project-files))))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
526
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
527 (setq project-plist (plist-put project-plist field value))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
528 (setcdr (assoc file-name ada-xref-project-files) project-plist)))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
529
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
530 (defun ada-xref-update-project-menu ()
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
531 "Update the menu Ada->Project, with the list of available project files."
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
532 ;; Create the standard items.
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
533 (let ((submenu
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
534 `("Project"
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
535 ["Load..." ada-set-default-project-file t]
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
536 ["New..." ada-prj-new t]
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
537 ["Edit..." ada-prj-edit t]
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
538 "---"
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
539 ;; Add the project files
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
540 ,@(mapcar
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
541 (lambda (x)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
542 (let* ((name (or (car x) "<default>"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
543 (command `(lambda ()
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
544 "Select the current project file."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
545 (interactive)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
546 (ada-select-prj-file ,name))))
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
547 (vector
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
548 (file-name-nondirectory name)
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
549 command
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
550 :button (cons
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
551 :toggle
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
552 (equal ada-prj-default-project-file
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
553 (car x))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
554 ))))
56284
dc1d86b8bbbe (ada-tight-gvd-integration): Add :group 'ada.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
555
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
556 (or ada-xref-project-files '(nil))))))
56284
dc1d86b8bbbe (ada-tight-gvd-integration): Add :group 'ada.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
557
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
558 (easy-menu-add-item ada-mode-menu '() submenu)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
559
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
560
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
561 ;;-------------------------------------------------------------
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
562 ;;-- Searching a file anywhere on the source path.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
563 ;;--
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
564 ;;-- The following functions provide support for finding a file anywhere
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
565 ;;-- on the source path, without providing an explicit directory.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
566 ;;-- They also provide file name completion in the minibuffer.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
567 ;;--
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
568 ;;-- Public subprograms: ada-find-file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
569 ;;--
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
570 ;;-------------------------------------------------------------
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
571
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
572 (defun ada-do-file-completion (string predicate flag)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
573 "Completion function when reading a file from the minibuffer.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
574 Completion is attempted in all the directories in the source path,
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
575 as defined in the project file."
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
576 ;; FIXME: doc arguments
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
577
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
578 ;; This function is not itself interactive, but it is called as part
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
579 ;; of the prompt of interactive functions, so we require a project
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
580 ;; file.
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
581 (ada-require-project-file)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
582 (let (list
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
583 (dirs (ada-xref-get-src-dir-field)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
584
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
585 (while dirs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
586 (if (file-directory-p (car dirs))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
587 (set 'list (append list (file-name-all-completions string (car dirs)))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
588 (set 'dirs (cdr dirs)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
589 (cond ((equal flag 'lambda)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
590 (assoc string list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
591 (flag
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
592 list)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
593 (t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
594 (try-completion string
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
595 (mapcar (lambda (x) (cons x 1)) list)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
596 predicate)))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
597
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
598 ;;;###autoload
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
599 (defun ada-find-file (filename)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
600 "Open FILENAME, from anywhere in the source path.
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
601 Completion is available."
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
602 (interactive
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
603 (list (completing-read "File: " 'ada-do-file-completion)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
604 (let ((file (ada-find-src-file-in-dir filename)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
605 (if file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
606 (find-file file)
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
607 (error "%s not found in src_dir" filename))))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
608
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
609
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
610 ;; ----- Utilities -------------------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
611
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
612 (defun ada-require-project-file ()
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
613 "If the current project does not exist, load or create a default one.
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
614 Should only be called from interactive functions."
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
615 (if (string= "" ada-prj-default-project-file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
616 (ada-reread-prj-file (ada-prj-find-prj-file t))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
617
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
618 (defun ada-xref-current-project-file ()
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
619 "Return the current project file name; never nil.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
620 Call `ada-require-project-file' first if a project must exist."
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
621 (if (not (string= "" ada-prj-default-project-file))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
622 ada-prj-default-project-file
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
623 (ada-prj-find-prj-file t)))
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
624
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
625 (defun ada-xref-current-project ()
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
626 "Return the current project.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
627 Call `ada-require-project-file' first to ensure a project exists."
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
628 (let ((file-name (ada-xref-current-project-file)))
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
629 (assoc file-name ada-xref-project-files)))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
630
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
631 (defun ada-show-current-project ()
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
632 "Display current project file name in message buffer."
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
633 (interactive)
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
634 (message (ada-xref-current-project-file)))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
635
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
636 (defun ada-show-current-main ()
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
637 "Display current main file name in message buffer."
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
638 (interactive)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
639 (message "ada-mode main: %s" (ada-xref-get-project-field 'main)))
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
640
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
641 (defun ada-xref-push-pos (filename position)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
642 "Push (FILENAME, POSITION) on the position ring for cross-references."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
643 (setq ada-xref-pos-ring (cons (list position filename) ada-xref-pos-ring))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
644 (if (> (length ada-xref-pos-ring) ada-xref-pos-ring-max)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
645 (setcdr (nthcdr (1- ada-xref-pos-ring-max) ada-xref-pos-ring) nil)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
646
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
647 (defun ada-xref-goto-previous-reference ()
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
648 "Go to the previous cross-reference we were on."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
649 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
650 (if ada-xref-pos-ring
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
651 (let ((pos (car ada-xref-pos-ring)))
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
652 (setq ada-xref-pos-ring (cdr ada-xref-pos-ring))
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
653 (find-file (car (cdr pos)))
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
654 (goto-char (car pos)))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
655
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
656 (defun ada-convert-file-name (name)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
657 "Convert from NAME to a name that can be used by the compilation commands.
79857
f8e2d487fe6e (ada-convert-file-name): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 79717
diff changeset
658 This is overridden on VMS to convert from VMS filenames to Unix filenames."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
659 name)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
660 ;; FIXME: use convert-standard-filename instead
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
661
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
662 (defun ada-set-default-project-file (file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
663 "Set FILE as the current project file."
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
664 (interactive "fProject file:")
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
665 (ada-parse-prj-file file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
666 (ada-select-prj-file file))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
667
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
668 ;; ------ Handling the project file -----------------------------
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
669
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
670 (defun ada-prj-find-prj-file (&optional no-user-question)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
671 "Find the project file associated with the current buffer.
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
672 If the buffer is not in Ada mode, or not associated with a file,
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
673 return `ada-prj-default-project-file'. Otherwise, search for a file with
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
674 the same base name as the Ada file, but extension given by
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
675 `ada-prj-file-extension' (default .adp). If not found, search for *.adp
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
676 in the current directory; if several are found, and NO-USER-QUESTION
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
677 is non-nil, prompt the user to select one. If none are found, return
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
678 'default.adp'."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
679
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
680 (let (selected)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
681
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87169
diff changeset
682 (if (not (and (derived-mode-p 'ada-mode)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
683 buffer-file-name))
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
684
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
685 ;; Not in an Ada buffer, or current buffer not associated
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
686 ;; with a file (for instance an emerge buffer)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
687 (setq selected nil)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
688
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
689 ;; other cases: use a more complex algorithm
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
690
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
691 (let* ((current-file (buffer-file-name))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
692 (first-choice (concat
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
693 (file-name-sans-extension current-file)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
694 ada-prj-file-extension))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
695 (dir (file-name-directory current-file))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
696
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
697 (prj-files (directory-files
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
698 dir t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
699 (concat ".*" (regexp-quote
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
700 ada-prj-file-extension) "$")))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
701 (choice nil))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
702
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
703 (cond
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
704
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
705 ((file-exists-p first-choice)
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
706 ;; filename.adp
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
707 (set 'selected first-choice))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
708
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
709 ((= (length prj-files) 1)
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
710 ;; Exactly one project file was found in the current directory
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
711 (set 'selected (car prj-files)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
712
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
713 ((and (> (length prj-files) 1) (not no-user-question))
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
714 ;; multiple project files in current directory, ask the user
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
715 (save-window-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
716 (with-output-to-temp-buffer "*choice list*"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
717 (princ "There are more than one possible project file.\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
718 (princ "Which one should we use ?\n\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
719 (princ " no. file name \n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
720 (princ " --- ------------------------\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
721 (let ((counter 1))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
722 (while (<= counter (length prj-files))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
723 (princ (format " %2d) %s\n"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
724 counter
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
725 (nth (1- counter) prj-files)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
726 (setq counter (1+ counter))
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
727
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
728 ))) ; end of with-output-to ...
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
729 (setq choice nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
730 (while (or
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
731 (not choice)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
732 (not (integerp choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
733 (< choice 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
734 (> choice (length prj-files)))
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 58004
diff changeset
735 (setq choice (string-to-number
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
736 (read-from-minibuffer "Enter No. of your choice: "))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
737 (set 'selected (nth (1- choice) prj-files))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
738
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
739 ((= (length prj-files) 0)
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
740 ;; No project file in the current directory; ask user
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
741 (unless (or no-user-question (not ada-always-ask-project))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
742 (setq ada-last-prj-file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
743 (read-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
744 (concat "project file [" ada-last-prj-file "]:")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
745 nil ada-last-prj-file))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
746 (unless (string= ada-last-prj-file "")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
747 (set 'selected ada-last-prj-file))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
748 )))
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
749
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
750 (or selected "default.adp")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
751 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
752
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
753 (defun ada-default-prj-properties ()
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
754 "Return the default project properties list with the current buffer as main."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
755
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
756 (let ((file (buffer-file-name nil)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
757 (list
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
758 ;; variable name alphabetical order
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
759 'ada_project_path ""
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
760 'ada_project_path_sep ada-prj-ada-project-path-sep
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
761 'bind_opt ada-prj-default-bind-opt
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
762 'build_dir default-directory
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
763 'casing (if (listp ada-case-exception-file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
764 ada-case-exception-file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
765 (list ada-case-exception-file))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
766 'check_cmd (list ada-prj-default-check-cmd) ;; FIXME: should not a list
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
767 'comp_cmd (list ada-prj-default-comp-cmd) ;; FIXME: should not a list
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
768 'comp_opt ada-prj-default-comp-opt
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
769 'cross_prefix ""
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
770 'debug_cmd (concat ada-prj-default-debugger
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
771 " ${main}" (if is-windows ".exe")) ;; FIXME: don't need .exe?
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
772 'debug_post_cmd (list nil)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
773 'debug_pre_cmd (list (concat ada-cd-command " ${build_dir}"))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
774 'gnatmake_opt ada-prj-default-gnatmake-opt
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
775 'gnatfind_opt ada-prj-gnatfind-switches
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
776 'gpr_file ada-prj-default-gpr-file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
777 'link_opt ada-prj-default-link-opt
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
778 'main (if file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
779 (file-name-nondirectory
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
780 (file-name-sans-extension file))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
781 "")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
782 'make_cmd (list ada-prj-default-make-cmd) ;; FIXME: should not a list
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
783 'obj_dir (list ".")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
784 'remote_machine ""
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
785 'run_cmd (list (concat "./${main}" (if is-windows ".exe")))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
786 ;; FIXME: should not a list
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
787 ;; FIXME: don't need .exe?
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
788 'src_dir (list ".")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
789 )))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
790
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
791 (defun ada-parse-prj-file (prj-file)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
792 "Read PRJ-FILE, set project properties in `ada-xref-project-files'."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
793 (let ((project (ada-default-prj-properties)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
794
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
795 (setq prj-file (expand-file-name prj-file))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
796 (if (string= (file-name-extension prj-file) "gpr")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
797 (set 'project (ada-gnat-parse-gpr project prj-file))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
798
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
799 (set 'project (ada-parse-prj-file-1 prj-file project))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
800 )
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
801
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
802 ;; Store the project properties
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
803 (if (assoc prj-file ada-xref-project-files)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
804 (setcdr (assoc prj-file ada-xref-project-files) project)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
805 (add-to-list 'ada-xref-project-files (cons prj-file project)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
806
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
807 (ada-xref-update-project-menu)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
808 ))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
809
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
810 (defun ada-parse-prj-file-1 (prj-file project)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
811 "Parse the Ada mode project file PRJ-FILE, set project properties in PROJECT.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
812 Return new value of PROJECT."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
813 (let ((ada-buffer (current-buffer))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
814 ;; fields that are lists or otherwise require special processing
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
815 ada_project_path casing comp_cmd check_cmd
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
816 debug_pre_cmd debug_post_cmd gpr_file make_cmd obj_dir src_dir run_cmd)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
817
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
818 ;; Give users a chance to use compiler-specific project file formats
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
819 (let ((buffer (run-hook-with-args-until-success
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
820 'ada-load-project-hook prj-file)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
821 (unless buffer
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
822 ;; we load the project file with no warnings; if it does not
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
823 ;; exist, we stay in the Ada buffer; no project variable
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
824 ;; settings will be found. That works for the default
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
825 ;; "default.adp", which does not exist as a file.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
826 (setq buffer (find-file-noselect prj-file nil)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
827 (set-buffer buffer))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
828
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
829 (widen)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
830 (goto-char (point-min))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
831
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
832 ;; process each line
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
833 (while (not (eobp))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
834
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
835 ;; ignore lines that don't have the format "name=value", put
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
836 ;; 'name', 'value' in match-string.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
837 (if (looking-at "^\\([^=\n]+\\)=\\(.*\\)")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
838 (cond
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
839 ;; FIXME: strip trailing spaces
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
840 ;; variable name alphabetical order
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
841 ((string= (match-string 1) "ada_project_path")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
842 (add-to-list 'ada_project_path
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
843 (expand-file-name
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
844 (substitute-in-file-name (match-string 2)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
845
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
846 ((string= (match-string 1) "build_dir")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
847 (set 'project
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
848 (plist-put project 'build_dir
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
849 (file-name-as-directory (match-string 2)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
850
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
851 ((string= (match-string 1) "casing")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
852 (add-to-list 'casing
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
853 (expand-file-name (substitute-in-file-name (match-string 2)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
854
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
855 ((string= (match-string 1) "check_cmd")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
856 (add-to-list 'check_cmd (match-string 2)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
857
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
858 ((string= (match-string 1) "comp_cmd")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
859 (add-to-list 'comp_cmd (match-string 2)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
860
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
861 ((string= (match-string 1) "debug_post_cmd")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
862 (add-to-list 'debug_post_cmd (match-string 2)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
863
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
864 ((string= (match-string 1) "debug_pre_cmd")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
865 (add-to-list 'debug_pre_cmd (match-string 2)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
866
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
867 ((string= (match-string 1) "gpr_file")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
868 ;; expand now; path is relative to Emacs project file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
869 (setq gpr_file (expand-file-name (match-string 2))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
870
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
871 ((string= (match-string 1) "make_cmd")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
872 (add-to-list 'make_cmd (match-string 2)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
873
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
874 ((string= (match-string 1) "obj_dir")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
875 (add-to-list 'obj_dir
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
876 (file-name-as-directory
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
877 (expand-file-name (match-string 2)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
878
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
879 ((string= (match-string 1) "run_cmd")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
880 (add-to-list 'run_cmd (match-string 2)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
881
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
882 ((string= (match-string 1) "src_dir")
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
883 (add-to-list 'src_dir
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
884 (file-name-as-directory
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
885 (expand-file-name (match-string 2)))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
886
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
887 (t
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
888 ;; any other field in the file is just copied
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
889 (set 'project (plist-put project
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
890 (intern (match-string 1))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
891 (match-string 2))))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
892
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
893 (forward-line 1))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
894
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
895 ;; done reading file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
896
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
897 ;; back to the user buffer
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
898 (set-buffer ada-buffer)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
899
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
900 ;; process accumulated lists
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
901 (if ada_project_path
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
902 (let ((sep (plist-get project 'ada_project_path_sep)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
903 (setq ada_project_path (reverse ada_project_path))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
904 (setq ada_project_path (mapconcat 'identity ada_project_path sep))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
905 (set 'project (plist-put project 'ada_project_path ada_project_path))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
906 ;; env var needed now for ada-gnat-parse-gpr
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
907 (setenv "ADA_PROJECT_PATH" ada_project_path)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
908
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
909 (if debug_post_cmd (set 'project (plist-put project 'debug_post_cmd (reverse debug_post_cmd))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
910 (if debug_pre_cmd (set 'project (plist-put project 'debug_pre_cmd (reverse debug_pre_cmd))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
911 (if casing (set 'project (plist-put project 'casing (reverse casing))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
912 (if check_cmd (set 'project (plist-put project 'check_cmd (reverse check_cmd))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
913 (if comp_cmd (set 'project (plist-put project 'comp_cmd (reverse comp_cmd))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
914 (if make_cmd (set 'project (plist-put project 'make_cmd (reverse make_cmd))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
915 (if run_cmd (set 'project (plist-put project 'run_cmd (reverse run_cmd))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
916
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
917 (if gpr_file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
918 (progn
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
919 (set 'project (ada-gnat-parse-gpr project gpr_file))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
920 ;; append Ada source and object directories to others from Emacs project file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
921 (setq src_dir (append (plist-get project 'src_dir) src_dir))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
922 (setq obj_dir (append (plist-get project 'obj_dir) obj_dir))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
923 (setq ada-xref-runtime-library-specs-path '()
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
924 ada-xref-runtime-library-ali-path '()))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
925 )
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
926
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
927 ;; FIXME: gnatpath.exe doesn't output the runtime libraries, so always call ada-initialize-runtime-library
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
928 ;; if using a gpr_file, the runtime library directories are
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
929 ;; included in src_dir and obj_dir; otherwise they are in the
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
930 ;; 'runtime-library' variables.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
931 ;; FIXME: always append to src_dir, obj_dir
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
932 (ada-initialize-runtime-library (or (ada-xref-get-project-field 'cross_prefix) ""))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
933 ;;)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
934
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
935 (if obj_dir (set 'project (plist-put project 'obj_dir (reverse obj_dir))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
936 (if src_dir (set 'project (plist-put project 'src_dir (reverse src_dir))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
937
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
938 project
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
939 ))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
940
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
941 (defun ada-select-prj-file (file)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
942 "Select FILE as the current project file."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
943 (interactive)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
944 (setq ada-prj-default-project-file (expand-file-name file))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
945
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
946 (let ((casing (ada-xref-get-project-field 'casing)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
947 (if casing
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
948 (progn
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
949 ;; FIXME: use ada-get-absolute-dir here
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
950 (setq ada-case-exception-file casing)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
951 (ada-case-read-exceptions))))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
952
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
953 (let ((ada_project_path (ada-xref-get-project-field 'ada_project_path)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
954 (if ada_project_path
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
955 ;; FIXME: use ada-get-absolute-dir, mapconcat here
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
956 (setenv "ADA_PROJECT_PATH" ada_project_path)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
957
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
958 (setq compilation-search-path (ada-xref-get-src-dir-field))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
959
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
960 (setq ada-search-directories-internal
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
961 ;; FIXME: why do we need directory-file-name here?
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
962 (append (mapcar 'directory-file-name compilation-search-path)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
963 ada-search-directories))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
964
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
965 ;; return 't', for decent display in message buffer when called interactively
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
966 t)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
967
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
968 (defun ada-find-references (&optional pos arg local-only)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
969 "Find all references to the entity under POS.
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
970 Calls gnatfind to find the references.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
971 If ARG is non-nil, the contents of the old *gnatfind* buffer is preserved.
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
972 If LOCAL-ONLY is non-nil, only declarations in the current file are returned."
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
973 (interactive "d\nP")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
974 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
975
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
976 (let* ((identlist (ada-read-identifier pos))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
977 (alifile (ada-get-ali-file-name (ada-file-of identlist)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
978 (process-environment (ada-set-environment)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
979
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
980 (set-buffer (get-file-buffer (ada-file-of identlist)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
981
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
982 ;; if the file is more recent than the executable
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
983 (if (or (buffer-modified-p (current-buffer))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
984 (file-newer-than-file-p (ada-file-of identlist) alifile))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
985 (ada-find-any-references (ada-name-of identlist)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
986 (ada-file-of identlist)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
987 nil nil local-only arg)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
988 (ada-find-any-references (ada-name-of identlist)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
989 (ada-file-of identlist)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
990 (ada-line-of identlist)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
991 (ada-column-of identlist) local-only arg)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
992 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
993
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
994 (defun ada-find-local-references (&optional pos arg)
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
995 "Find all references to the entity under POS.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
996 Calls `gnatfind' to find the references.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
997 If ARG is non-nil, the contents of the old *gnatfind* buffer is preserved."
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
998 (interactive "d\nP")
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
999 (ada-find-references pos arg t))
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1000
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1001 (defconst ada-gnatfind-buffer-name "*gnatfind*")
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1002
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1003 (defun ada-find-any-references
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1004 (entity &optional file line column local-only append)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1005 "Search for references to any entity whose name is ENTITY.
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1006 ENTITY was first found the location given by FILE, LINE and COLUMN.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1007 If LOCAL-ONLY is non-nil, then list only the references in FILE,
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1008 which is much faster.
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1009 If APPEND is non-nil, then append the output of the command to the
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1010 existing buffer `*gnatfind*', if there is one."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1011 (interactive "sEntity name: ")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1012 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1013
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1014 ;; Prepare the gnatfind command. Note that we must protect the quotes
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1015 ;; around operators, so that they are correctly handled and can be
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1016 ;; processed (gnatfind \"+\":...).
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1017 (let* ((quote-entity
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1018 (if (= (aref entity 0) ?\")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1019 (if is-windows
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1020 (concat "\\\"" (substring entity 1 -1) "\\\"")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1021 (concat "'\"" (substring entity 1 -1) "\"'"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1022 entity))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1023 (switches (ada-xref-get-project-field 'gnatfind_opt))
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1024 ;; FIXME: use gpr_file
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1025 (cross-prefix (ada-xref-get-project-field 'cross_prefix))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1026 (command (concat cross-prefix "gnat find " switches " "
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1027 quote-entity
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1028 (if file (concat ":" (file-name-nondirectory file)))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1029 (if line (concat ":" line))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1030 (if column (concat ":" column))
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1031 (if local-only (concat " " (file-name-nondirectory file)))
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1032 ))
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1033 old-contents)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1034
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1035 ;; If a project file is defined, use it
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1036 (if (and ada-prj-default-project-file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1037 (not (string= ada-prj-default-project-file "")))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1038 (if (string-equal (file-name-extension ada-prj-default-project-file)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1039 "gpr")
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1040 (setq command (concat command " -P\"" ada-prj-default-project-file "\""))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1041 (setq command (concat command " -p\"" ada-prj-default-project-file "\""))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1042
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1043 (if (and append (get-buffer ada-gnatfind-buffer-name))
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1044 (save-excursion
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1045 (set-buffer "*gnatfind*")
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1046 (setq old-contents (buffer-string))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1047
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1048 (let ((compilation-error "reference"))
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1049 (compilation-start command 'compilation-mode (lambda (mode) ada-gnatfind-buffer-name)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1050
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1051 ;; Hide the "Compilation" menu
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1052 (save-excursion
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1053 (set-buffer ada-gnatfind-buffer-name)
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1054 (local-unset-key [menu-bar compilation-menu])
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1055
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1056 (if old-contents
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1057 (progn
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1058 (goto-char 1)
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1059 (set 'buffer-read-only nil)
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1060 (insert old-contents)
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1061 (set 'buffer-read-only t)
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1062 (goto-char (point-max)))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1063 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1064 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1065
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1066 (defalias 'ada-change-prj (symbol-function 'ada-set-default-project-file))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1067
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1068 ;; ----- Identifier Completion --------------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1069 (defun ada-complete-identifier (pos)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1070 "Try to complete the identifier around POS, using compiler cross-reference information."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1071 (interactive "d")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1072 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1073
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1074 ;; Initialize function-local variables and jump to the .ali buffer
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1075 ;; Note that for regexp search is case insensitive too
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1076 (let* ((curbuf (current-buffer))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1077 (identlist (ada-read-identifier pos))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1078 (sofar (concat "^[0-9]+[a-zA-Z][0-9]+[ *]\\("
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1079 (regexp-quote (ada-name-of identlist))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1080 "[a-zA-Z0-9_]*\\)"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1081 (completed nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1082 (symalist nil))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1083
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1084 ;; Open the .ali file
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1085 (set-buffer (ada-get-ali-buffer (buffer-file-name)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1086 (goto-char (point-max))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1087
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1088 ;; build an alist of possible completions
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1089 (while (re-search-backward sofar nil t)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1090 (setq symalist (cons (cons (match-string 1) nil) symalist)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1091
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1092 (setq completed (try-completion "" symalist))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1093
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1094 ;; kills .ali buffer
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1095 (kill-buffer nil)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1096
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1097 ;; deletes the incomplete identifier in the buffer
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1098 (set-buffer curbuf)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1099 (looking-at "[a-zA-Z0-9_]+")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1100 (replace-match "")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1101 ;; inserts the completed symbol
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1102 (insert completed)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1103 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1104
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1105 ;; ----- Cross-referencing ----------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1106
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1107 (defun ada-point-and-xref ()
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1108 "Jump to the declaration of the entity below the cursor."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1109 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1110 (mouse-set-point last-input-event)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1111 (ada-goto-declaration (point)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1112
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1113 (defun ada-point-and-xref-body ()
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1114 "Jump to the body of the entity under the cursor."
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1115 (interactive)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1116 (mouse-set-point last-input-event)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1117 (ada-goto-body (point)))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1118
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1119 (defun ada-goto-body (pos &optional other-frame)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1120 "Display the body of the entity around POS.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1121 OTHER-FRAME non-nil means display in another frame.
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1122 If the entity doesn't have a body, display its declaration.
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1123 As a side effect, the buffer for the declaration is also open."
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1124 (interactive "d")
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1125 (ada-goto-declaration pos other-frame)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1126
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1127 ;; Temporarily force the display in the same buffer, since we
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1128 ;; already changed previously
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1129 (let ((ada-xref-other-buffer nil))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1130 (ada-goto-declaration (point) nil)))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1131
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1132 (defun ada-goto-declaration (pos &optional other-frame)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1133 "Display the declaration of the identifier around POS.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1134 The declaration is shown in another buffer if `ada-xref-other-buffer' is
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1135 non-nil.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1136 If OTHER-FRAME is non-nil, display the cross-reference in another frame."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1137 (interactive "d")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1138 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1139 (push-mark pos)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1140 (ada-xref-push-pos (buffer-file-name) pos)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1141
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1142 ;; First try the standard algorithm by looking into the .ali file, but if
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1143 ;; that file was too old or even did not exist, try to look in the whole
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1144 ;; object path for a possible location.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1145 (let ((identlist (ada-read-identifier pos)))
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1146 (condition-case err
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1147 (ada-find-in-ali identlist other-frame)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1148 ;; File not found: print explicit error message
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1149 (error-file-not-found
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1150 (message (concat (error-message-string err)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1151 (nthcdr 1 err))))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1152
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1153 (error
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1154 (let ((ali-file (ada-get-ali-file-name (ada-file-of identlist))))
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1155
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1156 ;; If the ALI file was up-to-date, then we probably have a predefined
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1157 ;; entity, whose references are not given by GNAT
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1158 (if (and (file-exists-p ali-file)
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1159 (file-newer-than-file-p ali-file (ada-file-of identlist)))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1160 (message "No cross-reference found -- may be a predefined entity.")
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1161
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1162 ;; Else, look in every ALI file, except if the user doesn't want that
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1163 (if ada-xref-search-with-egrep
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1164 (ada-find-in-src-path identlist other-frame)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1165 (message "Cross-referencing information is not up-to-date; please recompile.")
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1166 )))))))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1167
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1168 (defun ada-goto-declaration-other-frame (pos)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1169 "Display the declaration of the identifier around POS.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1170 The declation is shown in another frame if `ada-xref-other-buffer' is non-nil."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1171 (interactive "d")
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1172 (ada-goto-declaration pos t))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1173
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1174 (defun ada-remote (command)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1175 "Return the remote version of COMMAND, or COMMAND if remote_machine is nil."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1176 (let ((machine (ada-xref-get-project-field 'remote_machine)))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1177 (if (or (not machine) (string= machine ""))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1178 command
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1179 (format "%s %s '(%s)'"
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1180 remote-shell-program
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1181 machine
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1182 command))))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1183
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1184 (defun ada-get-absolute-dir-list (dir-list root-dir)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1185 "Return the list of absolute directories found in DIR-LIST.
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1186 If a directory is a relative directory, ROOT-DIR is prepended.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1187 Project and environment variables are substituted."
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1188 (mapcar (lambda (x) (expand-file-name x (ada-treat-cmd-string root-dir))) dir-list))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1189
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1190 (defun ada-set-environment ()
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1191 "Prepare an environment for Ada compilation.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1192 This returns a new value to use for `process-environment',
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1193 but does not actually put it into use.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1194 It modifies the source path and object path with the values found in the
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1195 project file."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1196 (let ((include (getenv "ADA_INCLUDE_PATH"))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1197 (objects (getenv "ADA_OBJECTS_PATH"))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1198 (build-dir (ada-xref-get-project-field 'build_dir)))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1199 (if include
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1200 (set 'include (concat path-separator include)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1201 (if objects
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1202 (set 'objects (concat path-separator objects)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1203 (cons
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1204 (concat "ADA_INCLUDE_PATH="
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1205 (mapconcat (lambda(x) (expand-file-name x build-dir))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1206 (ada-xref-get-project-field 'src_dir)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1207 path-separator)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1208 include)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1209 (cons
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1210 (concat "ADA_OBJECTS_PATH="
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1211 (mapconcat (lambda(x) (expand-file-name x build-dir))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1212 (ada-xref-get-project-field 'obj_dir)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1213 path-separator)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1214 objects)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1215 process-environment))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1216
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1217 (defun ada-compile-application (&optional arg)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1218 "Compile the application, using the command found in the project file.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1219 If ARG is not nil, ask for user confirmation."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1220 (interactive "P")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1221 (ada-require-project-file)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1222 (let ((cmd (ada-xref-get-project-field 'make_cmd))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1223 (process-environment (ada-set-environment))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1224 (compilation-scroll-output t))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1225
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1226 (setq compilation-search-path (ada-xref-get-src-dir-field))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1227
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1228 ;; If no project file was found, ask the user
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1229 (unless cmd
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1230 (setq cmd '("") arg t))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1231
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1232 ;; Make a single command from the list of commands, including the
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1233 ;; commands to run it on a remote machine.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1234 (setq cmd (ada-remote (mapconcat 'identity cmd ada-command-separator)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1235
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1236 (if (or ada-xref-confirm-compile arg)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1237 (setq cmd (read-from-minibuffer "enter command to compile: " cmd)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1238
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1239 ;; Insert newlines so as to separate the name of the commands to run
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1240 ;; and the output of the commands. This doesn't work with cmdproxy.exe,
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1241 ;; which gets confused by newline characters.
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1242 (if (not (string-match ".exe" shell-file-name))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1243 (setq cmd (concat cmd "\n\n")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1244
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1245 (compile (ada-quote-cmd cmd))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1246
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1247 (defun ada-set-main-compile-application ()
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1248 "Set main project variable to current buffer, build main."
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1249 (interactive)
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1250 (ada-require-project-file)
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1251 (let* ((file (buffer-file-name (current-buffer)))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1252 main)
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1253 (if (not file)
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1254 (error "No file for current buffer")
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1255
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1256 (setq main
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1257 (if file
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1258 (file-name-nondirectory
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1259 (file-name-sans-extension file))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1260 ""))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1261 (ada-xref-set-project-field 'main main)
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1262 (ada-compile-application))))
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1263
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1264 (defun ada-compile-current (&optional arg prj-field)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1265 "Recompile the current file.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1266 If ARG is non-nil, ask for user confirmation of the command.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1267 PRJ-FIELD is the name of the field to use in the project file to get the
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
1268 command, and should be either `comp_cmd' (default) or `check_cmd'."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1269 (interactive "P")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1270 (ada-require-project-file)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1271 (let* ((field (if prj-field prj-field 'comp_cmd))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1272 (cmd (ada-xref-get-project-field field))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1273 (process-environment (ada-set-environment))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1274 (compilation-scroll-output t))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1275
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1276 (unless cmd
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1277 (setq cmd '("") arg t))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1278
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1279 ;; Make a single command from the list of commands, including the
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1280 ;; commands to run it on a remote machine.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1281 (setq cmd (ada-remote (mapconcat 'identity cmd ada-command-separator)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1282
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1283 ;; If no project file was found, ask the user
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1284 (if (or ada-xref-confirm-compile arg)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1285 (setq cmd (read-from-minibuffer "enter command to compile: " cmd)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1286
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1287 (compile (ada-quote-cmd cmd))))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1288
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1289 (defun ada-check-current (&optional arg)
74411
f76dd5acc4b2 (ada-check-current): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74378
diff changeset
1290 "Check the current file for syntax errors.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1291 If ARG is non-nil, ask for user confirmation of the command."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1292 (interactive "P")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1293 (ada-compile-current arg 'check_cmd))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1294
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1295 (defun ada-run-application (&optional arg)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1296 "Run the application.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1297 If ARG is non-nil, ask for user confirmation."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1298 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1299 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1300
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1301 (let ((machine (ada-xref-get-project-field 'cross_prefix)))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1302 (if (and machine (not (string= machine "")))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1303 (error "This feature is not supported yet for cross environments")))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1304
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1305 (let ((command (ada-xref-get-project-field 'run_cmd)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1306
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1307 ;; Guess the command if it wasn't specified
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1308 (if (not command)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1309 (set 'command (list (file-name-sans-extension (buffer-name)))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1310
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1311 ;; Modify the command to run remotely
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1312 (setq command (ada-remote (mapconcat 'identity command
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1313 ada-command-separator)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1314
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1315 ;; Ask for the arguments to the command if required
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1316 (if (or ada-xref-confirm-compile arg)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1317 (setq command (read-from-minibuffer "Enter command to execute: "
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1318 command)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1319
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1320 ;; Run the command
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1321 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1322 (set-buffer (get-buffer-create "*run*"))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1323 (set 'buffer-read-only nil)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1324
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1325 (erase-buffer)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1326 (start-process "run" (current-buffer) shell-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1327 "-c" command)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1328 (comint-mode)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1329 ;; Set these two variables to their default values, since otherwise
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1330 ;; the output buffer is scrolled so that only the last output line
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1331 ;; is visible at the top of the buffer.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1332 (set (make-local-variable 'scroll-step) 0)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1333 (set (make-local-variable 'scroll-conservatively) 0)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1334 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1335 (display-buffer "*run*")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1336
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1337 ;; change to buffer *run* for interactive programs
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1338 (other-window 1)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1339 (switch-to-buffer "*run*")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1340 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1341
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1342 (defun ada-gdb-application (&optional arg executable-name)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1343 "Start the debugger on the application.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1344 If ARG is non-nil, ask the user to confirm the command.
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1345 EXECUTABLE-NAME, if non-nil, is debugged instead of the file specified in the
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1346 project file."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1347 (interactive "P")
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1348 (ada-require-project-file)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1349 (let ((buffer (current-buffer))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1350 cmd pre-cmd post-cmd)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1351 (setq cmd (if executable-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1352 (concat ada-prj-default-debugger " " executable-name)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1353 (ada-xref-get-project-field 'debug_cmd))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1354 pre-cmd (ada-xref-get-project-field 'debug_pre_cmd)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1355 post-cmd (ada-xref-get-project-field 'debug_post_cmd))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1356
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1357 ;; If the command was not given in the project file, start a bare gdb
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1358 (if (not cmd)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1359 (set 'cmd (concat ada-prj-default-debugger
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1360 " "
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1361 (or executable-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1362 (file-name-sans-extension (buffer-file-name))))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1363
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1364 ;; For gvd, add an extra switch so that the Emacs window is completly
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1365 ;; swallowed inside the Gvd one
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1366 (if (and ada-tight-gvd-integration
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1367 (string-match "^[^ \t]*gvd" cmd))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1368 ;; Start a new frame, so that when gvd exists we do not kill Emacs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1369 ;; We make sure that gvd swallows the new frame, not the one the
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1370 ;; user has been using until now
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1371 ;; The frame is made invisible initially, so that GtkPlug gets a
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1372 ;; chance to fully manage it. Then it works fine with Enlightenment
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1373 ;; as well
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1374 (let ((frame (make-frame '((visibility . nil)))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1375 (set 'cmd (concat
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1376 cmd " --editor-window="
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1377 (cdr (assoc 'outer-window-id (frame-parameters frame)))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1378 (select-frame frame)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1379
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1380 ;; Add a -fullname switch
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1381 ;; Use the remote machine
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1382 (set 'cmd (ada-remote (concat cmd " -fullname ")))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1383
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1384 ;; Ask for confirmation if required
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1385 (if (or arg ada-xref-confirm-compile)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1386 (set 'cmd (read-from-minibuffer "enter command to debug: " cmd)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1387
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1388 (let ((old-comint-exec (symbol-function 'comint-exec)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1389
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1390 ;; Do not add -fullname, since we can have a 'rsh' command in front.
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1391 ;; FIXME: This is evil but luckily a nop under Emacs-21.3.50 ! -stef
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1392 (fset 'gud-gdb-massage-args (lambda (file args) args))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1393
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1394 (set 'pre-cmd (mapconcat 'identity pre-cmd ada-command-separator))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1395 (if (not (equal pre-cmd ""))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1396 (setq pre-cmd (concat pre-cmd ada-command-separator)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1397
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1398 (set 'post-cmd (mapconcat 'identity post-cmd "\n"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1399 (if post-cmd
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1400 (set 'post-cmd (concat post-cmd "\n")))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1401
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1402
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1403 ;; Temporarily replaces the definition of `comint-exec' so that we
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1404 ;; can execute commands before running gdb.
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1405 ;; FIXME: This is evil and not temporary !!! -stef
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1406 (fset 'comint-exec
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1407 `(lambda (buffer name command startfile switches)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1408 (let (compilation-buffer-name-function)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1409 (save-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1410 (set 'compilation-buffer-name-function
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1411 (lambda(x) (buffer-name buffer)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1412 (compile (ada-quote-cmd
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1413 (concat ,pre-cmd
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1414 command " "
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1415 (mapconcat 'identity switches " "))))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1416 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1417
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1418 ;; Tight integration should force the tty mode
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1419 (if (and (string-match "gvd" (comint-arguments cmd 0 0))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1420 ada-tight-gvd-integration
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1421 (not (string-match "--tty" cmd)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1422 (setq cmd (concat cmd "--tty")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1423
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1424 (if (and (string-match "jdb" (comint-arguments cmd 0 0))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1425 (boundp 'jdb))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1426 (funcall (symbol-function 'jdb) cmd)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1427 (gdb cmd))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1428
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1429 ;; Restore the standard fset command (or for instance C-U M-x shell
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1430 ;; wouldn't work anymore
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1431
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1432 (fset 'comint-exec old-comint-exec)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1433
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1434 ;; Send post-commands to the debugger
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1435 (process-send-string (get-buffer-process (current-buffer)) post-cmd)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1436
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1437 ;; Move to the end of the debugger buffer, so that it is automatically
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1438 ;; scrolled from then on.
58004
ae799359b66c (ada-gdb-application): Use goto-char instead of beginning-of-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 57824
diff changeset
1439 (goto-char (point-max))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1440
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1441 ;; Display both the source window and the debugger window (the former
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1442 ;; above the latter). No need to show the debugger window unless it
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1443 ;; is going to have some relevant information.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1444 (if (or (not (string-match "gvd" (comint-arguments cmd 0 0)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1445 (string-match "--tty" cmd))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1446 (split-window-vertically))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1447 (switch-to-buffer buffer)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1448 )))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1449
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1450 (defun ada-reread-prj-file (&optional filename)
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1451 "Reread either the current project, or FILENAME if non-nil.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1452 If FILENAME is non-nil, set it as current project."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1453 (interactive "P")
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1454 (if (not filename)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1455 (setq filename ada-prj-default-project-file))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1456 (ada-parse-prj-file filename)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
1457 (ada-select-prj-file filename))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1458
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1459 ;; ------ Private routines
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1460
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1461 (defun ada-xref-current (file &optional ali-file-name)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1462 "Update the cross-references for FILE.
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1463 This in fact recompiles FILE to create ALI-FILE-NAME.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1464 This function returns the name of the file that was recompiled to generate
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
1465 the cross-reference information. Note that the ali file can then be deduced
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
1466 by replacing the file extension with `.ali'."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1467 ;; kill old buffer
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1468 (if (and ali-file-name
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1469 (get-file-buffer ali-file-name))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1470 (kill-buffer (get-file-buffer ali-file-name)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1471
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1472 (let* ((name (ada-convert-file-name file))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1473 (body-name (or (ada-get-body-name name) name)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1474
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1475 ;; Always recompile the body when we can. We thus temporarily switch to a
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1476 ;; buffer than contains the body of the unit
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1477 (save-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1478 (let ((body-visible (find-buffer-visiting body-name))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1479 process)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1480 (if body-visible
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1481 (set-buffer body-visible)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1482 (find-file body-name))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1483
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1484 ;; Execute the compilation. Note that we must wait for the end of the
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1485 ;; process, or the ALI file would still not be available.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1486 ;; Unfortunately, the underlying `compile' command that we use is
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1487 ;; asynchronous.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1488 (ada-compile-current)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1489 (setq process (get-buffer-process "*compilation*"))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1490
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1491 (while (and process
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1492 (not (equal (process-status process) 'exit)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1493 (sit-for 1))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1494
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1495 ;; remove the buffer for the body if it wasn't there before
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1496 (unless body-visible
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1497 (kill-buffer (find-buffer-visiting body-name)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1498 ))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1499 body-name))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1500
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1501 (defun ada-find-file-in-dir (file dir-list)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1502 "Search for FILE in DIR-LIST."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1503 (let (found)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1504 (while (and (not found) dir-list)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1505 (set 'found (concat (file-name-as-directory (car dir-list))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1506 (file-name-nondirectory file)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1507
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1508 (unless (file-exists-p found)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1509 (set 'found nil))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1510 (set 'dir-list (cdr dir-list)))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1511 found))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1512
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1513 (defun ada-find-ali-file-in-dir (file)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1514 "Find the ali file FILE, searching obj_dir for the current project.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1515 Adds build_dir in front of the search path to conform to gnatmake's behavior,
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1516 and the standard runtime location at the end."
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1517 (ada-find-file-in-dir file (ada-xref-get-obj-dir-field)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1518
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1519 (defun ada-find-src-file-in-dir (file)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1520 "Find the source file FILE, searching src_dir for the current project.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1521 Adds the standard runtime location at the end of the search path to conform
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1522 to gnatmake's behavior."
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1523 (ada-find-file-in-dir file (ada-xref-get-src-dir-field)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1524
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1525 (defun ada-get-ali-file-name (file)
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1526 "Create the ali file name for the Ada file FILE.
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1527 The file is searched for in every directory shown in the obj_dir lines of
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1528 the project file."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1529
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1530 ;; This function has to handle the special case of non-standard
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1531 ;; file names (i.e. not .adb or .ads)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1532 ;; The trick is the following:
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1533 ;; 1- replace the extension of the current file with .ali,
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1534 ;; and look for this file
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1535 ;; 2- If this file is found:
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1536 ;; grep the "^U" lines, and make sure we are not reading the
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1537 ;; .ali file for a spec file. If we are, go to step 3.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1538 ;; 3- If the file is not found or step 2 failed:
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1539 ;; find the name of the "other file", ie the body, and look
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1540 ;; for its associated .ali file by subtituing the extension
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1541 ;;
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1542 ;; We must also handle the case of separate packages and subprograms:
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1543 ;; 4- If no ali file was found, we try to modify the file name by removing
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1544 ;; everything after the last '-' or '.' character, so as to get the
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1545 ;; ali file for the parent unit. If we found an ali file, we check that
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1546 ;; it indeed contains the definition for the separate entity by checking
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1547 ;; the 'D' lines. This is done repeatedly, in case the direct parent is
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1548 ;; also a separate.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1549
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1550 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1551 (set-buffer (get-file-buffer file))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1552 (let ((short-ali-file-name
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1553 (concat (file-name-sans-extension (file-name-nondirectory file))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1554 ".ali"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1555 ali-file-name
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1556 is-spec)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1557
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1558 ;; If we have a non-standard file name, and this is a spec, we first
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1559 ;; look for the .ali file of the body, since this is the one that
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1560 ;; contains the most complete information. If not found, we will do what
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1561 ;; we can with the .ali file for the spec...
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1562
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1563 (if (not (string= (file-name-extension file) "ads"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1564 (let ((specs ada-spec-suffixes))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1565 (while specs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1566 (if (string-match (concat (regexp-quote (car specs)) "$")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1567 file)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1568 (set 'is-spec t))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1569 (set 'specs (cdr specs)))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1570
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1571 (if is-spec
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1572 (set 'ali-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1573 (ada-find-ali-file-in-dir
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1574 (concat (file-name-sans-extension
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1575 (file-name-nondirectory
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1576 (ada-other-file-name)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1577 ".ali"))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1578
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1579
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1580 (setq ali-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1581 (or ali-file-name
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1582
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1583 ;; Else we take the .ali file associated with the unit
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1584 (ada-find-ali-file-in-dir short-ali-file-name)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1585
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1586
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1587 ;; else we did not find the .ali file Second chance: in case
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1588 ;; the files do not have standard names (such as for instance
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1589 ;; file_s.ada and file_b.ada), try to go to the other file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1590 ;; and look for its ali file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1591 (ada-find-ali-file-in-dir
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1592 (concat (file-name-sans-extension
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1593 (file-name-nondirectory (ada-other-file-name)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1594 ".ali"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1595
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1596
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1597 ;; If we still don't have an ali file, try to get the one
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1598 ;; from the parent unit, in case we have a separate entity.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1599 (let ((parent-name (file-name-sans-extension
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1600 (file-name-nondirectory file))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1601
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1602 (while (and (not ali-file-name)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1603 (string-match "^\\(.*\\)[.-][^.-]*" parent-name))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1604
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1605 (set 'parent-name (match-string 1 parent-name))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1606 (set 'ali-file-name (ada-find-ali-file-in-dir
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1607 (concat parent-name ".ali")))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1608 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1609 ali-file-name)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1610
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1611 ;; If still not found, try to recompile the file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1612 (if (not ali-file-name)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1613 ;; Recompile only if the user asked for this, and search the ali
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1614 ;; filename again. We avoid a possible infinite recursion by
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1615 ;; temporarily disabling the automatic compilation.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1616
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1617 (if ada-xref-create-ali
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1618 (setq ali-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1619 (concat (file-name-sans-extension (ada-xref-current file))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1620 ".ali"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1621
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1622 (error "`.ali' file not found; recompile your source file"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1623
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1624
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1625 ;; same if the .ali file is too old and we must recompile it
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1626 (if (and (file-newer-than-file-p file ali-file-name)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1627 ada-xref-create-ali)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1628 (ada-xref-current file ali-file-name)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1629
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1630 ;; Always return the correct absolute file name
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1631 (expand-file-name ali-file-name))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1632 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1633
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1634 (defun ada-get-ada-file-name (file original-file)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1635 "Create the complete file name (+directory) for FILE.
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
1636 The original file (where the user was) is ORIGINAL-FILE.
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
1637 Search in project file for possible paths."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1638
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1639 (save-excursion
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1640
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1641 ;; If the buffer for original-file, use it to get the values from the
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1642 ;; project file, otherwise load the file and its project file
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1643 (let ((buffer (get-file-buffer original-file)))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1644 (if buffer
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1645 (set-buffer buffer)
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
1646 (find-file original-file)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1647
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1648 ;; we choose the first possible completion and we
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1649 ;; return the absolute file name
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1650 (let ((filename (ada-find-src-file-in-dir file)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1651 (if filename
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1652 (expand-file-name filename)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1653 (signal 'error-file-not-found (file-name-nondirectory file)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1654 )))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1655
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1656 (defun ada-find-file-number-in-ali (file)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1657 "Return the file number for FILE in the associated ali file."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1658 (set-buffer (ada-get-ali-buffer file))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1659 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1660
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1661 (let ((begin (re-search-forward "^D")))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1662 (beginning-of-line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1663 (re-search-forward (concat "^D " (file-name-nondirectory file)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1664 (count-lines begin (point))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1665
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1666 (defun ada-read-identifier (pos)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1667 "Return the identlist around POS and switch to the .ali buffer.
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1668 The returned list represents the entity, and can be manipulated through the
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1669 macros `ada-name-of', `ada-line-of', `ada-column-of', `ada-file-of',..."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1670
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1671 ;; If at end of buffer (e.g the buffer is empty), error
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1672 (if (>= (point) (point-max))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1673 (error "No identifier on point"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1674
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1675 ;; goto first character of the identifier/operator (skip backward < and >
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1676 ;; since they are part of multiple character operators
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1677 (goto-char pos)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1678 (skip-chars-backward "a-zA-Z0-9_<>")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1679
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1680 ;; check if it really is an identifier
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1681 (if (ada-in-comment-p)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1682 (error "Inside comment"))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1683
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1684 (let (identifier identlist)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1685 ;; Just in front of a string => we could have an operator declaration,
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1686 ;; as in "+", "-", ..
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1687 (if (= (char-after) ?\")
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1688 (forward-char 1))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1689
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1690 ;; if looking at an operator
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1691 ;; This is only true if:
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1692 ;; - the symbol is +, -, ...
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1693 ;; - the symbol is made of letters, and not followed by _ or a letter
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1694 (if (and (looking-at ada-operator-re)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1695 (or (not (= (char-syntax (char-after)) ?w))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1696 (not (or (= (char-syntax (char-after (match-end 0))) ?w)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1697 (= (char-after (match-end 0)) ?_)))))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1698 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1699 (if (and (= (char-before) ?\")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1700 (= (char-after (+ (length (match-string 0)) (point))) ?\"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1701 (forward-char -1))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1702 (set 'identifier (regexp-quote (concat "\"" (match-string 0) "\""))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1703
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1704 (if (ada-in-string-p)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1705 (error "Inside string or character constant"))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1706 (if (looking-at (concat ada-keywords "[^a-zA-Z_]"))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1707 (error "No cross-reference available for reserved keyword"))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1708 (if (looking-at "[a-zA-Z0-9_]+")
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1709 (set 'identifier (match-string 0))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1710 (error "No identifier around")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1711
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1712 ;; Build the identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1713 (set 'identlist (ada-make-identlist))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1714 (ada-set-name identlist (downcase identifier))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1715 (ada-set-line identlist
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1716 (number-to-string (count-lines 1 (point))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1717 (ada-set-column identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1718 (number-to-string (1+ (current-column))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1719 (ada-set-file identlist (buffer-file-name))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1720 identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1721 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1722
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1723 (defun ada-get-all-references (identlist)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1724 "Complete IDENTLIST with definition file and places where it is referenced.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1725 Information is extracted from the ali file."
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1726
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1727 (let ((ali-buffer (ada-get-ali-buffer (ada-file-of identlist)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1728 declaration-found)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1729 (set-buffer ali-buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1730 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1731 (ada-set-on-declaration identlist nil)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1732
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1733 ;; First attempt: we might already be on the declaration of the identifier
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1734 ;; We want to look for the declaration only in a definite interval (after
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1735 ;; the "^X ..." line for the current file, and before the next "^X" line
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1736
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1737 (if (re-search-forward
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1738 (concat "^X [0-9]+ " (file-name-nondirectory (ada-file-of identlist)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1739 nil t)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1740 (let ((bound (save-excursion (re-search-forward "^X " nil t))))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1741 (set 'declaration-found
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1742 (re-search-forward
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1743 (concat "^" (ada-line-of identlist)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1744 "." (ada-column-of identlist)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1745 "[ *]" (ada-name-of identlist)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1746 "[{\[\(<= ]?\\(.*\\)$") bound t))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1747 (if declaration-found
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1748 (ada-set-on-declaration identlist t))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1749 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1750
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1751 ;; If declaration is still nil, then we were not on a declaration, and
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1752 ;; have to fall back on other algorithms
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1753
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1754 (unless declaration-found
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1755
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1756 ;; Since we alread know the number of the file, search for a direct
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1757 ;; reference to it
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1758 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1759 (set 'declaration-found t)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1760 (ada-set-ali-index
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1761 identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1762 (number-to-string (ada-find-file-number-in-ali
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1763 (ada-file-of identlist))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1764 (unless (re-search-forward (concat (ada-ali-index-of identlist)
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1765 "|\\([0-9]+[^0-9][0-9]+\\(\n\\.\\)? \\)*"
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1766 (ada-line-of identlist)
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1767 "[^etpzkd<>=^]"
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1768 (ada-column-of identlist) "\\>")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1769 nil t)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1770
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1771 ;; if we did not find it, it may be because the first reference
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1772 ;; is not required to have a 'unit_number|' item included.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1773 ;; Or maybe we are already on the declaration...
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1774 (unless (re-search-forward
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1775 (concat
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1776 "^[0-9]+.[0-9]+[ *]"
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1777 (ada-name-of identlist)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1778 "[ <{=\(\[]\\(.\\|\n\\.\\)*\\<"
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1779 (ada-line-of identlist)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1780 "[^0-9]"
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1781 (ada-column-of identlist) "\\>")
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1782 nil t)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1783
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1784 ;; If still not found, then either the declaration is unknown
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1785 ;; or the source file has been modified since the ali file was
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1786 ;; created
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1787 (set 'declaration-found nil)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1788 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1789 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1790
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1791 ;; Last check to be completly sure we have found the correct line (the
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1792 ;; ali might not be up to date for instance)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1793 (if declaration-found
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1794 (progn
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1795 (beginning-of-line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1796 ;; while we have a continuation line, go up one line
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1797 (while (looking-at "^\\.")
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78543
diff changeset
1798 (forward-line -1)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1799 (beginning-of-line))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1800 (unless (looking-at (concat "[0-9]+.[0-9]+[ *]"
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1801 (ada-name-of identlist) "[ <{=\(\[]"))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1802 (set 'declaration-found nil))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1803
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1804 ;; Still no success ! The ali file must be too old, and we need to
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1805 ;; use a basic algorithm based on guesses. Note that this only happens
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1806 ;; if the user does not want us to automatically recompile files
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1807 ;; automatically
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1808 (unless declaration-found
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1809 (if (ada-xref-find-in-modified-ali identlist)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1810 (set 'declaration-found t)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1811 ;; No more idea to find the declaration. Give up
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1812 (progn
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1813 (kill-buffer ali-buffer)
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
1814
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
1815 (error "No declaration of %s found" (ada-name-of identlist))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1816 )))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1817 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1818
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1819
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1820 ;; Now that we have found a suitable line in the .ali file, get the
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1821 ;; information available
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1822 (beginning-of-line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1823 (if declaration-found
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1824 (let ((current-line (buffer-substring
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1825 (point) (save-excursion (end-of-line) (point)))))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1826 (save-excursion
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78543
diff changeset
1827 (forward-line 1)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1828 (beginning-of-line)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1829 (while (looking-at "^\\.\\(.*\\)")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1830 (set 'current-line (concat current-line (match-string 1)))
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78543
diff changeset
1831 (forward-line 1))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1832 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1833
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1834 (if (re-search-backward "^X [0-9]+ \\([a-zA-Z0-9_.-]+\\)" nil t)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1835
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1836 ;; If we can find the file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1837 (condition-case err
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1838 (ada-set-declare-file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1839 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1840 (ada-get-ada-file-name (match-string 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1841 (ada-file-of identlist)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1842
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1843 ;; Else clean up the ali file
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1844 (error-file-not-found
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1845 (signal (car err) (cdr err)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1846 (error
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1847 (kill-buffer ali-buffer)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1848 (error (error-message-string err)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1849 ))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1850
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1851 (ada-set-references identlist current-line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1852 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1853 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1854
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1855 (defun ada-xref-find-in-modified-ali (identlist)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1856 "Find the matching position for IDENTLIST in the current ali buffer.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1857 This function is only called when the file was not up-to-date, so we need
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1858 to make some guesses.
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1859 This function is disabled for operators, and only works for identifiers."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1860
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1861 (unless (= (string-to-char (ada-name-of identlist)) ?\")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1862 (progn
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1863 (let ((declist '()) ;;; ( (line_in_ali_file line_in_ada) ( ... ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1864 (my-regexp (concat "[ *]"
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1865 (regexp-quote (ada-name-of identlist)) " "))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1866 (line-ada "--")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1867 (col-ada "--")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1868 (line-ali 0)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1869 (len 0)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1870 (choice 0)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1871 (ali-buffer (current-buffer)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1872
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1873 (goto-char (point-max))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1874 (while (re-search-backward my-regexp nil t)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1875 (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1876 (set 'line-ali (count-lines 1 (point)))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1877 (beginning-of-line)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1878 ;; have a look at the line and column numbers
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1879 (if (looking-at "^\\([0-9]+\\).\\([0-9]+\\)[ *]")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1880 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1881 (setq line-ada (match-string 1))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1882 (setq col-ada (match-string 2)))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1883 (setq line-ada "--")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1884 (setq col-ada "--")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1885 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1886 ;; construct a list with the file names and the positions within
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1887 (if (re-search-backward "^X [0-9]+ \\([a-zA-Z0-9._-]+\\)" nil t)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1888 (add-to-list
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1889 'declist (list line-ali (match-string 1) line-ada col-ada))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1890 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1891 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1892 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1893
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1894 ;; how many possible declarations have we found ?
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1895 (setq len (length declist))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1896 (cond
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1897 ;; none => error
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1898 ((= len 0)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1899 (kill-buffer (current-buffer))
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
1900 (error "No declaration of %s recorded in .ali file"
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
1901 (ada-name-of identlist)))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1902 ;; one => should be the right one
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1903 ((= len 1)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1904 (goto-line (caar declist)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1905
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1906 ;; more than one => display choice list
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1907 (t
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1908 (save-window-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1909 (with-output-to-temp-buffer "*choice list*"
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1910
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1911 (princ "Identifier is overloaded and Xref information is not up to date.\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1912 (princ "Possible declarations are:\n\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1913 (princ " no. in file at line col\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1914 (princ " --- --------------------- ---- ----\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1915 (let ((counter 0))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1916 (while (< counter len)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1917 (princ (format " %2d) %-21s %4s %4s\n"
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1918 (1+ counter)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1919 (ada-get-ada-file-name
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1920 (nth 1 (nth counter declist))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1921 (ada-file-of identlist))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1922 (nth 2 (nth counter declist))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1923 (nth 3 (nth counter declist))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1924 ))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1925 (setq counter (1+ counter))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1926 ) ; end of while
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1927 ) ; end of let
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1928 ) ; end of with-output-to ...
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1929 (setq choice nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1930 (while (or
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1931 (not choice)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1932 (not (integerp choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1933 (< choice 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1934 (> choice len))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1935 (setq choice
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 58004
diff changeset
1936 (string-to-number
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1937 (read-from-minibuffer "Enter No. of your choice: "))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1938 )
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1939 (set-buffer ali-buffer)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1940 (goto-line (car (nth (1- choice) declist)))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1941 ))))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1942
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1943
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1944 (defun ada-find-in-ali (identlist &optional other-frame)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1945 "Look in the .ali file for the definition of the identifier in IDENTLIST.
73651
ed8762ada96d (ada-find-in-ali): Use "non-nil" in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 73563
diff changeset
1946 If OTHER-FRAME is non-nil, and `ada-xref-other-buffer' is non-nil,
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1947 opens a new window to show the declaration."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1948
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1949 (ada-get-all-references identlist)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1950 (let ((ali-line (ada-references-of identlist))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1951 (locations nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1952 (start 0)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1953 file line col)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1954
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1955 ;; Note: in some cases, an entity can have multiple references to the
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1956 ;; bodies (this is for instance the case for a separate subprogram, that
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1957 ;; has a reference both to the stub and to the real body).
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1958 ;; In that case, we simply go to each one in turn.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1959
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1960 ;; Get all the possible locations
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1961 (string-match "^\\([0-9]+\\)[a-zA-Z+*]\\([0-9]+\\)[ *]" ali-line)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1962 (set 'locations (list (list (match-string 1 ali-line) ;; line
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1963 (match-string 2 ali-line) ;; column
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1964 (ada-declare-file-of identlist))))
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1965 (while (string-match "\\([0-9]+\\)[bc]\\(<[^>]+>\\)?\\([0-9]+\\)"
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1966 ali-line start)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1967 (setq line (match-string 1 ali-line)
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1968 col (match-string 3 ali-line)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1969 start (match-end 3))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1970
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1971 ;; it there was a file number in the same line
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1972 ;; Make sure we correctly handle the case where the first file reference
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1973 ;; on the line is the type reference.
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1974 ;; 1U2 T(2|2r3) 34r23
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1975 (if (string-match (concat "[^{(<0-9]\\([0-9]+\\)|\\([^|bc]+\\)?"
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1976 (match-string 0 ali-line))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1977 ali-line)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1978 (let ((file-number (match-string 1 ali-line)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1979 (goto-char (point-min))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1980 (re-search-forward "^D \\([a-zA-Z0-9_.-]+\\)" nil t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1981 (string-to-number file-number))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1982 (set 'file (match-string 1))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1983 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1984 ;; Else get the nearest file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1985 (set 'file (ada-declare-file-of identlist)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1986
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1987 (set 'locations (append locations (list (list line col file)))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1988
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1989 ;; Add the specs at the end again, so that from the last body we go to
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1990 ;; the specs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1991 (set 'locations (append locations (list (car locations))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1992
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1993 ;; Find the new location we want to go to.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1994 ;; If we are on none of the locations listed, we simply go to the specs.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1995
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1996 (setq line (caar locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1997 col (nth 1 (car locations))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1998 file (nth 2 (car locations)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1999
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2000 (while locations
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2001 (if (and (string= (caar locations) (ada-line-of identlist))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2002 (string= (nth 1 (car locations)) (ada-column-of identlist))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2003 (string= (file-name-nondirectory (nth 2 (car locations)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2004 (file-name-nondirectory (ada-file-of identlist))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2005 (setq locations (cadr locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2006 line (car locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2007 col (nth 1 locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2008 file (nth 2 locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2009 locations nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2010 (set 'locations (cdr locations))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2011
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2012 ;; Find the file in the source path
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2013 (set 'file (ada-get-ada-file-name file (ada-file-of identlist)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2014
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2015 ;; Kill the .ali buffer
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2016 (kill-buffer (current-buffer))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2017
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2018 ;; Now go to the buffer
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2019 (ada-xref-change-buffer file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2020 (string-to-number line)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2021 (1- (string-to-number col))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2022 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2023 other-frame)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2024 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2025
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2026 (defun ada-find-in-src-path (identlist &optional other-frame)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2027 "More general function for cross-references.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2028 This function should be used when the standard algorithm that parses the
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2029 .ali file has failed, either because that file was too old or even did not
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2030 exist.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2031 This function attempts to find the possible declarations for the identifier
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2032 anywhere in the object path.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2033 This command requires the external `egrep' program to be available.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2034
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
2035 This works well when one is using an external library and wants to find
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
2036 the declaration and documentation of the subprograms one is using."
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2037 ;; FIXME: what does this function do?
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2038 (let (list
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2039 (dirs (ada-xref-get-obj-dir-field))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2040 (regexp (concat "[ *]" (ada-name-of identlist)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2041 line column
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2042 choice
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2043 file)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2044
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2045 (save-excursion
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2046
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
2047 ;; Do the grep in all the directories. We do multiple shell
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2048 ;; commands instead of one in case there is no .ali file in one
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2049 ;; of the directory and the shell stops because of that.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2050
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2051 (set-buffer (get-buffer-create "*grep*"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2052 (while dirs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2053 (insert (shell-command-to-string
73378
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
2054 (concat
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
2055 "grep -E -i -h "
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
2056 (shell-quote-argument (concat "^X|" regexp "( |$)"))
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
2057 " "
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
2058 (shell-quote-argument (file-name-as-directory (car dirs)))
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
2059 "*.ali")))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2060 (set 'dirs (cdr dirs)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2061
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2062 ;; Now parse the output
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2063 (set 'case-fold-search t)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2064 (goto-char (point-min))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2065 (while (re-search-forward regexp nil t)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2066 (save-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2067 (beginning-of-line)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2068 (if (not (= (char-after) ?X))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2069 (progn
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2070 (looking-at "\\([0-9]+\\).\\([0-9]+\\)")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2071 (setq line (match-string 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2072 column (match-string 2))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2073 (re-search-backward "^X [0-9]+ \\(.*\\)$")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2074 (set 'file (list (match-string 1) line column))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2075
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2076 ;; There could be duplicate choices, because of the structure
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2077 ;; of the .ali files
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2078 (unless (member file list)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2079 (set 'list (append list (list file))))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2080
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2081 ;; Current buffer is still "*grep*"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2082 (kill-buffer "*grep*")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2083 )
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2084
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2085 ;; Now display the list of possible matches
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2086 (cond
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2087
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2088 ;; No choice found => Error
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2089 ((null list)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2090 (error "No cross-reference found, please recompile your file"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2091
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2092 ;; Only one choice => Do the cross-reference
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2093 ((= (length list) 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2094 (set 'file (ada-find-src-file-in-dir (caar list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2095 (if file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2096 (ada-xref-change-buffer file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2097 (string-to-number (nth 1 (car list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2098 (string-to-number (nth 2 (car list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2099 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2100 other-frame)
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
2101 (error "%s not found in src_dir" (caar list)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2102 (message "This is only a (good) guess at the cross-reference.")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2103 )
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2104
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2105 ;; Else, ask the user
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2106 (t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2107 (save-window-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2108 (with-output-to-temp-buffer "*choice list*"
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2109
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2110 (princ "Identifier is overloaded and Xref information is not up to date.\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2111 (princ "Possible declarations are:\n\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2112 (princ " no. in file at line col\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2113 (princ " --- --------------------- ---- ----\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2114 (let ((counter 0))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2115 (while (< counter (length list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2116 (princ (format " %2d) %-21s %4s %4s\n"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2117 (1+ counter)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2118 (nth 0 (nth counter list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2119 (nth 1 (nth counter list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2120 (nth 2 (nth counter list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2121 ))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2122 (setq counter (1+ counter))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2123 )))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2124 (setq choice nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2125 (while (or (not choice)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2126 (not (integerp choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2127 (< choice 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2128 (> choice (length list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2129 (setq choice
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 58004
diff changeset
2130 (string-to-number
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2131 (read-from-minibuffer "Enter No. of your choice: "))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2132 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2133 (set 'choice (1- choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2134 (kill-buffer "*choice list*")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2135
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2136 (set 'file (ada-find-src-file-in-dir (car (nth choice list))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2137 (if file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2138 (ada-xref-change-buffer file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2139 (string-to-number (nth 1 (nth choice list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2140 (string-to-number (nth 2 (nth choice list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2141 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2142 other-frame)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2143 (signal 'error-file-not-found (car (nth choice list))))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2144 (message "This is only a (good) guess at the cross-reference.")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2145 ))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2146
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2147 (defun ada-xref-change-buffer
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2148 (file line column identlist &optional other-frame)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2149 "Select and display FILE, at LINE and COLUMN.
97078
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
2150 If we do not end on the same identifier as IDENTLIST, find the
2f3e251c6e3c Typo fixes for Ada mode.
Juanma Barranquero <lekktu@gmail.com>
parents: 97058
diff changeset
2151 closest match. Kills the .ali buffer at the end.
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2152 If OTHER-FRAME is non-nil, creates a new frame to show the file."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2153
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2154 (let (declaration-buffer)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2155
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2156 ;; Select and display the destination buffer
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2157 (if ada-xref-other-buffer
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2158 (if other-frame
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2159 (find-file-other-frame file)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2160 (set 'declaration-buffer (find-file-noselect file))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2161 (set-buffer declaration-buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2162 (switch-to-buffer-other-window declaration-buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2163 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2164 (find-file file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2165 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2166
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2167 ;; move the cursor to the correct position
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2168 (push-mark)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2169 (goto-line line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2170 (move-to-column column)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2171
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2172 ;; If we are not on the identifier, the ali file was not up-to-date.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2173 ;; Try to find the nearest position where the identifier is found,
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2174 ;; this is probably the right one.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2175 (unless (looking-at (ada-name-of identlist))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2176 (ada-xref-search-nearest (ada-name-of identlist)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2177 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2178
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2179
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2180 (defun ada-xref-search-nearest (name)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2181 "Search for NAME nearest to the position recorded in the Xref file.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2182 Return the position of the declaration in the buffer, or nil if not found."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2183 (let ((orgpos (point))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2184 (newpos nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2185 (diff nil))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2186
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2187 (goto-char (point-max))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2188
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2189 ;; loop - look for all declarations of name in this file
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2190 (while (search-backward name nil t)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2191
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2192 ;; check if it really is a complete Ada identifier
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2193 (if (and
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2194 (not (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2195 (goto-char (match-end 0))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2196 (looking-at "_")))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2197 (not (ada-in-string-or-comment-p))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2198 (or
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2199 ;; variable declaration ?
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2200 (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2201 (skip-chars-forward "a-zA-Z_0-9" )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2202 (ada-goto-next-non-ws)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2203 (looking-at ":[^=]"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2204 ;; procedure, function, task or package declaration ?
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2205 (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2206 (ada-goto-previous-word)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2207 (looking-at "\\<[pP][rR][oO][cC][eE][dD][uU][rR][eE]\\>\\|\\<[fF][uU][nN][cC][tT][iI][oO][nN]\\>\\|\\<[tT][yY][pP][eE]\\>\\|\\<[tT][aA][sS][kK]\\>\\|\\<[pP][aA][cC][kK][aA][gG][eE]\\>\\|\\<[bB][oO][dD][yY]\\>"))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2208
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2209 ;; check if it is nearer than the ones before if any
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2210 (if (or (not diff)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2211 (< (abs (- (point) orgpos)) diff))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2212 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2213 (setq newpos (point)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2214 diff (abs (- newpos orgpos))))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2215 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2216
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2217 (if newpos
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2218 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2219 (message "ATTENTION: this declaration is only a (good) guess ...")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2220 (goto-char newpos))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2221 nil)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2222
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2223
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2224 ;; Find the parent library file of the current file
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2225 (defun ada-goto-parent ()
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2226 "Go to the parent library file."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2227 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2228 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2229
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2230 (let ((buffer (ada-get-ali-buffer (buffer-file-name)))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2231 (unit-name nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2232 (body-name nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2233 (ali-name nil))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2234 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2235 (set-buffer buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2236 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2237 (re-search-forward "^U \\([^ \t%]+\\)%[bs][ \t]+\\([^ \t]+\\)")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2238 (setq unit-name (match-string 1))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2239 (if (not (string-match "\\(.*\\)\\.[^.]+" unit-name))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2240 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2241 (kill-buffer buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2242 (error "No parent unit !"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2243 (setq unit-name (match-string 1 unit-name))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2244 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2245
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2246 ;; look for the file name for the parent unit specification
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2247 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2248 (re-search-forward (concat "^W " unit-name
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2249 "%s[ \t]+\\([^ \t]+\\)[ \t]+"
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2250 "\\([^ \t\n]+\\)"))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2251 (setq body-name (match-string 1))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2252 (setq ali-name (match-string 2))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2253 (kill-buffer buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2254 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2255
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2256 (setq ali-name (ada-find-ali-file-in-dir ali-name))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2257
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2258 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2259 ;; Tries to open the new ali file to find the spec file
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2260 (if ali-name
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2261 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2262 (find-file ali-name)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2263 (goto-char (point-min))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2264 (re-search-forward (concat "^U " unit-name "%s[ \t]+"
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2265 "\\([^ \t]+\\)"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2266 (setq body-name (match-string 1))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2267 (kill-buffer (current-buffer))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2268 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2269 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2270 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2271
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2272 (find-file body-name)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2273 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2274
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2275 (defun ada-make-filename-from-adaname (adaname)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2276 "Determine the filename in which ADANAME is found.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2277 This is a GNAT specific function that uses gnatkrunch."
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2278 (let ((krunch-buf (generate-new-buffer "*gkrunch*"))
97110
59b62ec53121 * lisp/ada-prj.el (ada-prj-initialize-values): Fix use of deleted
Juanma Barranquero <lekktu@gmail.com>
parents: 97078
diff changeset
2279 (cross-prefix (plist-get (cdr (ada-xref-current-project)) 'cross_prefix)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2280 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2281 (set-buffer krunch-buf)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2282 ;; send adaname to external process `gnatkr'.
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2283 ;; Add a dummy extension, since gnatkr versions have two different
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2284 ;; behaviors depending on the version:
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2285 ;; Up to 3.15: "AA.BB.CC" => aa-bb-cc
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2286 ;; After: "AA.BB.CC" => aa-bb.cc
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2287 (call-process (concat cross-prefix "gnatkr") nil krunch-buf nil
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2288 (concat adaname ".adb") ada-krunch-args)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2289 ;; fetch output of that process
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2290 (setq adaname (buffer-substring
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2291 (point-min)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2292 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2293 (goto-char (point-min))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2294 (end-of-line)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2295 (point))))
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2296 ;; Remove the extra extension we added above
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2297 (setq adaname (substring adaname 0 -4))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2298
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2299 (kill-buffer krunch-buf)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2300 adaname
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2301 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2302
57824
83de34d9f04f (ada-make-body-gnatstub): Don't use interactive-p.
Richard M. Stallman <rms@gnu.org>
parents: 56766
diff changeset
2303 (defun ada-make-body-gnatstub (&optional interactive)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2304 "Create an Ada package body in the current buffer.
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2305 This function uses the `gnat stub' program to create the body.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2306 This function typically is to be hooked into `ff-file-created-hook'.
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2307 If INTERACTIVE is nil, assume this is called from `ff-file-created-hook'."
57824
83de34d9f04f (ada-make-body-gnatstub): Don't use interactive-p.
Richard M. Stallman <rms@gnu.org>
parents: 56766
diff changeset
2308 (interactive "p")
74003
a62f860a2d9e (ada-parse-prj-file): Don't delete project buffer; user may want to edit it.
Juanma Barranquero <lekktu@gmail.com>
parents: 73934
diff changeset
2309 (ada-require-project-file)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2310
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2311 ;; If not interactive, assume we are being called from
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2312 ;; ff-file-created-hook. Then the current buffer is for the body
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2313 ;; file, but we will create a new one after gnat stub runs
57824
83de34d9f04f (ada-make-body-gnatstub): Don't use interactive-p.
Richard M. Stallman <rms@gnu.org>
parents: 56766
diff changeset
2314 (unless interactive
74411
f76dd5acc4b2 (ada-check-current): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74378
diff changeset
2315 (set-buffer-modified-p nil)
f76dd5acc4b2 (ada-check-current): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74378
diff changeset
2316 (kill-buffer (current-buffer)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2317
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2318 (save-some-buffers nil nil)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2319
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2320 ;; Make sure the current buffer is the spec, so gnat stub gets the
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2321 ;; right package parameter (this might not be the case if for
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2322 ;; instance the user was asked for a project file)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2323
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2324 (unless (buffer-file-name (car (buffer-list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2325 (set-buffer (cadr (buffer-list))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2326
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2327 ;; Call the external process
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2328 (let* ((project-plist (cdr (ada-xref-current-project)))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2329 (gnatstub-opts (ada-treat-cmd-string ada-gnatstub-opts))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2330 (gpr-file (plist-get project-plist 'gpr_file))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2331 (filename (buffer-file-name (car (buffer-list))))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2332 (output (concat (file-name-sans-extension filename) ".adb"))
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2333 (cross-prefix (plist-get project-plist 'cross_prefix))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2334 (gnatstub-cmd (concat cross-prefix "gnat stub"
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2335 (if (not (string= gpr-file ""))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2336 (concat " -P\"" gpr-file "\""))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2337 " " gnatstub-opts " " filename))
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2338 (buffer (get-buffer-create "*gnat stub*")))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2339
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2340 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2341 (set-buffer buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2342 (compilation-minor-mode 1)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2343 (erase-buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2344 (insert gnatstub-cmd)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2345 (newline)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2346 )
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2347
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2348 (call-process shell-file-name nil buffer nil "-c" gnatstub-cmd)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2349
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2350 ;; clean up the output
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2351
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2352 (if (file-exists-p output)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2353 (progn
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2354 (find-file output)
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2355 (kill-buffer buffer))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2356
97058
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2357 ;; file not created; display the error message
b6ac850e9d2b Fix bug #272, and update Ada mode to version 4.0.
Juanma Barranquero <lekktu@gmail.com>
parents: 94673
diff changeset
2358 (display-buffer buffer))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2359
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2360 (defun ada-xref-initialize ()
38441
ceb40bd97a77 (ada-xref-initialize): Fix call to add-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
2361 "Function called by `ada-mode-hook' to initialize the ada-xref.el package.
ceb40bd97a77 (ada-xref-initialize): Fix call to add-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
2362 For instance, it creates the gnat-specific menus, sets some hooks for
74378
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
2363 `find-file'."
74074
55ec33a643b1 (ada-make-body-gnatstub): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 74003
diff changeset
2364 (remove-hook 'ff-file-created-hook 'ada-make-body) ; from global hook
55ec33a643b1 (ada-make-body-gnatstub): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 74003
diff changeset
2365 (remove-hook 'ff-file-created-hook 'ada-make-body t) ; from local hook
55ec33a643b1 (ada-make-body-gnatstub): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 74003
diff changeset
2366 (add-hook 'ff-file-created-hook 'ada-make-body-gnatstub nil t)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2367
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2368 ;; Completion for file names in the mini buffer should ignore .ali files
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2369 (add-to-list 'completion-ignored-extensions ".ali")
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
2370
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
2371 (ada-xref-update-project-menu)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2372 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2373
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2374 ;; ----- Add to ada-mode-hook ---------------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2375
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2376 ;; This must be done before initializing the Ada menu.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2377 (add-hook 'ada-mode-hook 'ada-xref-initialize)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2378
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2379 ;; Define a new error type
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2380 (put 'error-file-not-found
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2381 'error-conditions
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2382 '(error ada-mode-errors error-file-not-found))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2383 (put 'error-file-not-found
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2384 'error-message
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2385 "File not found in src-dir (check project file): ")
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2386
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2387 (provide 'ada-xref)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2388
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87169
diff changeset
2389 ;; arch-tag: 415a39fe-577b-4676-b3b1-6ff6db7ca24e
32301
0f1f7e931493 Fix header line, copyright notice.
Dave Love <fx@gnu.org>
parents: 30408
diff changeset
2390 ;;; ada-xref.el ends here