annotate lisp/progmodes/ada-xref.el @ 96215:ad9760e68890

(Todo): Update.
author Dan Nicolaescu <dann@ics.uci.edu>
date Tue, 24 Jun 2008 03:24:38 +0000
parents 52b7a8c22af5
children b6ac850e9d2b
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
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
63 "*Non-nil means 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
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
71 (defcustom ada-gnatls-args '("-v")
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
72 "*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
73 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
74
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
75 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
76 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
77 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
78 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
79 :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
80
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
81 (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
82 "Default compilation options."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
83 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
84
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
85 (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
86 "Default binder options."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
87 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
88
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
89 (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
90 "Default linker options."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
91 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
92
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
93 (defcustom ada-prj-default-gnatmake-opt "-g"
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
94 "Default options for `gnatmake'."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
95 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
96
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
97 (defcustom ada-prj-gnatfind-switches "-rf"
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
98 "Default switches to use for `gnatfind'.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
99 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
100 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
101 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
102 \"Show all references\"."
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
103 :type 'string :group 'ada)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
104
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
105 (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
106 (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
107 " -cargs ${comp_opt}")
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
108 "*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
109 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
110 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
111 :type 'string :group 'ada)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
112
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
113 (defcustom ada-prj-default-comp-cmd
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
114 (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
115 " ${comp_opt}")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
116 "*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
117 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
118 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
119 :type 'string :group 'ada)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
120
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
121 (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
122 "*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
123 :type 'string :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
124
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
125 (defcustom ada-prj-default-make-cmd
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
126 (concat "${cross_prefix}gnatmake -o ${main} ${main_unit} ${gnatmake_opt} "
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
127 "-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
128 "*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
129 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
130 :type 'string :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
131
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
132 (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
133 "*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
134 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
135 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
136 :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
137
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
138 (defcustom ada-gnatstub-opts "-q -I${src_dir}"
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
139 "*List of the 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
140 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
141 :type 'string :group 'ada)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
143 (defcustom ada-always-ask-project nil
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
144 "*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
145 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
146 :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
147
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
148 (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
149 "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
150
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
151 (defcustom ada-tight-gvd-integration nil
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
152 "*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
153 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
154 :type 'boolean :group 'ada)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
155
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
156 (defcustom ada-xref-search-with-egrep t
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
157 "*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
158 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
159 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
160 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
161 :type 'boolean :group 'ada)
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
162
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
163 (defvar ada-load-project-hook nil
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
164 "Hook that is run when loading a project file.
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
165 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
166 the project file to load.
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
167 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
168
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
169 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
170 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
171 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
172 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
173 file.")
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
174
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
175
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
176 ;; ------- 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
177 (defvar ada-last-prj-file ""
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
178 "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
179
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
180 (defconst ada-prj-file-extension ".adp"
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
181 "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
182
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
183 (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
184 "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
185 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
186
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
187 (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
188 "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
189 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
190
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191 (defvar ada-xref-pos-ring '()
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
192 "List of positions selected by the cross-references functions.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
193 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
194
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
195 (defvar ada-cd-command
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
196 (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
197 "cd /d"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
198 "cd")
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
199 "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
200 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
201 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
202
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
203 (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
204 "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
205 `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
206 \"&&\" for now.")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
207
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
208 (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
209 "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
210
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
211 (defvar ada-operator-re
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
212 "\\+\\|-\\|/\\|\\*\\*\\|\\*\\|=\\|&\\|abs\\|mod\\|rem\\|and\\|not\\|or\\|xor\\|<=\\|<\\|>=\\|>"
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
213 "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
214
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
215 (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
216 "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
217 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
218 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
219 \(See 'apropos plist' for operations on property lists).
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
220 See `ada-xref-set-default-prj-values' for the list of valid properties.
77f5754d4ba2 (is-windows, ada-find-in-src-path): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 74074
diff changeset
221 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
222 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
223 `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
224 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
225
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
226
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
227 ;; ----- Identlist manipulation -------------------------------------------
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
228 ;; 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
229 ;; 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
230
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
231 (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
232 (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
233 (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
234 (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
235 (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
236 (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
237 (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
238 (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
239 (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
240
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
241 (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
242 (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
243 (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
244 (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
245 (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
246 (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
247 (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
248 (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
249
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
250 (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
251 "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
252 (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
253
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
254
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
255 ;; -----------------------------------------------------------------------
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
256
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
257 (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
258 "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
259 (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
260
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
261 (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
262 "Find the full path to the executable file EXEC-NAME.
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
263 On Windows systems, this will properly handle .exe extension as well"
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
264 (or (ada-find-file-in-dir exec-name exec-path)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
265 (ada-find-file-in-dir (concat exec-name ".exe") exec-path)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
266 exec-name))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
267
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
268 (defun ada-initialize-runtime-library (cross-prefix)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
269 "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
270 CROSS-PREFIX is the prefix to use for the `gnatls' command."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
271 (save-excursion
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
272 (setq ada-xref-runtime-library-specs-path '()
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
273 ada-xref-runtime-library-ali-path '())
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
274 (set-buffer (get-buffer-create "*gnatls*"))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
275 (widen)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
276 (erase-buffer)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
277 ;; Catch any error in the following form (i.e gnatls was not found)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
278 (condition-case nil
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
279 ;; Even if we get an error, delete the *gnatls* buffer
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
280 (unwind-protect
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
281 (progn
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
282 (let ((gnatls
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
283 (ada-find-executable (concat cross-prefix "gnatls"))))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
284 (apply 'call-process gnatls (append '(nil t nil) ada-gnatls-args)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
285 (goto-char (point-min))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
286
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
287 ;; Source path
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
288
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
289 (search-forward "Source Search Path:")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
290 (forward-line 1)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
291 (while (not (looking-at "^$"))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
292 (back-to-indentation)
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
293 (if (looking-at "<Current_Directory>")
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
294 (add-to-list 'ada-xref-runtime-library-specs-path ".")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
295 (add-to-list '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
296 (buffer-substring-no-properties
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
297 (point)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
298 (save-excursion (end-of-line) (point)))))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
299 (forward-line 1))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
300
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
301 ;; Object path
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
302
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
303 (search-forward "Object Search Path:")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
304 (forward-line 1)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
305 (while (not (looking-at "^$"))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
306 (back-to-indentation)
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
307 (if (looking-at "<Current_Directory>")
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
308 (add-to-list 'ada-xref-runtime-library-ali-path ".")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
309 (add-to-list '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
310 (buffer-substring-no-properties
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
311 (point)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
312 (save-excursion (end-of-line) (point)))))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
313 (forward-line 1))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
314 )
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
315 (kill-buffer nil))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
316 (error nil))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
317 (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
318 (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
319 (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
320 (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
321 ))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
322
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
323 (defun ada-treat-cmd-string (cmd-string)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
324 "Replace meta-sequences like ${...} in CMD-STRING with the appropriate value.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
325 Assumes project exists.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
326 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
327 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
328 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
329
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
330 (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
331 (let (value
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
332 (name (match-string 2 cmd-string)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
333 (cond
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
334 ((string= name "current")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
335 (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
336 ((string= name "full_current")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
337 (setq value (buffer-file-name)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
338 (t
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
339 (save-match-data
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
340 (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
341
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
342 ;; 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
343 (if (null value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
344 (if (not (setq value (getenv name)))
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
345 (message "%s" (concat "No project or environment variable " name " found"))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
346
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
347 (cond
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
348 ((null value)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
349 (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
350 ((stringp value)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
351 (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
352 ((listp value)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
353 (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
354 (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
355 (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
356 t t cmd-string)))))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
357 ))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
358 cmd-string)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
359
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
360 (defun ada-xref-set-default-prj-values (symbol ada-buffer)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
361 "Reset the properties in SYMBOL to the default values for ADA-BUFFER."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
362
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
363 (let ((file (buffer-file-name ada-buffer))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
364 plist)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
365 (save-excursion
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
366 (set-buffer ada-buffer)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
367
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
368 (set 'plist
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
369 ;; Try hard to find a project file, even if the current
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
370 ;; buffer is not an Ada file or not associated with a file
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
371 (list 'filename (expand-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
372 (cond
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
373 (ada-prj-default-project-file
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
374 ada-prj-default-project-file)
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
375 (file (ada-prj-find-prj-file file t))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
376 (t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
377 (message (concat "Not editing an Ada file,"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
378 "and no default project "
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
379 "file specified!"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
380 "")))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
381 'build_dir (file-name-as-directory (expand-file-name "."))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
382 'src_dir (list ".")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
383 'obj_dir (list ".")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
384 'casing (if (listp ada-case-exception-file)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
385 ada-case-exception-file
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
386 (list ada-case-exception-file))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
387 'comp_opt ada-prj-default-comp-opt
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
388 'bind_opt ada-prj-default-bind-opt
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
389 'link_opt ada-prj-default-link-opt
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
390 'gnatmake_opt ada-prj-default-gnatmake-opt
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
391 'gnatfind_opt ada-prj-gnatfind-switches
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
392 'main (if file
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
393 (file-name-nondirectory
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
394 (file-name-sans-extension file))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
395 "")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
396 'main_unit (if file
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
397 (file-name-nondirectory
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
398 (file-name-sans-extension file))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
399 "")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
400 'cross_prefix ""
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
401 'remote_machine ""
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
402 'comp_cmd (list ada-prj-default-comp-cmd)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
403 'check_cmd (list 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
404 'make_cmd (list ada-prj-default-make-cmd)
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
405 'run_cmd (list (concat "./${main}" (if is-windows ".exe")))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
406 'debug_pre_cmd (list (concat ada-cd-command " ${build_dir}"))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
407 'debug_cmd (concat ada-prj-default-debugger
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
408 " ${main}" (if is-windows ".exe"))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
409 'debug_post_cmd (list nil)))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
410 )
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
411 (set symbol plist)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
412
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
413 (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
414 "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
415 Project variables are substituted.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
416
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
417 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
418 `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
419 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
420
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
421 (let* ((project-plist (cdr (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
422 value)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
423
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
424 (set 'value (plist-get project-plist field))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
425
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
426 ;; Substitute the ${...} constructs in all the strings, including
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
427 ;; inside lists
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 ((stringp value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
430 (ada-treat-cmd-string value))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
431 ((null value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
432 nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
433 ((listp value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
434 (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
435 (t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
436 value)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
437 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
438 ))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
439
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
440 (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
441 "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
442 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
443
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
444 (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
445 (append
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
446 ;; 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
447 (list build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
448
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
449 (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
450 build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
451
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
452 ;; 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
453 ada-xref-runtime-library-specs-path)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
454
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
455 (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
456 "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
457 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
458
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
459 (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
460 (append
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
461 ;; 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
462 (list build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
463
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
464 (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
465 build-dir)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
466
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
467 ;; 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
468 ada-xref-runtime-library-ali-path)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
469
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
470 (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
471 "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
472 ;; 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
473 (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
474 (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
475
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
476 (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
477 (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
478
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
479 (defun ada-xref-update-project-menu ()
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
480 "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
481 ;; Create the standard items.
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
482 (let ((submenu
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
483 `("Project"
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
484 ["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
485 ["New..." ada-prj-new t]
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
486 ["Edit..." ada-prj-edit t]
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
487 "---"
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
488 ;; Add the new items
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
489 ,@(mapcar
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
490 (lambda (x)
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
491 (let ((name (or (car x) "<default>"))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
492 (command `(lambda ()
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
493 "Change the active project file."
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
494 (interactive)
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
495 (ada-parse-prj-file ,(car x))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
496 (set 'ada-prj-default-project-file ,(car x))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
497 (ada-xref-update-project-menu))))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
498 (vector
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
499 (if (string= (file-name-extension name)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
500 ada-prj-file-extension)
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
501 (file-name-sans-extension
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
502 (file-name-nondirectory name))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
503 (file-name-nondirectory name))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
504 command
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
505 :button (cons
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
506 :toggle
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
507 (equal ada-prj-default-project-file
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
508 (car x))
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
509 ))))
56284
dc1d86b8bbbe (ada-tight-gvd-integration): Add :group 'ada.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
510
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
511 ;; Parses all the known project files, and insert at
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
512 ;; least the default one (in case
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
513 ;; ada-xref-project-files is nil)
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
514 (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
515
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
516 (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
517
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
518
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
519 ;;-------------------------------------------------------------
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
520 ;;-- 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
521 ;;--
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
522 ;;-- 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
523 ;;-- 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
524 ;;-- 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
525 ;;--
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
526 ;;-- Public subprograms: ada-find-file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
527 ;;--
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
528 ;;-------------------------------------------------------------
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
529
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
530 (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
531 "Completion function when reading a file from the minibuffer.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
532 Completion is attempted in all the directories in the source path, as
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
533 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
534 ;; FIXME: doc arguments
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
535
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
536 ;; 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
537 ;; 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
538 ;; file.
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
539 (ada-require-project-file)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
540 (let (list
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
541 (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
542
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
543 (while dirs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
544 (if (file-directory-p (car dirs))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
545 (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
546 (set 'dirs (cdr dirs)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
547 (cond ((equal flag 'lambda)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
548 (assoc string list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
549 (flag
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
550 list)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
551 (t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
552 (try-completion string
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
553 (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
554 predicate)))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
555
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
556 ;;;###autoload
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
557 (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
558 "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
559 Completion is available."
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
560 (interactive
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
561 (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
562 (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
563 (if file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
564 (find-file file)
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
565 (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
566
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
567
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
568 ;; ----- Utilities -------------------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
569
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
570 (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
571 "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
572 Should only be called from interactive functions."
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
573 (if (not (ada-xref-current-project t))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
574 (ada-reread-prj-file)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
575
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
576 (defun ada-xref-current-project-file (&optional 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
577 "Return the current project file name; never nil unless 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
578 If NO-USER-QUESTION, don't prompt user for file. Call
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
579 `ada-require-project-file' first if a project must exist."
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
580 (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
581 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
582 (ada-prj-find-prj-file nil 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
583
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
584 (defun ada-xref-current-project (&optional 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
585 "Return the current project; nil if none.
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
586 If NO-USER-QUESTION, don't prompt user for file. Call
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
587 `ada-require-project-file' first if a project must exist."
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
588 (let* ((file-name (ada-xref-current-project-file 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
589 (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
590
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
591 (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
592 "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
593 (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
594 (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
595
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
596 (defun ada-show-current-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
597 "Display current main unit 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
598 (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
599 (message "ada-mode main_unit: %s" (ada-xref-get-project-field 'main_unit)))
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
600
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
601 (defun ada-xref-push-pos (filename position)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
602 "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
603 (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
604 (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
605 (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
606
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
607 (defun ada-xref-goto-previous-reference ()
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
608 "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
609 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
610 (if ada-xref-pos-ring
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
611 (let ((pos (car ada-xref-pos-ring)))
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
612 (setq ada-xref-pos-ring (cdr ada-xref-pos-ring))
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
613 (find-file (car (cdr pos)))
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
614 (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
615
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
616 (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
617 "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
618 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
619 name)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
620 ;; 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
621
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
622 (defun ada-set-default-project-file (name &optional keep-existing)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
623 "Set the file whose name is NAME as the default project file.
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
624 If KEEP-EXISTING is true and a project file has already been loaded, nothing
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
625 is done. This is meant to be used from `ada-mode-hook', for instance, to force
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
626 a project file unless the user has already loaded one."
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
627 (interactive "fProject file:")
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
628 (if (or (not keep-existing)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
629 (not ada-prj-default-project-file)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
630 (equal ada-prj-default-project-file ""))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
631 (progn
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
632 (setq ada-prj-default-project-file name)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
633 (ada-reread-prj-file name))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
634
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
635 ;; ------ 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
636
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
637 (defun ada-prj-find-prj-file (&optional file 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
638 "Find the project file associated with FILE (or the current buffer if nil).
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
639 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
640 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
641 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
642 `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
643 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
644 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
645 'default.adp'."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
646
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
647 (let (selected)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
648
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87169
diff changeset
649 (if (not (and (derived-mode-p 'ada-mode)
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87169
diff changeset
650 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
651
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
652 ;; 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
653 ;; with a file (for instance an emerge 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
654
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
655 (if (and ada-prj-default-project-file
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
656 (not (string= ada-prj-default-project-file "")))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
657 (setq selected ada-prj-default-project-file)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
658 (setq selected nil))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
659
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
660 ;; other cases: use a more complex algorithm
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
661
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
662 (let* ((current-file (or file (buffer-file-name)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
663 (first-choice (concat
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
664 (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
665 ada-prj-file-extension))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
666 (dir (file-name-directory current-file))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
667
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
668 (prj-files (directory-files
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
669 dir t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
670 (concat ".*" (regexp-quote
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
671 ada-prj-file-extension) "$")))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
672 (choice nil))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
673
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
674 (cond
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
675
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
676 ((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
677 ;; filename.adp
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
678 (set 'selected first-choice))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
679
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
680 ((= (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
681 ;; 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
682 (set 'selected (car prj-files)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
683
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
684 ((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
685 ;; 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
686 (save-window-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
687 (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
688 (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
689 (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
690 (princ " no. file name \n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
691 (princ " --- ------------------------\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
692 (let ((counter 1))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
693 (while (<= counter (length prj-files))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
694 (princ (format " %2d) %s\n"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
695 counter
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
696 (nth (1- counter) prj-files)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
697 (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
698
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
699 ))) ; end of with-output-to ...
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
700 (setq choice nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
701 (while (or
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
702 (not choice)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
703 (not (integerp choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
704 (< choice 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
705 (> choice (length prj-files)))
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 58004
diff changeset
706 (setq choice (string-to-number
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
707 (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
708 (set 'selected (nth (1- choice) prj-files))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
709
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
710 ((= (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
711 ;; 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
712 (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
713 (setq ada-last-prj-file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
714 (read-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
715 (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
716 nil ada-last-prj-file))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
717 (unless (string= ada-last-prj-file "")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
718 (set 'selected ada-last-prj-file))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
719 )))
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
720
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
721 (or selected "default.adp")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
722 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
723
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
724
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
725 (defun ada-parse-prj-file (prj-file)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
726 "Read PRJ-FILE, set it as the active project."
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
727 ;; FIXME: doc nil, search, etc.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
728 (if prj-file
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
729 (let (project src_dir obj_dir make_cmd comp_cmd check_cmd casing
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
730 run_cmd debug_pre_cmd debug_post_cmd
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
731 (ada-buffer (current-buffer)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
732 (setq prj-file (expand-file-name prj-file))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
733
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
734 ;; Set the project file as the active one.
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
735 (setq ada-prj-default-project-file prj-file)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
736
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
737 ;; Initialize the project with the default values
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
738 (ada-xref-set-default-prj-values 'project (current-buffer))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
739
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
740 ;; Do not use find-file below, since we don't want to show this
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
741 ;; buffer. If the file is open through speedbar, we can't use
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
742 ;; find-file anyway, since the speedbar frame is special and does not
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
743 ;; allow the selection of a file in it.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
744
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
745 (if (file-exists-p prj-file)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
746 (progn
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
747 (let* ((buffer (run-hook-with-args-until-success
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
748 'ada-load-project-hook prj-file)))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
749 (unless buffer
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
750 (setq buffer (find-file-noselect prj-file nil)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
751 (set-buffer buffer))
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
752
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
753 (widen)
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
754 (goto-char (point-min))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
755
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
756 ;; Now overrides these values with the project file
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
757 (while (not (eobp))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
758 (if (looking-at "^\\([^=]+\\)=\\(.*\\)")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
759 (cond
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
760 ;; fields that are lists or paths require special processing
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
761 ;; FIXME: strip trailing spaces
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
762 ((string= (match-string 1) "src_dir")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
763 (add-to-list 'src_dir
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
764 (file-name-as-directory (match-string 2))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
765 ((string= (match-string 1) "obj_dir")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
766 (add-to-list 'obj_dir
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
767 (file-name-as-directory (match-string 2))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
768 ((string= (match-string 1) "casing")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
769 (set 'casing (cons (match-string 2) casing)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
770 ((string= (match-string 1) "build_dir")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
771 (set 'project
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
772 (plist-put project 'build_dir
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
773 (file-name-as-directory (match-string 2)))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
774 ((string= (match-string 1) "make_cmd")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
775 (add-to-list 'make_cmd (match-string 2)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
776 ((string= (match-string 1) "comp_cmd")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
777 (add-to-list 'comp_cmd (match-string 2)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
778 ((string= (match-string 1) "check_cmd")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
779 (add-to-list 'check_cmd (match-string 2)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
780 ((string= (match-string 1) "run_cmd")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
781 (add-to-list 'run_cmd (match-string 2)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
782 ((string= (match-string 1) "debug_pre_cmd")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
783 (add-to-list 'debug_pre_cmd (match-string 2)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
784 ((string= (match-string 1) "debug_post_cmd")
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
785 (add-to-list 'debug_post_cmd (match-string 2)))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
786 (t
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
787 ;; any other field in the file is just copied
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
788 (set 'project (plist-put project (intern (match-string 1))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
789 (match-string 2))))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
790 (forward-line 1))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
791
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
792 (if src_dir (set 'project (plist-put project 'src_dir
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
793 (reverse src_dir))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
794 (if obj_dir (set 'project (plist-put project 'obj_dir
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
795 (reverse obj_dir))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
796 (if casing (set 'project (plist-put project 'casing
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
797 (reverse casing))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
798 (if make_cmd (set 'project (plist-put project 'make_cmd
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
799 (reverse make_cmd))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
800 (if comp_cmd (set 'project (plist-put project 'comp_cmd
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
801 (reverse comp_cmd))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
802 (if check_cmd (set 'project (plist-put project 'check_cmd
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
803 (reverse check_cmd))))
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
804 (if run_cmd (set 'project (plist-put project 'run_cmd
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
805 (reverse run_cmd))))
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
806 (if debug_post_cmd (set 'project (plist-put project 'debug_post_cmd
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
807 (reverse debug_post_cmd))))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
808 (if debug_pre_cmd (set 'project (plist-put project 'debug_pre_cmd
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
809 (reverse debug_pre_cmd))))
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
810
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
811 (set-buffer ada-buffer)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
812 )
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
813
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
814 ;; Else the file wasn't readable (probably the default project).
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
815 ;; We initialize it with the current environment variables.
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
816 ;; We need to add the startup directory in front so that
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
817 ;; files locally redefined are properly found. We cannot
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
818 ;; add ".", which varies too much depending on what the
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
819 ;; current buffer is.
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
820 (set 'project
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
821 (plist-put project 'src_dir
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
822 (append
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
823 (list command-line-default-directory)
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
824 (split-string (or (getenv "ADA_INCLUDE_PATH") "") ":")
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
825 (list "." default-directory))))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
826 (set 'project
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
827 (plist-put project 'obj_dir
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
828 (append
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
829 (list command-line-default-directory)
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
830 (split-string (or (getenv "ADA_OBJECTS_PATH") "") ":")
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
831 (list "." default-directory))))
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
832 )
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
833
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
834
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
835 ;; Delete the default project file from the list, if it is there.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
836 ;; Note that in that case, this default project is the only one in
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
837 ;; the list
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
838 (if (assoc nil ada-xref-project-files)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
839 (setq ada-xref-project-files nil))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
840
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
841 ;; Memorize the newly read project file
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
842 (if (assoc prj-file ada-xref-project-files)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
843 (setcdr (assoc prj-file ada-xref-project-files) project)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
844 (add-to-list 'ada-xref-project-files (cons prj-file project)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
845
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
846 ;; Sets up the compilation-search-path so that Emacs is able to
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
847 ;; go to the source of the errors in a compilation buffer
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
848 (setq compilation-search-path (ada-xref-get-src-dir-field))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
849
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
850 ;; Set the casing exceptions file list
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
851 (if casing
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
852 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
853 (setq ada-case-exception-file (reverse casing))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
854 (ada-case-read-exceptions)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
855
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
856 ;; Add the directories to the search path for ff-find-other-file
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
857 ;; Do not add the '/' or '\' at the end
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
858 (setq ada-search-directories-internal
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
859 (append (mapcar 'directory-file-name compilation-search-path)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
860 ada-search-directories))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
861
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
862 (ada-xref-update-project-menu)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
863 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
864
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
865 ;; No prj file ? => Setup default values
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
866 ;; Note that nil means that all compilation modes will first look in the
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
867 ;; current directory, and only then in the current file's directory. This
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
868 ;; current file is assumed at this point to be in the common source
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
869 ;; directory.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
870 (setq compilation-search-path (list nil default-directory))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
871 ))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
872
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
873
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
874 (defun ada-find-references (&optional pos arg local-only)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
875 "Find all references to the entity under POS.
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
876 Calls gnatfind to find the references.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
877 If ARG is t, the contents of the old *gnatfind* buffer is preserved.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
878 If LOCAL-ONLY is t, only the declarations in the current file are returned."
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
879 (interactive "d\nP")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
880 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
881
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
882 (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
883 (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
884 (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
885
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
886 (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
887
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
888 ;; 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
889 (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
890 (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
891 (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
892 (ada-file-of identlist)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
893 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
894 (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
895 (ada-file-of identlist)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
896 (ada-line-of identlist)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
897 (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
898 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
899
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
900 (defun ada-find-local-references (&optional pos arg)
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
901 "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
902 Calls `gnatfind' to find the references.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
903 If ARG is t, the contents of the old *gnatfind* buffer is preserved."
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
904 (interactive "d\nP")
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
905 (ada-find-references pos arg t))
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
906
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
907 (defconst ada-gnatfind-buffer-name "*gnatfind*")
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
908
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
909 (defun ada-find-any-references
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
910 (entity &optional file line column local-only append)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
911 "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
912 ENTITY was first found the location given by FILE, LINE and COLUMN.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
913 If LOCAL-ONLY is t, then list only the references in FILE, which
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
914 is much faster.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
915 If APPEND is t, then append the output of the command to the existing
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
916 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
917 (interactive "sEntity name: ")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
918 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
919
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
920 ;; 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
921 ;; 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
922 ;; processed (gnatfind \"+\":...).
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
923 (let* ((quote-entity
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
924 (if (= (aref entity 0) ?\")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
925 (if is-windows
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
926 (concat "\\\"" (substring entity 1 -1) "\\\"")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
927 (concat "'\"" (substring entity 1 -1) "\"'"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
928 entity))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
929 (switches (ada-xref-get-project-field 'gnatfind_opt))
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
930 (command (concat "gnat find " switches " "
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
931 quote-entity
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
932 (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
933 (if line (concat ":" line))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
934 (if column (concat ":" column))
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
935 (if local-only (concat " " (file-name-nondirectory file)))
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
936 ))
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
937 old-contents)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
938
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
939 ;; 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
940 (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
941 (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
942 (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
943 "gpr")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
944 (setq command (concat command " -P" ada-prj-default-project-file))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
945 (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
946
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
947 (if (and append (get-buffer ada-gnatfind-buffer-name))
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
948 (save-excursion
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
949 (set-buffer "*gnatfind*")
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
950 (setq old-contents (buffer-string))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
951
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
952 (let ((compilation-error "reference"))
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
953 (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
954
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
955 ;; Hide the "Compilation" menu
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
956 (save-excursion
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
957 (set-buffer ada-gnatfind-buffer-name)
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
958 (local-unset-key [menu-bar compilation-menu])
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
959
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
960 (if old-contents
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
961 (progn
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
962 (goto-char 1)
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
963 (set 'buffer-read-only nil)
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
964 (insert old-contents)
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
965 (set 'buffer-read-only t)
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
966 (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
967 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
968 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
969
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
970 (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
971
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
972 ;; ----- Identifier Completion --------------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
973 (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
974 "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
975 (interactive "d")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
976 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
977
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
978 ;; 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
979 ;; 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
980 (let* ((curbuf (current-buffer))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
981 (identlist (ada-read-identifier pos))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
982 (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
983 (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
984 "[a-zA-Z0-9_]*\\)"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
985 (completed nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
986 (symalist nil))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
987
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
988 ;; Open the .ali file
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
989 (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
990 (goto-char (point-max))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
991
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
992 ;; 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
993 (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
994 (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
995
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
996 (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
997
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
998 ;; kills .ali buffer
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
999 (kill-buffer nil)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1000
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1001 ;; 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
1002 (set-buffer curbuf)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1003 (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
1004 (replace-match "")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1005 ;; inserts the completed symbol
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1006 (insert completed)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1007 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1008
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1009 ;; ----- Cross-referencing ----------------------------------------
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1010
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1011 (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
1012 "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
1013 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1014 (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
1015 (ada-goto-declaration (point)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1016
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1017 (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
1018 "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
1019 (interactive)
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1020 (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
1021 (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
1022
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1023 (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
1024 "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
1025 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
1026 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
1027 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
1028 (interactive "d")
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1029 (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
1030
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1031 ;; 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
1032 ;; already changed previously
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1033 (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
1034 (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
1035
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1036 (defun ada-goto-declaration (pos &optional other-frame)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1037 "Display the declaration of the identifier around POS.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1038 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
1039 non-nil.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1040 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
1041 (interactive "d")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1042 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1043 (push-mark pos)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1044 (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
1045
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1046 ;; 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
1047 ;; 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
1048 ;; object path for a possible location.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1049 (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
1050 (condition-case err
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1051 (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
1052 ;; 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
1053 (error-file-not-found
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1054 (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
1055 (nthcdr 1 err))))
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1056
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1057 (error
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1058 (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
1059
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1060 ;; 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
1061 ;; entity, whose references are not given by GNAT
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1062 (if (and (file-exists-p ali-file)
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1063 (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
1064 (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
1065
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1066 ;; 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
1067 (if ada-xref-search-with-egrep
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1068 (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
1069 (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
1070 )))))))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1071
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1072 (defun ada-goto-declaration-other-frame (pos)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1073 "Display the declaration of the identifier around POS.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1074 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
1075 (interactive "d")
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1076 (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
1077
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1078 (defun ada-remote (command)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1079 "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
1080 (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
1081 (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
1082 command
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1083 (format "%s %s '(%s)'"
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1084 remote-shell-program
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1085 machine
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1086 command))))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1087
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1088 (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
1089 "Return the list of absolute directories found in DIR-LIST.
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1090 If a directory is a relative directory, ROOT-DIR is prepended."
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1091 (mapcar (lambda (x) (expand-file-name x root-dir)) dir-list))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1092
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1093 (defun ada-set-environment ()
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1094 "Prepare an environment for Ada compilation.
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1095 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
1096 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
1097 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
1098 project file."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1099 (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
1100 (objects (getenv "ADA_OBJECTS_PATH"))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1101 (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
1102 (if include
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1103 (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
1104 (if objects
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1105 (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
1106 (cons
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1107 (concat "ADA_INCLUDE_PATH="
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1108 (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
1109 (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
1110 path-separator)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1111 include)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1112 (cons
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1113 (concat "ADA_OBJECTS_PATH="
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1114 (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
1115 (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
1116 path-separator)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1117 objects)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1118 process-environment))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1119
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1120 (defun ada-compile-application (&optional arg)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1121 "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
1122 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
1123 (interactive "P")
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1124 (ada-require-project-file)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1125 (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
1126 (process-environment (ada-set-environment))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1127 (compilation-scroll-output t))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1128
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1129 (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
1130
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1131 ;; 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
1132 (unless cmd
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1133 (setq cmd '("") arg t))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1134
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1135 ;; 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
1136 ;; 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
1137 (setq cmd (ada-remote (mapconcat 'identity cmd ada-command-separator)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1138
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1139 (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
1140 (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
1141
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1142 ;; 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
1143 ;; 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
1144 ;; 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
1145 (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
1146 (setq cmd (concat cmd "\n\n")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1147
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1148 (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
1149
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
1150 (defun ada-set-main-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
1151 "Set main_unit and main project variables to current buffer, build 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
1152 (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
1153 (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
1154 (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
1155 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
1156 (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
1157 (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
1158
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
1159 (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
1160 (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
1161 (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
1162 (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
1163 ""))
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
1164 (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
1165 (ada-xref-set-project-field 'main_unit 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
1166 (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
1167
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1168 (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
1169 "Recompile the current file.
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1170 If ARG is not nil, ask for user confirmation of the command.
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1171 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
1172 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
1173 (interactive "P")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1174 (ada-require-project-file)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1175 (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
1176 (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
1177 (process-environment (ada-set-environment))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1178 (compilation-scroll-output t))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1179
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1180 (setq compilation-search-path (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
1181
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1182 (unless cmd
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1183 (setq cmd '("") arg t))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1184
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1185 ;; 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
1186 ;; 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
1187 (setq cmd (ada-remote (mapconcat 'identity cmd ada-command-separator)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1188
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1189 ;; 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
1190 (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
1191 (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
1192
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1193 (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
1194
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1195 (defun ada-check-current (&optional arg)
74411
f76dd5acc4b2 (ada-check-current): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74378
diff changeset
1196 "Check the current file for syntax errors.
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1197 If ARG is not nil, ask for user confirmation of the command."
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1198 (interactive "P")
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1199 (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
1200
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1201 (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
1202 "Run the application.
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1203 if ARG is not-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
1204 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1205 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1206
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1207 (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
1208 (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
1209 (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
1210
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1211 (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
1212
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1213 ;; 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
1214 (if (not command)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1215 (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
1216
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1217 ;; Modify the command to run remotely
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1218 (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
1219 ada-command-separator)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1220
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1221 ;; 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
1222 (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
1223 (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
1224 command)))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1225
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1226 ;; Run the command
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1227 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1228 (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
1229 (set 'buffer-read-only nil)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1230
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1231 (erase-buffer)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1232 (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
1233 "-c" command)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1234 (comint-mode)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1235 ;; 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
1236 ;; 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
1237 ;; 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
1238 (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
1239 (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
1240 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1241 (display-buffer "*run*")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1242
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1243 ;; 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
1244 (other-window 1)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1245 (switch-to-buffer "*run*")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1246 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1247
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1248 (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
1249 "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
1250 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
1251 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
1252 project file."
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1253 (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
1254 (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
1255 (let ((buffer (current-buffer))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1256 cmd pre-cmd post-cmd)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1257 (setq cmd (if executable-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1258 (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
1259 (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
1260 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
1261 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
1262
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1263 ;; 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
1264 (if (not cmd)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1265 (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
1266 " "
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1267 (or executable-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1268 (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
1269
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1270 ;; 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
1271 ;; swallowed inside the Gvd one
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1272 (if (and ada-tight-gvd-integration
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1273 (string-match "^[^ \t]*gvd" cmd))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1274 ;; 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
1275 ;; 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
1276 ;; user has been using until now
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1277 ;; 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
1278 ;; 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
1279 ;; as well
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1280 (let ((frame (make-frame '((visibility . nil)))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1281 (set 'cmd (concat
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1282 cmd " --editor-window="
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1283 (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
1284 (select-frame frame)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1285
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1286 ;; Add a -fullname switch
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1287 ;; Use the remote machine
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1288 (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
1289
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1290 ;; 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
1291 (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
1292 (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
1293
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1294 (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
1295
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1296 ;; 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
1297 ;; 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
1298 (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
1299
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1300 (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
1301 (if (not (equal pre-cmd ""))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1302 (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
1303
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1304 (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
1305 (if post-cmd
50984
7e8592bdc9a1 (ada-xref-update-project-menu): Use easymenu.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50811
diff changeset
1306 (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
1307
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1308
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1309 ;; 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
1310 ;; 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
1311 ;; FIXME: This is evil and not temporary !!! -stef
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1312 (fset 'comint-exec
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1313 `(lambda (buffer name command startfile switches)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1314 (let (compilation-buffer-name-function)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1315 (save-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1316 (set 'compilation-buffer-name-function
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1317 (lambda(x) (buffer-name buffer)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1318 (compile (ada-quote-cmd
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1319 (concat ,pre-cmd
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1320 command " "
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1321 (mapconcat 'identity switches " "))))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1322 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1323
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1324 ;; 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
1325 (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
1326 ada-tight-gvd-integration
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1327 (not (string-match "--tty" cmd)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1328 (setq cmd (concat cmd "--tty")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1329
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1330 (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
1331 (boundp 'jdb))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1332 (funcall (symbol-function 'jdb) cmd)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1333 (gdb cmd))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1334
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1335 ;; 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
1336 ;; 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
1337
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1338 (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
1339
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1340 ;; Send post-commands to the debugger
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1341 (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
1342
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1343 ;; 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
1344 ;; 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
1345 (goto-char (point-max))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1346
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1347 ;; 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
1348 ;; 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
1349 ;; 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
1350 (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
1351 (string-match "--tty" cmd))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1352 (split-window-vertically))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1353 (switch-to-buffer buffer)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1354 )))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1355
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1356 (defun ada-reread-prj-file (&optional filename)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1357 "Reread either the current project, or FILENAME if non-nil."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1358 (interactive "P")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1359 (if filename
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1360 (ada-parse-prj-file filename)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1361 (ada-parse-prj-file (ada-prj-find-prj-file)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1362
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1363 ;; Reread the location of the standard runtime library
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1364 (ada-initialize-runtime-library
50737
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1365 (or (ada-xref-get-project-field 'cross_prefix) ""))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1366 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1367
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1368 ;; ------ Private routines
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1369
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1370 (defun ada-xref-current (file &optional ali-file-name)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1371 "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
1372 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
1373 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
1374 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
1375 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
1376 ;; kill old buffer
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1377 (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
1378 (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
1379 (kill-buffer (get-file-buffer ali-file-name)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1380
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1381 (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
1382 (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
1383
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1384 ;; 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
1385 ;; 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
1386 (save-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1387 (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
1388 process)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1389 (if body-visible
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1390 (set-buffer body-visible)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1391 (find-file body-name))
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1392
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1393 ;; 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
1394 ;; 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
1395 ;; 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
1396 ;; asynchronous.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1397 (ada-compile-current)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1398 (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
1399
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1400 (while (and process
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1401 (not (equal (process-status process) 'exit)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1402 (sit-for 1))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1403
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1404 ;; 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
1405 (unless body-visible
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1406 (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
1407 ))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1408 body-name))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1409
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1410 (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
1411 "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
1412 (let (found)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1413 (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
1414 (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
1415 (file-name-nondirectory file)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1416
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1417 (unless (file-exists-p found)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1418 (set 'found nil))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1419 (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
1420 found))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1421
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1422 (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
1423 "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
1424 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
1425 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
1426 (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
1427
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1428 (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
1429 "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
1430 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
1431 to gnatmake's behavior."
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1432 (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
1433
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1434 (defun ada-get-ali-file-name (file)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1435 "Create the ali file name for the ada-file FILE.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1436 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
1437 the project file."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1438
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1439 ;; 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
1440 ;; 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
1441 ;; 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
1442 ;; 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
1443 ;; 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
1444 ;; 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
1445 ;; 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
1446 ;; .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
1447 ;; 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
1448 ;; 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
1449 ;; 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
1450 ;;
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1451 ;; 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
1452 ;; 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
1453 ;; 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
1454 ;; 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
1455 ;; 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
1456 ;; 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
1457 ;; also a separate.
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 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1460 (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
1461 (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
1462 (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
1463 ".ali"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1464 ali-file-name
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1465 is-spec)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1467 ;; 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
1468 ;; 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
1469 ;; 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
1470 ;; 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
1471
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1472 (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
1473 (let ((specs ada-spec-suffixes))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1474 (while specs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1475 (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
1476 file)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1477 (set 'is-spec t))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1478 (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
1479
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1480 (if is-spec
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1481 (set 'ali-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1482 (ada-find-ali-file-in-dir
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1483 (concat (file-name-sans-extension
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1484 (file-name-nondirectory
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1485 (ada-other-file-name)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1486 ".ali"))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1487
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1488
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1489 (setq ali-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1490 (or ali-file-name
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1491
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1492 ;; 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
1493 (ada-find-ali-file-in-dir short-ali-file-name)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1494
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1495
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1496 ;; 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
1497 ;; 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
1498 ;; 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
1499 ;; and look for its ali file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1500 (ada-find-ali-file-in-dir
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1501 (concat (file-name-sans-extension
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1502 (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
1503 ".ali"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1504
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1505
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1506 ;; 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
1507 ;; 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
1508 (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
1509 (file-name-nondirectory file))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1510
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1511 (while (and (not ali-file-name)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1512 (string-match "^\\(.*\\)[.-][^.-]*" parent-name))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1513
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1514 (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
1515 (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
1516 (concat parent-name ".ali")))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1517 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1518 ali-file-name)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1519
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1520 ;; 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
1521 (if (not ali-file-name)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1522 ;; 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
1523 ;; 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
1524 ;; temporarily disabling the automatic compilation.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1525
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1526 (if ada-xref-create-ali
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1527 (setq ali-file-name
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1528 (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
1529 ".ali"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1530
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1531 (error "`.ali' file not found; recompile your source file"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1532
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1533
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1534 ;; 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
1535 (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
1536 ada-xref-create-ali)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1537 (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
1538
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1539 ;; 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
1540 (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
1541 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1542
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1543 (defun ada-get-ada-file-name (file original-file)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1544 "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
1545 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
1546 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
1547
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1548 (save-excursion
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1549
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1550 ;; 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
1551 ;; 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
1552 (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
1553 (if buffer
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1554 (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
1555 (find-file original-file)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1556
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1557 ;; 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
1558 ;; 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
1559 (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
1560 (if filename
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1561 (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
1562 (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
1563 )))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1564
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1565 (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
1566 "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
1567 (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
1568 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1569
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1570 (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
1571 (beginning-of-line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1572 (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
1573 (count-lines begin (point))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1574
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1575 (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
1576 "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
1577 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
1578 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
1579
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1580 ;; 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
1581 (if (>= (point) (point-max))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1582 (error "No identifier on point"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1583
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1584 ;; 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
1585 ;; 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
1586 (goto-char pos)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1587 (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
1588
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1589 ;; 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
1590 (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
1591 (error "Inside comment"))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1592
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1593 (let (identifier identlist)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1594 ;; 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
1595 ;; as in "+", "-", ..
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1596 (if (= (char-after) ?\")
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1597 (forward-char 1))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1598
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1599 ;; 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
1600 ;; This is only true if:
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1601 ;; - the symbol is +, -, ...
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1602 ;; - 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
1603 (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
1604 (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
1605 (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
1606 (= (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
1607 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1608 (if (and (= (char-before) ?\")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1609 (= (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
1610 (forward-char -1))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1611 (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
1612
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1613 (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
1614 (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
1615 (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
1616 (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
1617 (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
1618 (set 'identifier (match-string 0))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1619 (error "No identifier around")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1620
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1621 ;; Build the identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1622 (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
1623 (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
1624 (ada-set-line identlist
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1625 (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
1626 (ada-set-column identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1627 (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
1628 (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
1629 identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1630 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1631
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1632 (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
1633 "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
1634 Information is extracted from the ali file."
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1635
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1636 (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
1637 declaration-found)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1638 (set-buffer ali-buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1639 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1640 (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
1641
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1642 ;; 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
1643 ;; 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
1644 ;; 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
1645
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1646 (if (re-search-forward
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1647 (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
1648 nil t)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1649 (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
1650 (set 'declaration-found
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1651 (re-search-forward
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1652 (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
1653 "." (ada-column-of identlist)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1654 "[ *]" (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
1655 "[{\[\(<= ]?\\(.*\\)$") bound t))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1656 (if declaration-found
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1657 (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
1658 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1659
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1660 ;; 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
1661 ;; 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
1662
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1663 (unless declaration-found
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1664
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1665 ;; 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
1666 ;; reference to it
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1667 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1668 (set 'declaration-found t)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1669 (ada-set-ali-index
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1670 identlist
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1671 (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
1672 (ada-file-of identlist))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1673 (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
1674 "|\\([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
1675 (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
1676 "[^etpzkd<>=^]"
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1677 (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
1678 nil t)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1679
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1680 ;; 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
1681 ;; 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
1682 ;; 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
1683 (unless (re-search-forward
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1684 (concat
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1685 "^[0-9]+.[0-9]+[ *]"
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1686 (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
1687 "[ <{=\(\[]\\(.\\|\n\\.\\)*\\<"
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1688 (ada-line-of identlist)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1689 "[^0-9]"
45930
dd1d952f59c2 Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44909
diff changeset
1690 (ada-column-of identlist) "\\>")
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1691 nil t)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1692
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1693 ;; 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
1694 ;; 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
1695 ;; created
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1696 (set 'declaration-found nil)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1697 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1698 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1699
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1700 ;; 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
1701 ;; 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
1702 (if declaration-found
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1703 (progn
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1704 (beginning-of-line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1705 ;; 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
1706 (while (looking-at "^\\.")
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78543
diff changeset
1707 (forward-line -1)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1708 (beginning-of-line))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1709 (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
1710 (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
1711 (set 'declaration-found nil))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1712
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1713 ;; 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
1714 ;; 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
1715 ;; 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
1716 ;; automatically
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1717 (unless declaration-found
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1718 (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
1719 (set 'declaration-found t)
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1720 ;; 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
1721 (progn
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1722 (kill-buffer ali-buffer)
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
1723
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
1724 (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
1725 )))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1726 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1727
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1728
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1729 ;; 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
1730 ;; information available
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1731 (beginning-of-line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1732 (if declaration-found
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1733 (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
1734 (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
1735 (save-excursion
85451
e1af3a725ca4 * textmodes/two-column.el (2C-split, 2C-merge):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78543
diff changeset
1736 (forward-line 1)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1737 (beginning-of-line)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1738 (while (looking-at "^\\.\\(.*\\)")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1739 (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
1740 (forward-line 1))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1741 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1742
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1743 (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
1744
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1745 ;; If we can find the file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1746 (condition-case err
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1747 (ada-set-declare-file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1748 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1749 (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
1750 (ada-file-of identlist)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1751
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1752 ;; 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
1753 (error-file-not-found
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
1754 (signal (car err) (cdr err)))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1755 (error
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1756 (kill-buffer ali-buffer)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1757 (error (error-message-string err)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1758 ))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1759
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1760 (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
1761 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1762 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1763
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1764 (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
1765 "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
1766 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
1767 to make some guesses.
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1768 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
1769
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1770 (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
1771 (progn
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1772 (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
1773 (my-regexp (concat "[ *]"
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1774 (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
1775 (line-ada "--")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1776 (col-ada "--")
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1777 (line-ali 0)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1778 (len 0)
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1779 (choice 0)
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1780 (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
1781
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1782 (goto-char (point-max))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1783 (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
1784 (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1785 (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
1786 (beginning-of-line)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1787 ;; 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
1788 (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
1789 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1790 (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
1791 (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
1792 (setq line-ada "--")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1793 (setq col-ada "--")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1794 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1795 ;; 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
1796 (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
1797 (add-to-list
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1798 '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
1799 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1800 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1801 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1802
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1803 ;; 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
1804 (setq len (length declist))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1805 (cond
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1806 ;; none => error
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1807 ((= len 0)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1808 (kill-buffer (current-buffer))
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
1809 (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
1810 (ada-name-of identlist)))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1811 ;; 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
1812 ((= len 1)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1813 (goto-line (caar declist)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1814
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1815 ;; 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
1816 (t
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1817 (save-window-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1818 (with-output-to-temp-buffer "*choice list*"
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1819
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1820 (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
1821 (princ "Possible declarations are:\n\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1822 (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
1823 (princ " --- --------------------- ---- ----\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1824 (let ((counter 0))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1825 (while (< counter len)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1826 (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
1827 (1+ counter)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1828 (ada-get-ada-file-name
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1829 (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
1830 (ada-file-of identlist))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1831 (nth 2 (nth counter declist))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1832 (nth 3 (nth counter declist))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1833 ))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1834 (setq counter (1+ counter))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1835 ) ; end of while
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1836 ) ; end of let
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1837 ) ; end of with-output-to ...
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1838 (setq choice nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1839 (while (or
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1840 (not choice)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1841 (not (integerp choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1842 (< choice 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1843 (> choice len))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1844 (setq choice
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 58004
diff changeset
1845 (string-to-number
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1846 (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
1847 )
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
1848 (set-buffer ali-buffer)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
1849 (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
1850 ))))))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1851
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 (defun ada-find-in-ali (identlist &optional other-frame)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
1854 "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
1855 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
1856 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
1857
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1858 (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
1859 (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
1860 (locations nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1861 (start 0)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1862 file line col)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1863
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1864 ;; 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
1865 ;; 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
1866 ;; 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
1867 ;; 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
1868
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1869 ;; 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
1870 (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
1871 (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
1872 (match-string 2 ali-line) ;; column
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1873 (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
1874 (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
1875 ali-line start)
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1876 (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
1877 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
1878 start (match-end 3))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1879
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1880 ;; 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
1881 ;; 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
1882 ;; 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
1883 ;; 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
1884 (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
1885 (match-string 0 ali-line))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1886 ali-line)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1887 (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
1888 (goto-char (point-min))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1889 (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
1890 (string-to-number file-number))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1891 (set 'file (match-string 1))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1892 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1893 ;; Else get the nearest file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1894 (set 'file (ada-declare-file-of identlist)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1895
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1896 (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
1897
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1898 ;; 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
1899 ;; the specs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1900 (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
1901
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1902 ;; 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
1903 ;; 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
1904
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1905 (setq line (caar locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1906 col (nth 1 (car locations))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1907 file (nth 2 (car locations)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1908
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1909 (while locations
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1910 (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
1911 (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
1912 (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
1913 (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
1914 (setq locations (cadr locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1915 line (car locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1916 col (nth 1 locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1917 file (nth 2 locations)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1918 locations nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1919 (set 'locations (cdr locations))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1920
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1921 ;; 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
1922 (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
1923
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1924 ;; Kill the .ali buffer
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1925 (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
1926
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1927 ;; Now go to the buffer
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1928 (ada-xref-change-buffer file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1929 (string-to-number line)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1930 (1- (string-to-number col))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1931 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1932 other-frame)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1933 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1934
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1935 (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
1936 "More general function for cross-references.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1937 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
1938 .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
1939 exist.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1940 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
1941 anywhere in the object path.
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1942 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
1943
78543
4e51ba479b3c (ada-gnatls-args): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 78234
diff changeset
1944 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
1945 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
1946 ;; 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
1947 (let (list
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1948 (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
1949 (regexp (concat "[ *]" (ada-name-of identlist)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1950 line column
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1951 choice
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1952 file)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1953
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1954 (save-excursion
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1955
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
1956 ;; 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
1957 ;; 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
1958 ;; of the directory and the shell stops because of that.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1959
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1960 (set-buffer (get-buffer-create "*grep*"))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1961 (while dirs
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1962 (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
1963 (concat
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
1964 "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
1965 (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
1966 " "
3eb6ddcc34d3 2006-10-15 Lennart Borgman <lennart.borgman.073@student.lu.se>
Kim F. Storm <storm@cua.dk>
parents: 68773
diff changeset
1967 (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
1968 "*.ali")))
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1969 (set 'dirs (cdr dirs)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1970
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1971 ;; Now parse the output
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1972 (set 'case-fold-search t)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1973 (goto-char (point-min))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1974 (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
1975 (save-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1976 (beginning-of-line)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1977 (if (not (= (char-after) ?X))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1978 (progn
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1979 (looking-at "\\([0-9]+\\).\\([0-9]+\\)")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1980 (setq line (match-string 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1981 column (match-string 2))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1982 (re-search-backward "^X [0-9]+ \\(.*\\)$")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1983 (set 'file (list (match-string 1) line column))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1984
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1985 ;; 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
1986 ;; of the .ali files
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1987 (unless (member file list)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1988 (set 'list (append list (list file))))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1989
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1990 ;; Current buffer is still "*grep*"
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1991 (kill-buffer "*grep*")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1992 )
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1993
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1994 ;; 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
1995 (cond
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
1996
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1997 ;; No choice found => Error
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1998 ((null list)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
1999 (error "No cross-reference found, please recompile your file"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2000
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2001 ;; 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
2002 ((= (length list) 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2003 (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
2004 (if file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2005 (ada-xref-change-buffer file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2006 (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
2007 (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
2008 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2009 other-frame)
87169
ac7eee19fc7e Improves calls to `error', per mail from RMS.
Deepak Goel <deego@gnufans.org>
parents: 87143
diff changeset
2010 (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
2011 (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
2012 )
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2013
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2014 ;; Else, ask the user
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2015 (t
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2016 (save-window-excursion
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2017 (with-output-to-temp-buffer "*choice list*"
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2018
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2019 (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
2020 (princ "Possible declarations are:\n\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2021 (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
2022 (princ " --- --------------------- ---- ----\n")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2023 (let ((counter 0))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2024 (while (< counter (length list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2025 (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
2026 (1+ counter)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2027 (nth 0 (nth counter list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2028 (nth 1 (nth counter list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2029 (nth 2 (nth counter list))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2030 ))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2031 (setq counter (1+ counter))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2032 )))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2033 (setq choice nil)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2034 (while (or (not choice)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2035 (not (integerp choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2036 (< choice 1)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2037 (> choice (length list)))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2038 (setq choice
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 58004
diff changeset
2039 (string-to-number
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2040 (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
2041 )
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2042 (set 'choice (1- choice))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2043 (kill-buffer "*choice list*")
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2044
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2045 (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
2046 (if file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2047 (ada-xref-change-buffer file
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2048 (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
2049 (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
2050 identlist
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2051 other-frame)
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2052 (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
2053 (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
2054 ))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2055
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2056 (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
2057 (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
2058 "Select and display FILE, at LINE and COLUMN.
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2059 If we do not end on the same identifier as IDENTLIST, find the closest
56766
e8b5658b7aac Many doc and style fixes.
Richard M. Stallman <rms@gnu.org>
parents: 56284
diff changeset
2060 match. Kills the .ali buffer at the end.
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2061 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
2062
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2063 (let (declaration-buffer)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2064
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2065 ;; 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
2066 (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
2067 (if other-frame
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2068 (find-file-other-frame file)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2069 (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
2070 (set-buffer declaration-buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2071 (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
2072 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2073 (find-file file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2074 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2075
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2076 ;; 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
2077 (push-mark)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2078 (goto-line line)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2079 (move-to-column column)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2080
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2081 ;; 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
2082 ;; 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
2083 ;; 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
2084 (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
2085 (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
2086 ))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2087
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2088
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2089 (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
2090 "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
2091 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
2092 (let ((orgpos (point))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2093 (newpos nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2094 (diff nil))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2095
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2096 (goto-char (point-max))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2097
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2098 ;; 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
2099 (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
2100
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2101 ;; 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
2102 (if (and
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2103 (not (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2104 (goto-char (match-end 0))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2105 (looking-at "_")))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2106 (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
2107 (or
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2108 ;; variable declaration ?
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2109 (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2110 (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
2111 (ada-goto-next-non-ws)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2112 (looking-at ":[^=]"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2113 ;; 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
2114 (save-excursion
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2115 (ada-goto-previous-word)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2116 (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
2117
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2118 ;; 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
2119 (if (or (not diff)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2120 (< (abs (- (point) orgpos)) diff))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2121 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2122 (setq newpos (point)
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2123 diff (abs (- newpos orgpos))))))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2124 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2125
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2126 (if newpos
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2127 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2128 (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
2129 (goto-char newpos))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2130 nil)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2131
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2132
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2133 ;; 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
2134 (defun ada-goto-parent ()
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2135 "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
2136 (interactive)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2137 (ada-require-project-file)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2138
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2139 (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
2140 (unit-name nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2141 (body-name nil)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2142 (ali-name nil))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2143 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2144 (set-buffer buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2145 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2146 (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
2147 (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
2148 (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
2149 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2150 (kill-buffer buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2151 (error "No parent unit !"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2152 (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
2153 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2154
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2155 ;; 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
2156 (goto-char (point-min))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2157 (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
2158 "%s[ \t]+\\([^ \t]+\\)[ \t]+"
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2159 "\\([^ \t\n]+\\)"))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2160 (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
2161 (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
2162 (kill-buffer buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2163 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2164
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2165 (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
2166
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2167 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2168 ;; 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
2169 (if ali-name
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2170 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2171 (find-file ali-name)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2172 (goto-char (point-min))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2173 (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
2174 "\\([^ \t]+\\)"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2175 (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
2176 (kill-buffer (current-buffer))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2177 )
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2178 )
25899
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
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2181 (find-file body-name)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2182 ))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2183
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2184 (defun ada-make-filename-from-adaname (adaname)
26227
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2185 "Determine the filename in which ADANAME is found.
1be4a89d81d3 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25899
diff changeset
2186 This is a GNAT specific function that uses gnatkrunch."
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2187 (let (krunch-buf)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2188 (setq krunch-buf (generate-new-buffer "*gkrunch*"))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2189 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2190 (set-buffer krunch-buf)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2191 ;; 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
2192 ;; 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
2193 ;; 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
2194 ;; 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
2195 ;; After: "AA.BB.CC" => aa-bb.cc
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2196 (call-process "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
2197 (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
2198 ;; 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
2199 (setq adaname (buffer-substring
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2200 (point-min)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2201 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2202 (goto-char (point-min))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2203 (end-of-line)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2204 (point))))
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2205 ;; 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
2206 (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
2207
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2208 (kill-buffer krunch-buf)))
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2209 adaname
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2210 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2211
57824
83de34d9f04f (ada-make-body-gnatstub): Don't use interactive-p.
Richard M. Stallman <rms@gnu.org>
parents: 56766
diff changeset
2212 (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
2213 "Create an Ada package body in the current buffer.
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2214 This function uses the `gnatstub' program to create the body.
74411
f76dd5acc4b2 (ada-check-current): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74378
diff changeset
2215 If INTERACTIVE is nil, kill the current buffer.
74074
55ec33a643b1 (ada-make-body-gnatstub): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 74003
diff changeset
2216 This function typically is to be hooked into `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
2217 (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
2218 (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
2219
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2220 (save-some-buffers nil nil)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2221
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2222 ;; If the current buffer is the body (as is the case when calling this
74074
55ec33a643b1 (ada-make-body-gnatstub): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 74003
diff changeset
2223 ;; function from ff-file-created-hook), then kill this temporary buffer
57824
83de34d9f04f (ada-make-body-gnatstub): Don't use interactive-p.
Richard M. Stallman <rms@gnu.org>
parents: 56766
diff changeset
2224 (unless interactive
74411
f76dd5acc4b2 (ada-check-current): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74378
diff changeset
2225 (set-buffer-modified-p nil)
f76dd5acc4b2 (ada-check-current): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74378
diff changeset
2226 (kill-buffer (current-buffer)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 47745
diff changeset
2227
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2228
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2229 ;; Make sure the current buffer is the spec (this might not be the case
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2230 ;; if for instance the user was asked for a project file)
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2231
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2232 (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
2233 (set-buffer (cadr (buffer-list))))
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2234
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2235 ;; Call the external process gnatstub
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2236 (let* ((gnatstub-opts (ada-treat-cmd-string ada-gnatstub-opts))
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2237 (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
2238 (output (concat (file-name-sans-extension filename) ".adb"))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2239 (gnatstub-cmd (concat "gnatstub " gnatstub-opts " " filename))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2240 (buffer (get-buffer-create "*gnatstub*")))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2241
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2242 (save-excursion
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2243 (set-buffer buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2244 (compilation-minor-mode 1)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2245 (erase-buffer)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2246 (insert gnatstub-cmd)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2247 (newline)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2248 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2249 ;; call gnatstub to create the body file
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2250 (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
2251
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2252 (if (save-excursion
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2253 (set-buffer buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2254 (goto-char (point-min))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2255 (search-forward "command not found" nil t))
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2256 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2257 (message "gnatstub was not found -- using the basic algorithm")
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2258 (sleep-for 2)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2259 (kill-buffer buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2260 (ada-make-body))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2261
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2262 ;; Else clean up the output
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2263
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2264 (if (file-exists-p output)
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2265 (progn
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2266 (find-file output)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2267 (kill-buffer buffer))
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2268
73563
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2269 ;; display the error buffer
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2270 (display-buffer buffer)
23b9a43eb0a5 (ada-compile-current): Don't add newlines to commands.
Juanma Barranquero <lekktu@gmail.com>
parents: 73378
diff changeset
2271 )
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2272 )))
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 (defun ada-xref-initialize ()
38441
ceb40bd97a77 (ada-xref-initialize): Fix call to add-hook.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
2275 "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
2276 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
2277 `find-file'."
74074
55ec33a643b1 (ada-make-body-gnatstub): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 74003
diff changeset
2278 (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
2279 (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
2280 (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
2281
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2282 ;; 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
2283 (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
2284
f6a0822e108d (ada-gnatls-args): New variable. Add support for specifying arguments to
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
2285 (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
2286 )
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2287
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2288 ;; ----- 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
2289
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2290 ;; 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
2291 (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
2292
73934
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2293 ;; 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
2294 (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
2295 'error-conditions
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2296 '(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
2297 (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
2298 'error-message
0a6f264ee5b6 (ada-prj-default-check-cmd): New variable, replacing deleted variable
Juanma Barranquero <lekktu@gmail.com>
parents: 73651
diff changeset
2299 "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
2300
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
2301 ;; Initializes the cross references to the runtime library
44466
f200fce92816 ada-mode no longer supports a different
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38441
diff changeset
2302 (ada-initialize-runtime-library "")
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
2303
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
2304 ;; Add these standard directories to the search path
50811
d29943b8f829 (uniquify-buffer-name-style, uniquify-after-kill-buffer-p)
Juanma Barranquero <lekktu@gmail.com>
parents: 50737
diff changeset
2305 (set 'ada-search-directories-internal
30408
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
2306 (append (mapcar 'directory-file-name 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
2307 ada-search-directories))
e3e2c9051c5f Got rid of all byte-compiler warnings on Emacs.
Gerd Moellmann <gerd@gnu.org>
parents: 26227
diff changeset
2308
25899
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2309 (provide 'ada-xref)
e5e3310746eb New file. Use Gnat for lookup and completion in Ada mode
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2310
87566
0c4a74c24677 * progmodes/ada-xref.el (ada-prj-find-prj-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87169
diff changeset
2311 ;; arch-tag: 415a39fe-577b-4676-b3b1-6ff6db7ca24e
32301
0f1f7e931493 Fix header line, copyright notice.
Dave Love <fx@gnu.org>
parents: 30408
diff changeset
2312 ;;; ada-xref.el ends here