annotate lisp/progmodes/ada-mode.el @ 36527:a21a2f14a765

*** empty log message ***
author Gerd Moellmann <gerd@gnu.org>
date Mon, 05 Mar 2001 10:42:09 +0000
parents c49a286df476
children d42c9135a92d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1 ;; @(#) ada-mode.el --- major-mode for editing Ada source.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2
32300
5acb191f2a15 (ada-mode-menu): Add name to menu map.
Dave Love <fx@gnu.org>
parents: 30411
diff changeset
3 ;; Copyright (C) 1994, 95, 97, 98, 99, 2000 Free Software Foundation, Inc.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5 ;; Author: Rolf Ebert <ebert@inf.enst.fr>
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
6 ;; Markus Heritsch <Markus.Heritsch@studbox.uni-stuttgart.de>
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
7 ;; Emmanuel Briot <briot@gnat.com>
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
8 ;; Maintainer: Emmanuel Briot <briot@gnat.com>
35959
c49a286df476 (ada-popup-key): Fix :type.
Dave Love <fx@gnu.org>
parents: 35263
diff changeset
9 ;; Ada Core Technologies's version: $Revision: 1.38 $
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
10 ;; Keywords: languages ada
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
11
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
12 ;; This file is not part of GNU Emacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
13
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
14 ;; This program is free software; you can redistribute it and/or modify
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; the Free Software Foundation; either version 2, or (at your option)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; any later version.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
19 ;; This program is distributed in the hope that it will be useful,
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; GNU General Public License for more details.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
26 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
27
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
28 ;;; Commentary:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
29 ;;; This mode is a major mode for editing Ada83 and Ada95 source code.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
30 ;;; This is a major rewrite of the file packaged with Emacs-20. The
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
31 ;;; ada-mode is composed of four lisp file, ada-mode.el, ada-xref.el,
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
32 ;;; ada-prj.el and ada-stmt.el. Only this file (ada-mode.el) is
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
33 ;;; completely independent from the GNU Ada compiler Gnat, distributed
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
34 ;;; by Ada Core Technologies. All the other files rely heavily on
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
35 ;;; features provides only by Gnat.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
37 ;;; Note: this mode will not work with Emacs 19. If you are on a VMS
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
38 ;;; system, where the latest version of Emacs is 19.28, you will need
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
39 ;;; another file, called ada-vms.el, that provides some required
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
40 ;;; functions.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
41
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
42 ;;; Usage:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
43 ;;; Emacs should enter Ada mode automatically when you load an Ada file.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
44 ;;; By default, the valid extensions for Ada files are .ads, .adb or .ada
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
45 ;;; If the ada-mode does not start automatically, then simply type the
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
46 ;;; following command :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
47 ;;; M-x ada-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
48 ;;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
49 ;;; By default, ada-mode is configured to take full advantage of the GNAT
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
50 ;;; compiler (the menus will include the cross-referencing features,...).
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
51 ;;; If you are using another compiler, you might want to set the following
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
52 ;;; variable in your .emacs (Note: do not set this in the ada-mode-hook, it
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
53 ;;; won't work) :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
54 ;;; (setq ada-which-compiler 'generic)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
55 ;;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
56 ;;; This mode requires find-file.el to be present on your system.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
57
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
58 ;;; History:
11199
394f205af26d Fix comments.
Karl Heuer <kwzh@gnu.org>
parents: 10880
diff changeset
59 ;;; The first Ada mode for GNU Emacs was written by V. Broman in
394f205af26d Fix comments.
Karl Heuer <kwzh@gnu.org>
parents: 10880
diff changeset
60 ;;; 1985. He based his work on the already existing Modula-2 mode.
394f205af26d Fix comments.
Karl Heuer <kwzh@gnu.org>
parents: 10880
diff changeset
61 ;;; This was distributed as ada.el in versions of Emacs prior to 19.29.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 ;;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;;; Lynn Slater wrote an extensive Ada mode in 1989. It consisted of
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;;; several files with support for dired commands and other nice
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;;; things. It is currently available from the PAL
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;;; (wuarchive.wustl.edu:/languages/ada) as ada-mode-1.06a.tar.Z.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;;; The probably very first Ada mode (called electric-ada.el) was
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;;; written by Steven D. Litvintchouk and Steven M. Rosen for the
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;;; Gosling Emacs. L. Slater based his development on ada.el and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;;; electric-ada.el.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
73 ;;; A complete rewrite by M. Heritsch and R. Ebert has been done.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
74 ;;; Some ideas from the Ada mode mailing list have been
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 ;;; added. Some of the functionality of L. Slater's mode has not
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 ;;; (yet) been recoded in this new mode. Perhaps you prefer sticking
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;;; to his version.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
79 ;;; A complete rewrite for Emacs-20 / Gnat-3.11 has been done by Ada Core
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
80 ;;; Technologies. Please send bugs to briot@gnat.com
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
81
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
82 ;;; Credits:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
83 ;;; Many thanks to John McCabe <john@assen.demon.co.uk> for sending so
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
84 ;;; many patches included in this package.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
85 ;;; Christian Egli <Christian.Egli@hcsd.hac.com>:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
86 ;;; ada-imenu-generic-expression
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
87 ;;; Many thanks also to the following persons that have contributed one day
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
88 ;;; to the ada-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
89 ;;; Philippe Waroquiers (PW) <philippe@cfmu.eurocontrol.be> in particular,
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
90 ;;; woodruff@stc.llnl.gov (John Woodruff)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
91 ;;; jj@ddci.dk (Jesper Joergensen)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
92 ;;; gse@ocsystems.com (Scott Evans)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
93 ;;; comar@gnat.com (Cyrille Comar)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
94 ;;; stephen.leake@gsfc.nasa.gov (Stephen Leake)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
95 ;;; and others for their valuable hints.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
96
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
97 ;;; Code:
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
98 ;;; Note: Every function in this package is compiler-independent.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
99 ;;; The names start with ada-
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
100 ;;; The variables that the user can edit can all be modified through
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
101 ;;; the customize mode. They are sorted in alphabetical order in this
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
102 ;;; file.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
103
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
104
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
105 ;; this function is needed at compile time
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
106 (eval-and-compile
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
107 (defun ada-check-emacs-version (major minor &optional is-xemacs)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
108 "Returns t if Emacs's version is greater or equal to MAJOR.MINOR.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
109 If IS-XEMACS is non-nil, check for XEmacs instead of Emacs."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
110 (let ((xemacs-running (or (string-match "Lucid" emacs-version)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
111 (string-match "XEmacs" emacs-version))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
112 (and (or (and is-xemacs xemacs-running)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
113 (not (or is-xemacs xemacs-running)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
114 (or (> emacs-major-version major)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
115 (and (= emacs-major-version major)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
116 (>= emacs-minor-version minor)))))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
117
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
118
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
119 ;; We create a constant for that, for efficiency only
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
120 ;; This should be evaluated both at compile time, only a runtime
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
121 (eval-and-compile
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
122 (defconst ada-xemacs (and (boundp 'running-xemacs)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
123 (symbol-value 'running-xemacs))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
124 "Return t if we are using XEmacs."))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
125
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
126 (unless ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
127 (require 'outline))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
128
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
129 (eval-and-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
130 (condition-case nil (require 'find-file) (error nil)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
131
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
132 ;; This call should not be made in the release that is done for the
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
133 ;; official FSF Emacs, since it does nothing useful for the latest version
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
134 ;; (require 'ada-support)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
135
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
136 (defvar ada-mode-hook nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
137 "*List of functions to call when Ada mode is invoked.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
138 This hook is automatically executed after the ada-mode is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
139 fully loaded.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
140 This is a good place to add Ada environment specific bindings.")
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
141
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
142 (defgroup ada nil
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
143 "Major mode for editing Ada source in Emacs."
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
144 :group 'languages)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
145
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
146 (defcustom ada-auto-case t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
147 "*Non-nil means automatically change case of preceding word while typing.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
148 Casing is done according to `ada-case-keyword', `ada-case-identifier'
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
149 and `ada-case-attribute'."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
150 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
151
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
152 (defcustom ada-broken-decl-indent 0
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
153 "*Number of columns to indent a broken declaration.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
154
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
155 An example is :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
156 declare
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
157 A,
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
158 >>>>>B : Integer; -- from ada-broken-decl-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
159 :type 'integer :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
160
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
161 (defcustom ada-broken-indent 2
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
162 "*Number of columns to indent the continuation of a broken line.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
163
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
164 An example is :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
165 My_Var : My_Type := (Field1 =>
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
166 >>>>>>>>>Value); -- from ada-broken-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
167 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
168
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
169 (defcustom ada-case-attribute 'ada-capitalize-word
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
170 "*Function to call to adjust the case of Ada attributes.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
171 It may be `downcase-word', `upcase-word', `ada-loose-case-word',
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
172 `ada-capitalize-word' or `ada-no-auto-case'."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
173 :type '(choice (const downcase-word)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
174 (const upcase-word)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
175 (const ada-capitalize-word)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
176 (const ada-loose-case-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
177 (const ada-no-auto-case))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
178 :group 'ada)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
180 (defcustom ada-case-exception-file '("~/.emacs_case_exceptions")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
181 "*List of special casing exceptions dictionaries for identifiers.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
182 The first file is the one where new exceptions will be saved by Emacs
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
183 when you call `ada-create-case-exception'.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
184
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
185 These files should contain one word per line, that gives the casing
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
186 to be used for that word in Ada files. Each line can be terminated by
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
187 a comment."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
188 :type '(repeat (file))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
189 :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
190
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
191 (defcustom ada-case-keyword 'downcase-word
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
192 "*Function to call to adjust the case of an Ada keywords.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
193 It may be `downcase-word', `upcase-word', `ada-loose-case-word' or
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
194 `ada-capitalize-word'."
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
195 :type '(choice (const downcase-word)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
196 (const upcase-word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
197 (const ada-capitalize-word)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
198 (const ada-loose-case-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
199 (const ada-no-auto-case))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
200 :group 'ada)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
201
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
202 (defcustom ada-case-identifier 'ada-loose-case-word
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
203 "*Function to call to adjust the case of an Ada identifier.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
204 It may be `downcase-word', `upcase-word', `ada-loose-case-word' or
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
205 `ada-capitalize-word'."
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
206 :type '(choice (const downcase-word)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
207 (const upcase-word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
208 (const ada-capitalize-word)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
209 (const ada-loose-case-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
210 (const ada-no-auto-case))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
211 :group 'ada)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
212
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
213 (defcustom ada-clean-buffer-before-saving t
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
214 "*Non-nil means remove trailing spaces and untabify the buffer before saving."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
215 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
216
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
217 (defcustom ada-indent 3
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
218 "*Size of Ada indentation.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
219
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
220 An example is :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
221 procedure Foo is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
222 begin
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
223 >>>>>>>>>>null; -- from ada-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
224 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
225
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
226 (defcustom ada-indent-after-return t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
227 "*Non-nil means automatically indent after RET or LFD."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
228 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
229
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
230 (defcustom ada-indent-align-comments t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
231 "*Non-nil means align comments on previous line comments, if any.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
232 If nil, indentation is calculated as usual.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
233 Note that indentation is calculated only if `ada-indent-comment-as-code' is t.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
234
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
235 For instance:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
236 A := 1; -- A multi-line comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
237 -- aligned if ada-indent-align-comments is t"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
238 :type 'boolean :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
239
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
240 (defcustom ada-indent-comment-as-code t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
241 "*Non-nil means indent comment lines as code.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
242 Nil means do not auto-indent comments."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
243 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
244
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
245 (defcustom ada-indent-is-separate t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
246 "*Non-nil means indent 'is separate' or 'is abstract' if on a single line."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
247 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
248
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
249 (defcustom ada-indent-record-rel-type 3
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
250 "*Indentation for 'record' relative to 'type' or 'use'.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
251
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
252 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
253 type A is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
254 >>>>>>>>>>>record -- from ada-indent-record-rel-type"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
255 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
256
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
257 (defcustom ada-indent-renames ada-broken-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
258 "*Indentation for renames relative to the matching function statement.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
259 If ada-indent-return is null or negative, the indentation is done relative to
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
260 the open parenthesis (if there is no parenthesis, ada-broken-indent is used).
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
261
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
262 An example is:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
263 function A (B : Integer)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
264 return C; -- from ada-indent-return
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
265 >>>renames Foo; -- from ada-indent-renames"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
266 :type 'integer :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
267
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
268 (defcustom ada-indent-return 0
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
269 "*Indentation for 'return' relative to the matching 'function' statement.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
270 If ada-indent-return is null or negative, the indentation is done relative to
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
271 the open parenthesis (if there is no parenthesis, ada-broken-indent is used).
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
272
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
273 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
274 function A (B : Integer)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
275 >>>>>return C; -- from ada-indent-return"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
276 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
277
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
278 (defcustom ada-indent-to-open-paren t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
279 "*Non-nil means indent according to the innermost open parenthesis."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
280 :type 'boolean :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
281
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
282 (defcustom ada-fill-comment-prefix "-- "
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
283 "*Text inserted in the first columns when filling a comment paragraph.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
284 Note: if you modify this variable, you will have to restart the ada-mode to
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
285 reread this variable."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
286 :type 'string :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
287
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
288 (defcustom ada-fill-comment-postfix " --"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
289 "*Text inserted at the end of each line when filling a comment paragraph.
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
290 with `ada-fill-comment-paragraph-postfix'."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
291 :type 'string :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
292
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
293 (defcustom ada-label-indent -4
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
294 "*Number of columns to indent a label.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
295
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
296 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
297 procedure Foo is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
298 begin
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
299 >>>>>>>>>>>>Label: -- from ada-label-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
300 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
301
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
302 (defcustom ada-language-version 'ada95
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
303 "*Do we program in `ada83' or `ada95'?"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
304 :type '(choice (const ada83) (const ada95)) :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
305
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
306 (defcustom ada-move-to-declaration nil
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
307 "*Non-nil means `ada-move-to-start' moves point to the subprogram declaration,
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
308 not to 'begin'."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
309 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
310
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
311 (defcustom ada-popup-key '[down-mouse-3]
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
312 "*Key used for binding the contextual menu.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
313 If nil, no contextual menu is available."
35959
c49a286df476 (ada-popup-key): Fix :type.
Dave Love <fx@gnu.org>
parents: 35263
diff changeset
314 :type '(restricted-sexp :match-alternatives (stringp vectorp))
35263
9d5252e923a3 (ada-popup-key): Fix last change.
Dave Love <fx@gnu.org>
parents: 35182
diff changeset
315 :group 'ada)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
316
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
317 (defcustom ada-search-directories
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
318 '("." "$ADA_INCLUDE_PATH" "/usr/adainclude" "/usr/local/adainclude"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
319 "/opt/gnu/adainclude")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
320 "*List of directories to search for Ada files.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
321 See the description for the `ff-search-directories' variable.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
322 Emacs will automatically add the paths defined in your project file, and if you
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
323 are using the GNAT compiler the output of the gnatls command to find where the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
324 runtime really is."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
325 :type '(repeat (choice :tag "Directory"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
326 (const :tag "default" nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
327 (directory :format "%v")))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
328 :group 'ada)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
329
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
330 (defcustom ada-stmt-end-indent 0
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
331 "*Number of columns to indent the end of a statement on a separate line.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
332
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
333 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
334 if A = B
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
335 >>>>>>>>>>>then -- from ada-stmt-end-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
336 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
337
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
338 (defcustom ada-tab-policy 'indent-auto
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
339 "*Control the behavior of the TAB key.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
340 Must be one of :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
341 `indent-rigidly' : always adds ada-indent blanks at the beginning of the line.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
342 `indent-auto' : use indentation functions in this file.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
343 `always-tab' : do indent-relative."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
344 :type '(choice (const indent-auto)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
345 (const indent-rigidly)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
346 (const always-tab))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
347 :group 'ada)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
349 (defcustom ada-use-indent ada-broken-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
350 "*Indentation for the lines in a 'use' statement.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
351
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
352 An example is:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
353 use Ada.Text_IO,
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
354 >>>>>Ada.Numerics; -- from ada-use-indent"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
355 :type 'integer :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
356
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
357 (defcustom ada-when-indent 3
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
358 "*Indentation for 'when' relative to 'exception' or 'case'.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
359
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
360 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
361 case A is
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
362 >>>>>>>>when B => -- from ada-when-indent"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
363 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
364
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
365 (defcustom ada-with-indent ada-broken-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
366 "*Indentation for the lines in a 'with' statement.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
367
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
368 An example is:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
369 with Ada.Text_IO,
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
370 >>>>>Ada.Numerics; -- from ada-with-indent"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
371 :type 'integer :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
372
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
373 (defcustom ada-which-compiler 'gnat
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
374 "*Name of the compiler to use.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
375 This will determine what features are made available through the ada-mode.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
376 The possible choices are :
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
377 `gnat': Use Ada Core Technologies' Gnat compiler. Add some cross-referencing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
378 features
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
379 `generic': Use a generic compiler"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
380 :type '(choice (const gnat)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
381 (const generic))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
382 :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
383
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
384
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 ;;; ---- end of user configurable variables
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
388 (defvar ada-body-suffixes '(".adb")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
389 "List of possible suffixes for Ada body files.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
390 The extensions should include a `.' if needed.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
391
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
392 (defvar ada-spec-suffixes '(".ads")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
393 "List of possible suffixes for Ada spec files.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
394 The extensions should include a `.' if needed.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
395
32300
5acb191f2a15 (ada-mode-menu): Add name to menu map.
Dave Love <fx@gnu.org>
parents: 30411
diff changeset
396 (defvar ada-mode-menu (make-sparse-keymap "Ada")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
397 "Menu for ada-mode.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
398
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
399 (defvar ada-mode-map (make-sparse-keymap)
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
400 "Local keymap used for Ada mode.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
402 (defvar ada-mode-abbrev-table nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
403 "Local abbrev table for Ada mode.")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
404
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (defvar ada-mode-syntax-table nil
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 "Syntax table to be used for editing Ada source code.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
408 (defvar ada-mode-symbol-syntax-table nil
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
409 "Syntax table for Ada, where `_' is a word constituent.")
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
410
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
411 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
412 (defconst ada-83-string-keywords
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
413 '("abort" "abs" "accept" "access" "all" "and" "array" "at" "begin"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
414 "body" "case" "constant" "declare" "delay" "delta" "digits" "do"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
415 "else" "elsif" "end" "entry" "exception" "exit" "for" "function"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
416 "generic" "goto" "if" "in" "is" "limited" "loop" "mod" "new"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
417 "not" "null" "of" "or" "others" "out" "package" "pragma" "private"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
418 "procedure" "raise" "range" "record" "rem" "renames" "return"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
419 "reverse" "select" "separate" "subtype" "task" "terminate" "then"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
420 "type" "use" "when" "while" "with" "xor")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
421 "List of Ada keywords.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
422 This variable is used to define `ada-83-keywords' and `ada-95-keywords'"))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
423
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
424 (defvar ada-ret-binding nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
425 "Variable to save key binding of RET when casing is activated.")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
426
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
427 (defvar ada-case-exception '()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
428 "Alist of words (entities) that have special casing.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
429
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
430 (defvar ada-lfd-binding nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
431 "Variable to save key binding of LFD when casing is activated.")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
432
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
433 (defvar ada-other-file-alist nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
434 "Variable used by find-file to find the name of the other package.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
435 See `ff-other-file-alist'.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
436
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
437 ;;; ---- Below are the regexp used in this package for parsing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
438
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 (defconst ada-83-keywords
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
440 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
441 (concat "\\<" (regexp-opt ada-83-string-keywords t) "\\>"))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
442 "Regular expression for looking at Ada83 keywords.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
444 (defconst ada-95-keywords
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
445 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
446 (concat "\\<" (regexp-opt
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
447 (append
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
448 '("abstract" "aliased" "protected" "requeue"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
449 "tagged" "until")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
450 ada-83-string-keywords) t) "\\>"))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
451 "Regular expression for looking at Ada95 keywords.")
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
452
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
453 (defvar ada-keywords ada-95-keywords
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
454 "Regular expression for looking at Ada keywords.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
456 (defconst ada-ident-re
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
457 "\\(\\sw\\|[_.]\\)+"
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
458 "Regexp matching Ada (qualified) identifiers.")
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
459
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 (defvar ada-procedure-start-regexp
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
461 "^[ \t]*\\(procedure\\|function\\|task\\)[ \t\n]+\\(\\(\\sw\\|[_.]\\)+\\)"
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 "Regexp used to find Ada procedures/functions.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 (defvar ada-package-start-regexp
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 "^[ \t]*\\(package\\)"
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
466 "Regexp used to find Ada packages.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 ;;; ---- regexps for indentation functions
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 (defvar ada-block-start-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
472 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
473 (concat "\\<\\(" (regexp-opt '("begin" "declare" "else"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
474 "exception" "generic" "loop" "or"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
475 "private" "select" ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
476 "\\|\\(\\(limited\\|abstract\\|tagged\\)[ \t\n]+\\)*record\\)\\>"))
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
477 "Regexp for keywords starting Ada blocks.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (defvar ada-end-stmt-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
480 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
481 (concat "\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
482 ";" "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
483 "=>[ \t]*$" "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
484 "^[ \t]*separate[ \t]*(\\(\\sw\\|[_.]\\)+)" "\\|"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
485 "\\<" (regexp-opt '("begin" "declare" "is" "do" "else" "generic"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
486 "loop" "private" "record" "select"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
487 "then abort" "then") t) "\\>" "\\|"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
488 "^[ \t]*" (regexp-opt '("function" "package" "procedure")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
489 t) "\\>\\(\\sw\\|[ \t_.]\\)+\\<is\\>" "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
490 "^[ \t]*exception\\>"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
491 "\\)") )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 "Regexp of possible ends for a non-broken statement.
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
493 A new statement starts after these.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
495 (defvar ada-matching-start-re
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
496 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
497 (concat "\\<"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
498 (regexp-opt
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
499 '("end" "loop" "select" "begin" "case" "do"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
500 "if" "task" "package" "record" "protected") t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
501 "\\>"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
502 "Regexp used in ada-goto-matching-start.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
503
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
504 (defvar ada-matching-decl-start-re
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
505 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
506 (concat "\\<"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
507 (regexp-opt
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
508 '("is" "separate" "end" "declare" "if" "new" "begin" "generic" "when") t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
509 "\\>"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
510 "Regexp used in ada-goto-matching-decl-start.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
511
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (defvar ada-loop-start-re
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 "\\<\\(for\\|while\\|loop\\)\\>"
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 "Regexp for the start of a loop.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 (defvar ada-subprog-start-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
517 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
518 (concat "\\<" (regexp-opt '("accept" "entry" "function" "package" "procedure"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
519 "protected" "task") t) "\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 "Regexp for the start of a subprogram.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
522 (defvar ada-named-block-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
523 "[ \t]*\\(\\sw\\|_\\)+[ \t]*:[^=]"
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
524 "Regexp of the name of a block or loop.")
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
525
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
526 (defvar ada-contextual-menu-on-identifier nil
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
527 "Set to true when the right mouse button was clicked on an identifier.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
528
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
529 (defvar ada-contextual-menu-last-point nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
530 "Position of point just before displaying the menu.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
531 This is a list (point buffer).
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
532 Since `ada-popup-menu' moves the point where the user clicked, the region
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
533 is modified. Therefore no command from the menu knows what the user selected
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
534 before displaying the contextual menu.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
535 To get the original region, restore the point to this position before
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
536 calling `region-end' and `region-beginning'.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
537 Modify this variable if you want to restore the point to another position.")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
538
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
539 (defvar ada-contextual-menu
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
540 (if ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
541 '("Ada"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
542 ["Goto Declaration/Body"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
543 (ada-call-from-contextual-menu 'ada-point-and-xref)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
544 :included (and (functionp 'ada-point-and-xref)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
545 ada-contextual-menu-on-identifier)]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
546 ["Goto Previous Reference"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
547 (ada-call-from-contextual-menu 'ada-xref-goto-previous-reference)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
548 :included (functionp 'ada-xref-goto-previous-reference)]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
549 ["List References" ada-find-references
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
550 :included ada-contextual-menu-on-identifier]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
551 ["-" nil nil]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
552 ["Other File" ff-find-other-file]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
553 ["Goto Parent Unit" ada-goto-parent]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
554 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
555
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
556 (let ((map (make-sparse-keymap "Ada")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
557 ;; The identifier part
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
558 (if (equal ada-which-compiler 'gnat)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
559 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
560 (define-key-after map [Ref]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
561 '(menu-item "Goto Declaration/Body"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
562 (lambda()(interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
563 (ada-call-from-contextual-menu
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
564 'ada-point-and-xref))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
565 :visible
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
566 (and (functionp 'ada-point-and-xref)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
567 ada-contextual-menu-on-identifier))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
568 t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
569 (define-key-after map [Prev]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
570 '(menu-item "Goto Previous Reference"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
571 (lambda()(interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
572 (ada-call-from-contextual-menu
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
573 'ada-xref-goto-previous-reference))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
574 :visible
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
575 (functionp 'ada-xref-goto-previous-reference))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
576 t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
577 (define-key-after map [List]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
578 '(menu-item "List References"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
579 ada-find-references
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
580 :visible ada-contextual-menu-on-identifier) t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
581 (define-key-after map [-] '("-" nil) t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
582 ))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
583 (define-key-after map [Other] '("Other file" . ff-find-other-file) t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
584 (define-key-after map [Parent] '("Goto Parent Unit" . ada-goto-parent)t)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
585 map))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
586 "Defines the menu to use when the user presses the right mouse button.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
587 The variable `ada-contextual-menu-on-identifier' will be set to t before
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
588 displaying the menu if point was on an identifier."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
589 )
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
590
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
591
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
592 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
593 ;; Support for imenu (see imenu.el)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
594 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
595
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
596 (defconst ada-imenu-subprogram-menu-re
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
597 "^[ \t]*\\(procedure\\|function\\)[ \t\n]+\\(\\(\\sw\\|_\\)+\\)[ \t\n]*\\([ \t\n]\\|([^)]+)\\)[ \t\n]*\\(return[ \t\n]+\\(\\sw\\|[_.]\\)+[ \t\n]*\\)?is[ \t\n]")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
598
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
599 (defvar ada-imenu-generic-expression
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
600 (list
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
601 (list nil ada-imenu-subprogram-menu-re 2)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
602 (list "*Specs*"
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
603 (concat
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
604 "^[ \t]*\\(procedure\\|function\\)[ \t\n]+\\(\\(\\sw\\|_\\)+\\)"
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
605 "\\("
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
606 "\\([ \t\n]+\\|[ \t\n]*([^)]+)\\)";; parameter list or simple space
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
607 "\\([ \t\n]*return[ \t\n]+\\(\\sw\\|[_.]\\)+[ \t\n]*\\)?"
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
608 "\\)?;") 2)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
609 '("*Tasks*" "^[ \t]*task[ \t]+\\(\\(body\\|type\\)[ \t]+\\)?\\(\\(\\sw\\|_\\)+\\)" 3)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
610 '("*Type Defs*" "^[ \t]*\\(sub\\)?type[ \t]+\\(\\(\\sw\\|_\\)+\\)" 2)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
611 '("*Packages*" "^[ \t]*package[ \t]+\\(\\(body[ \t]+\\)?\\(\\sw\\|[_.]\\)+\\)" 1))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
612 "Imenu generic expression for Ada mode.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
613 See `imenu-generic-expression'. This variable will create two submenus, one
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
614 for type and subtype definitions, the other for subprograms declarations.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
615 The main menu will reference the bodies of the subprograms.")
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
616
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
617
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
618
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
619 ;;------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
620 ;; Support for compile.el
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
621 ;;------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
622
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
623 (defun ada-compile-mouse-goto-error ()
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
624 "Mouse interface for ada-compile-goto-error."
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
625 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
626 (mouse-set-point last-input-event)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
627 (ada-compile-goto-error (point))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
628 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
629
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
630 (defun ada-compile-goto-error (pos)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
631 "Replaces `compile-goto-error' from compile.el.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
632 If POS is on a file and line location, go to this position. It adds to
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
633 compile.el the capacity to go to a reference in an error message.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
634 For instance, on this line:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
635 foo.adb:61:11: [...] in call to size declared at foo.ads:11
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
636 both file locations can be clicked on and jumped to."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
637 (interactive "d")
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
638 (goto-char pos)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
639
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
640 (skip-chars-backward "-a-zA-Z0-9_:./\\")
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
641 (cond
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
642 ;; special case: looking at a filename:line not at the beginning of a line
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
643 ((and (not (bolp))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
644 (looking-at
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
645 "\\([-_.a-zA-Z0-9]+\\):\\([0-9]+\\)\\(:\\([0-9]+\\)\\)?"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
646 (let ((line (match-string 2))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
647 (error-pos (point-marker))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
648 source)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
649 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
650 (save-restriction
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
651 (widen)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
652 ;; Use funcall so as to prevent byte-compiler warnings
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
653 (set-buffer (funcall (symbol-function 'compilation-find-file)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
654 (point-marker) (match-string 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
655 "./"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
656 (if (stringp line)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
657 (goto-line (string-to-number line)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
658 (setq source (point-marker))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
659 (funcall (symbol-function 'compilation-goto-locus)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
660 (cons source error-pos))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
661 ))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
662
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
663 ;; otherwise, default behavior
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
664 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
665 (funcall (symbol-function 'compile-goto-error)))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
666 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
667 (recenter))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
668
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
669
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
670 ;;-------------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
671 ;; Grammar related function
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
672 ;; The functions below work with the syntax class of the characters in an Ada
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
673 ;; buffer. Two syntax tables are created, depending on whether we want '_'
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
674 ;; to be considered as part of a word or not.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
675 ;; Some characters may have multiple meanings depending on the context:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
676 ;; - ' is either the beginning of a constant character or an attribute
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
677 ;; - # is either part of a based litteral or a gnatprep statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
678 ;; - " starts a string, but not if inside a constant character.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
679 ;; - ( and ) should be ignored if inside a constant character.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
680 ;; Thus their syntax property is changed automatically, and we can still use
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
681 ;; the standard Emacs functions for sexp (see `ada-in-string-p')
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
682 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
683 ;; On Emacs, this is done through the `syntax-table' text property. The
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
684 ;; modification is done automatically each time the user as typed a new
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
685 ;; character. This is already done in `font-lock-mode' (in
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
686 ;; `font-lock-syntactic-keywords', so we take advantage of the existing
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
687 ;; mechanism. If font-lock-mode is not activated, we do it by hand in
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
688 ;; `ada-after-change-function', thanks to `ada-deactivate-properties' and
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
689 ;; `ada-initialize-properties'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
690 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
691 ;; on XEmacs, the `syntax-table' property does not exist and we have to use a
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
692 ;; slow advice to `parse-partial-sexp' to do the same thing.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
693 ;; When executing parse-partial-sexp, we simply modify the strings before and
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
694 ;; after, so that the special constants '"', '(' and ')' do not interact
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
695 ;; with parse-partial-sexp.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
696 ;; Note: this code is slow and needs to be rewritten as soon as something
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
697 ;; better is available on XEmacs.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
698 ;;-------------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
699
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
700 (defun ada-create-syntax-table ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
701 "Create the two syntax tables use in the Ada mode.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
702 The standard table declares `_' as a symbol constituent, the second one
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
703 declares it as a word constituent."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
704 (interactive)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
705 (setq ada-mode-syntax-table (make-syntax-table))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
706 (set-syntax-table ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
707
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
708 ;; define string brackets (`%' is alternative string bracket, but
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
709 ;; almost never used as such and throws font-lock and indentation
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
710 ;; off the track.)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
711 (modify-syntax-entry ?% "$" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
712 (modify-syntax-entry ?\" "\"" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
713
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
714 (modify-syntax-entry ?: "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
715 (modify-syntax-entry ?\; "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
716 (modify-syntax-entry ?& "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
717 (modify-syntax-entry ?\| "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
718 (modify-syntax-entry ?+ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
719 (modify-syntax-entry ?* "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
720 (modify-syntax-entry ?/ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
721 (modify-syntax-entry ?= "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
722 (modify-syntax-entry ?< "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
723 (modify-syntax-entry ?> "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
724 (modify-syntax-entry ?$ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
725 (modify-syntax-entry ?\[ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
726 (modify-syntax-entry ?\] "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
727 (modify-syntax-entry ?\{ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
728 (modify-syntax-entry ?\} "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
729 (modify-syntax-entry ?. "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
730 (modify-syntax-entry ?\\ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
731 (modify-syntax-entry ?\' "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
732
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
733 ;; a single hyphen is punctuation, but a double hyphen starts a comment
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
734 (modify-syntax-entry ?- ". 12" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
735
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
736 ;; See the comment above on grammar related function for the special
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
737 ;; setup for '#'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
738 (if ada-xemacs
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
739 (modify-syntax-entry ?# "<" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
740 (modify-syntax-entry ?# "$" ada-mode-syntax-table))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
741
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
742 ;; and \f and \n end a comment
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
743 (modify-syntax-entry ?\f "> " ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
744 (modify-syntax-entry ?\n "> " ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
745
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
746 ;; define what belongs in Ada symbols
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
747 (modify-syntax-entry ?_ "_" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
748
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
749 ;; define parentheses to match
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
750 (modify-syntax-entry ?\( "()" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
751 (modify-syntax-entry ?\) ")(" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
752
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
753 (setq ada-mode-symbol-syntax-table (copy-syntax-table ada-mode-syntax-table))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
754 (modify-syntax-entry ?_ "w" ada-mode-symbol-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
755 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
756
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
757 ;; Support of special characters in XEmacs (see the comments at the beginning
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
758 ;; of the section on Grammar related functions).
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
759
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
760 (if ada-xemacs
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
761 (defadvice parse-partial-sexp (around parse-partial-sexp-protect-constants)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
762 "Handles special character constants and gnatprep statements."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
763 (let (change)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
764 (if (< to from)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
765 (let ((tmp from))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
766 (setq from to to tmp)))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
767 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
768 (goto-char from)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
769 (while (re-search-forward "'\\([(\")#]\\)'" to t)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
770 (setq change (cons (list (match-beginning 1)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
771 1
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
772 (match-string 1))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
773 change))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
774 (replace-match "'A'"))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
775 (goto-char from)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
776 (while (re-search-forward "\\(#[0-9a-fA-F]*#\\)" to t)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
777 (setq change (cons (list (match-beginning 1)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
778 (length (match-string 1))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
779 (match-string 1))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
780 change))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
781 (replace-match (make-string (length (match-string 1)) ?@))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
782 ad-do-it
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
783 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
784 (while change
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
785 (goto-char (caar change))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
786 (delete-char (cadar change))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
787 (insert (caddar change))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
788 (setq change (cdr change)))))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
789
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
790 (defun ada-deactivate-properties ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
791 "Deactivate ada-mode's properties handling.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
792 This would be a duplicate of font-lock if both are used at the same time."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
793 (remove-hook 'after-change-functions 'ada-after-change-function t))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
794
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
795 (defun ada-initialize-properties ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
796 "Initialize some special text properties in the whole buffer.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
797 In particular, character constants are said to be strings, #...# are treated
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
798 as numbers instead of gnatprep comments."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
799 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
800 (save-restriction
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
801 (widen)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
802 (goto-char (point-min))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
803 (while (re-search-forward "'.'" nil t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
804 (add-text-properties (match-beginning 0) (match-end 0)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
805 '(syntax-table ("'" . ?\"))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
806 (goto-char (point-min))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
807 (while (re-search-forward "^[ \t]*#" nil t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
808 (add-text-properties (match-beginning 0) (match-end 0)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
809 '(syntax-table (11 . 10))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
810 (set-buffer-modified-p nil)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
811
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
812 ;; Setting this only if font-lock is not set won't work
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
813 ;; if the user activates or deactivates font-lock-mode,
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
814 ;; but will make things faster most of the time
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
815 (make-local-hook 'after-change-functions)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
816 (add-hook 'after-change-functions 'ada-after-change-function nil t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
817 )))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
818
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
819 (defun ada-after-change-function (beg end old-len)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
820 "Called when the region between BEG and END was changed in the buffer.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
821 OLD-LEN indicates what the length of the replaced text was."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
822 (let ((inhibit-point-motion-hooks t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
823 (eol (point)))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
824 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
825 (save-match-data
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
826 (beginning-of-line)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
827 (remove-text-properties (point) eol '(syntax-table nil))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
828 (while (re-search-forward "'.'" eol t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
829 (add-text-properties (match-beginning 0) (match-end 0)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
830 '(syntax-table ("'" . ?\"))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
831 (beginning-of-line)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
832 (if (looking-at "^[ \t]*#")
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
833 (add-text-properties (match-beginning 0) (match-end 0)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
834 '(syntax-table (11 . 10))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
835 ))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
836
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
837 ;;------------------------------------------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
838 ;; Testing the grammatical context
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
839 ;;------------------------------------------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
840
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
841 (defsubst ada-in-comment-p (&optional parse-result)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
842 "Returns t if inside a comment."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
843 (nth 4 (or parse-result
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
844 (parse-partial-sexp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
845 (save-excursion (beginning-of-line) (point)) (point)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
846
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
847 (defsubst ada-in-string-p (&optional parse-result)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
848 "Returns t if point is inside a string.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
849 If parse-result is non-nil, use is instead of calling parse-partial-sexp."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
850 (nth 3 (or parse-result
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
851 (parse-partial-sexp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
852 (save-excursion (beginning-of-line) (point)) (point)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
853
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
854 (defsubst ada-in-string-or-comment-p (&optional parse-result)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
855 "Returns t if inside a comment or string."
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
856 (setq parse-result (or parse-result
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
857 (parse-partial-sexp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
858 (save-excursion (beginning-of-line) (point)) (point))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
859 (or (ada-in-string-p parse-result) (ada-in-comment-p parse-result)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
860
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
861
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
862 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
863 ;; Contextual menus
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
864 ;; The Ada-mode comes with contextual menus, bound by default to the right
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
865 ;; mouse button.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
866 ;; Add items to this menu by modifying `ada-contextual-menu'. Note that the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
867 ;; variable `ada-contextual-menu-on-identifier' is set automatically to t
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
868 ;; if the mouse button was pressed on an identifier.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
869 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
870
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
871 (defun ada-call-from-contextual-menu (function)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
872 "Execute FUNCTION when called from the contextual menu.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
873 It forces Emacs to change the cursor position."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
874 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
875 (funcall function)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
876 (setq ada-contextual-menu-last-point
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
877 (list (point) (current-buffer))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
878
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
879 (defun ada-popup-menu (position)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
880 "Pops up a contextual menu, depending on where the user clicked.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
881 POSITION is the location the mouse was clicked on.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
882 Sets `ada-contextual-menu-last-point' to the current position before
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
883 displaying the menu. When a function from the menu is called, the point is
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
884 where the mouse button was clicked."
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
885 (interactive "e")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
886
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
887 ;; declare this as a local variable, so that the function called
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
888 ;; in the contextual menu does not hide the region in
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
889 ;; transient-mark-mode.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
890 (let ((deactivate-mark nil))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
891 (setq ada-contextual-menu-last-point
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
892 (list (point) (current-buffer)))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
893 (mouse-set-point last-input-event)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
894
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
895 (setq ada-contextual-menu-on-identifier
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
896 (and (char-after)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
897 (or (= (char-syntax (char-after)) ?w)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
898 (= (char-after) ?_))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
899 (not (ada-in-string-or-comment-p))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
900 (save-excursion (skip-syntax-forward "w")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
901 (not (ada-after-keyword-p)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
902 ))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
903 (let (choice)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
904 (if ada-xemacs
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
905 (setq choice (funcall (symbol-function 'popup-menu)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
906 ada-contextual-menu))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
907 (setq choice (x-popup-menu position ada-contextual-menu)))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
908 (if choice
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
909 (funcall (lookup-key ada-contextual-menu (vector (car choice))))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
910 (set-buffer (cadr ada-contextual-menu-last-point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
911 (goto-char (car ada-contextual-menu-last-point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
912 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
913
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
914
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
915 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
916 ;; Misc functions
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
917 ;;------------------------------------------------------------------
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
918
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
919 ;;;###autoload
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
920 (defun ada-add-extensions (spec body)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
921 "Define SPEC and BODY as being valid extensions for Ada files.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
922 Going from body to spec with `ff-find-other-file' used these
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
923 extensions.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
924 SPEC and BODY are two regular expressions that must match against the file
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
925 name"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
926 (let* ((reg (concat (regexp-quote body) "$"))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
927 (tmp (assoc reg ada-other-file-alist)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
928 (if tmp
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
929 (setcdr tmp (list (cons spec (cadr tmp))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
930 (add-to-list 'ada-other-file-alist (list reg (list spec)))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
931
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
932 (let* ((reg (concat (regexp-quote spec) "$"))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
933 (tmp (assoc reg ada-other-file-alist)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
934 (if tmp
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
935 (setcdr tmp (list (cons body (cadr tmp))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
936 (add-to-list 'ada-other-file-alist (list reg (list body)))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
937
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
938 (add-to-list 'auto-mode-alist (cons spec 'ada-mode))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
939 (add-to-list 'auto-mode-alist (cons body 'ada-mode))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
940
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
941 (add-to-list 'ada-spec-suffixes spec)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
942 (add-to-list 'ada-body-suffixes body)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
943
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
944 ;; Support for speedbar (Specifies that we want to see these files in
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
945 ;; speedbar)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
946 (condition-case nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
947 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
948 (require 'speedbar)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
949 (funcall (symbol-function 'speedbar-add-supported-extension)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
950 spec)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
951 (funcall (symbol-function 'speedbar-add-supported-extension)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
952 body)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
953 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
954
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
955
10707
4a2ea4f52ea0 Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 10705
diff changeset
956 ;;;###autoload
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 (defun ada-mode ()
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
958 "Ada mode is the major mode for editing Ada code.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 Bindings are as follows: (Note: 'LFD' is control-j.)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 Indent line '\\[ada-tab]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 Indent line, insert newline and indent the new line. '\\[newline-and-indent]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 Re-format the parameter-list point is in '\\[ada-format-paramlist]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 Indent all lines in region '\\[ada-indent-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 Adjust case of identifiers and keywords in region '\\[ada-adjust-case-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 Adjust case of identifiers and keywords in buffer '\\[ada-adjust-case-buffer]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
971 Fill comment paragraph, justify and append postfix '\\[fill-paragraph]'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
973 Next func/proc/task '\\[ada-next-procedure]' Previous func/proc/task '\\[ada-previous-procedure]'
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
974 Next package '\\[ada-next-package]' Previous package '\\[ada-previous-package]'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 Goto matching start of current 'end ...;' '\\[ada-move-to-start]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 Goto end of current block '\\[ada-move-to-end]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 Comments are handled using standard GNU Emacs conventions, including:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 Start a comment '\\[indent-for-comment]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 Comment region '\\[comment-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 Uncomment region '\\[ada-uncomment-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 Continue comment on next line '\\[indent-new-comment-line]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 If you use imenu.el:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 Display index-menu of functions & procedures '\\[imenu]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 If you use find-file.el:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 Switch to other file (Body <-> Spec) '\\[ff-find-other-file]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 or '\\[ff-mouse-find-other-file]
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 Switch to other file in other window '\\[ada-ff-other-window]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 or '\\[ff-mouse-find-other-file-other-window]
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
993 If you use this function in a spec and no body is available, it gets created with body stubs.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 If you use ada-xref.el:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 Goto declaration: '\\[ada-point-and-xref]' on the identifier
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 or '\\[ada-goto-declaration]' with point on the identifier
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
998 Complete identifier: '\\[ada-complete-identifier]'."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (kill-all-local-variables)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1003 (set (make-local-variable 'require-final-newline) t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 (make-local-variable 'comment-start)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1006 (if ada-fill-comment-prefix
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1007 (setq comment-start ada-fill-comment-prefix)
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1008 (setq comment-start "-- "))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1009
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1010 ;; Set the paragraph delimiters so that one can select a whole block
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1011 ;; simply with M-h
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1012 (set (make-local-variable 'paragraph-start) "[ \t\n\f]*$")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1013 (set (make-local-variable 'paragraph-separate) "[ \t\n\f]*$")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 ;; comment end must be set because it may hold a wrong value if
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 ;; this buffer had been in another mode before. RE
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1017 (set (make-local-variable 'comment-end) "")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1018
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1019 ;; used by autofill and indent-new-comment-line
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1020 (set (make-local-variable 'comment-start-skip) "---*[ \t]*")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1021
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1022 ;; used by autofill to break a comment line and continue it on another line.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1023 ;; The reason we need this one is that the default behavior does not work
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1024 ;; correctly with the definition of paragraph-start above when the comment
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1025 ;; is right after a multi-line subprogram declaration (the comments are
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1026 ;; aligned under the latest parameter, not under the declaration start).
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1027 (set (make-local-variable 'comment-line-break-function)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1028 (lambda (&optional soft) (let ((fill-prefix nil))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1029 (indent-new-comment-line soft))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1030
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1031 (set (make-local-variable 'indent-line-function)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1032 'ada-indent-current-function)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1033
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1034 (set (make-local-variable 'comment-column) 40)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1035
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1036 ;; Emacs 20.3 defines a comment-padding to insert spaces between
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1037 ;; the comment and the text. We do not want any, this is already
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1038 ;; included in comment-start
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1039 (unless ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1040 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1041 (if (ada-check-emacs-version 20 3)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1042 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1043 (set (make-local-variable 'parse-sexp-ignore-comments) t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1044 (set (make-local-variable 'comment-padding) 0)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1045 (set (make-local-variable 'parse-sexp-lookup-properties) t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1046 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1047
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1048 (setq case-fold-search t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1049 (if (boundp 'imenu-case-fold-search)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1050 (setq imenu-case-fold-search t))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1051
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1052 (set (make-local-variable 'fill-paragraph-function)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1053 'ada-fill-comment-paragraph)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1054
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1055 (set (make-local-variable 'imenu-generic-expression)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1056 ada-imenu-generic-expression)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1057
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1058 ;; Support for compile.el
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1059 ;; We just substitute our own functions to go to the error.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1060 (add-hook 'compilation-mode-hook
28995
93c16141d107 (ada-mode, ada-create-case-exception): Don't quote lambdas.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26225
diff changeset
1061 (lambda()
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1062 (setq compile-auto-highlight 40)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1063 (define-key compilation-minor-mode-map [mouse-2]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1064 'ada-compile-mouse-goto-error)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1065 (define-key compilation-minor-mode-map "\C-c\C-c"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1066 'ada-compile-goto-error)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1067 (define-key compilation-minor-mode-map "\C-m"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1068 'ada-compile-goto-error)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1069 ))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1070
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1071 ;; font-lock support :
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1072 ;; We need to set some properties for XEmacs, and define some variables
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1073 ;; for Emacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1074
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1075 (if ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1076 ;; XEmacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1077 (put 'ada-mode 'font-lock-defaults
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1078 '(ada-font-lock-keywords
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1079 nil t ((?\_ . "w") (?# . ".")) beginning-of-line))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1080 ;; Emacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1081 (set (make-local-variable 'font-lock-defaults)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1082 '(ada-font-lock-keywords
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1083 nil t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1084 ((?\_ . "w") (?# . "."))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1085 beginning-of-line
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1086 (font-lock-syntactic-keywords . ada-font-lock-syntactic-keywords)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1087 )
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1088
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1089 ;; Set up support for find-file.el.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1090 (set (make-variable-buffer-local 'ff-other-file-alist)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1091 'ada-other-file-alist)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1092 (set (make-variable-buffer-local 'ff-search-directories)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1093 'ada-search-directories)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1094 (setq ff-post-load-hooks 'ada-set-point-accordingly
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1095 ff-file-created-hooks 'ada-make-body)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1096 (add-hook 'ff-pre-load-hooks 'ada-which-function-are-we-in)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1097
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1098 ;; Some special constructs for find-file.el
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1099 ;; We do not need to add the construction for 'with', which is in the
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1100 ;; standard find-file.el
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1101 (make-local-variable 'ff-special-constructs)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1102
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1103 ;; Go to the parent package :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1104 (add-to-list 'ff-special-constructs
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1105 (cons (eval-when-compile
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1106 (concat "^\\(private[ \t]\\)?[ \t]*package[ \t]+"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1107 "\\(body[ \t]+\\)?"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1108 "\\(\\(\\sw\\|[_.]\\)+\\)\\.\\(\\sw\\|_\\)+[ \t\n]+is"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1109 (lambda ()
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1110 (setq fname (ff-get-file
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1111 ada-search-directories
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1112 (ada-make-filename-from-adaname
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1113 (match-string 3))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1114 ada-spec-suffixes)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1115 ;; Another special construct for find-file.el : when in a separate clause,
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1116 ;; go to the correct package.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1117 (add-to-list 'ff-special-constructs
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1118 (cons "^separate[ \t\n]*(\\(\\(\\sw\\|[_.]\\)+\\))"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1119 (lambda ()
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1120 (setq fname (ff-get-file
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1121 ada-search-directories
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1122 (ada-make-filename-from-adaname
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1123 (match-string 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1124 ada-spec-suffixes)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1125 ;; Another special construct, that redefines the one in find-file.el. The
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1126 ;; old one can handle only one possible type of extension for Ada files
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1127 ;; remove from the list the standard "with..." that is put by find-file.el,
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1128 ;; since it uses the old ada-spec-suffix variable
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1129 ;; This one needs to replace the standard one defined in find-file.el (with
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1130 ;; Emacs <= 20.4), since that one uses the old variable ada-spec-suffix
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1131 (let ((old-construct
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1132 (assoc "^with[ \t]+\\([a-zA-Z0-9_\\.]+\\)" ff-special-constructs))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1133 (new-cdr
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1134 (lambda ()
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1135 (setq fname (ff-get-file
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1136 ada-search-directories
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1137 (ada-make-filename-from-adaname
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1138 (match-string 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1139 ada-spec-suffixes)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1140 (if old-construct
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1141 (setcdr old-construct new-cdr)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1142 (add-to-list 'ff-special-constructs
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1143 (cons "^with[ \t]+\\([a-zA-Z0-9_\\.]+\\)"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1144 new-cdr))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1145
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1146 ;; Support for outline-minor-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1147 (set (make-local-variable 'outline-regexp)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1148 "\\([ \t]*\\(procedure\\|function\\|package\\|if\\|while\\|for\\|declare\\|case\\|end\\|begin\\|loop\\)\\|--\\)")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1149 (set (make-local-variable 'outline-level) 'ada-outline-level)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1150
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1151 ;; Support for imenu : We want a sorted index
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1152 (setq imenu-sort-function 'imenu--sort-by-name)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1153
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1154 ;; Support for which-function-mode is provided in ada-support (support
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1155 ;; for nested subprograms)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1156
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1157 ;; Set up the contextual menu
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1158 (if ada-popup-key
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1159 (define-key ada-mode-map ada-popup-key 'ada-popup-menu))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1160
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1161 ;; Support for Abbreviations (the user still need to "M-x abbrev-mode"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1162 (define-abbrev-table 'ada-mode-abbrev-table ())
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1163 (setq local-abbrev-table ada-mode-abbrev-table)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1164
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1165 ;; Support for indent-new-comment-line (Especially for XEmacs)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1166 (setq comment-multi-line nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1167 (defconst comment-indent-function (lambda () comment-column))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1168
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1169 (setq major-mode 'ada-mode)
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1170 (setq mode-name "Ada")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (use-local-map ada-mode-map)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1174 (if ada-xemacs
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1175 (funcall (symbol-function 'easy-menu-add)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1176 ada-mode-menu ada-mode-map))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1177
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1178 (set-syntax-table ada-mode-syntax-table)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (if ada-clean-buffer-before-saving
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 (progn
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1182 ;; remove all spaces at the end of lines in the whole buffer.
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
1183 (add-hook 'local-write-file-hooks 'delete-trailing-whitespace)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1184 ;; convert all tabs to the correct number of spaces.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1185 (add-hook 'local-write-file-hooks
28995
93c16141d107 (ada-mode, ada-create-case-exception): Don't quote lambdas.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26225
diff changeset
1186 (lambda () (untabify (point-min) (point-max))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (run-hooks 'ada-mode-hook)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1190 ;; Run this after the hook to give the users a chance to activate
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1191 ;; font-lock-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1192
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1193 (unless ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1194 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1195 (ada-initialize-properties)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1196 (make-local-hook 'font-lock-mode-hook)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1197 (add-hook 'font-lock-mode-hook 'ada-deactivate-properties nil t)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1198
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 ;; the following has to be done after running the ada-mode-hook
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 ;; because users might want to set the values of these variable
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 ;; inside the hook (MH)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 (cond ((eq ada-language-version 'ada83)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1204 (setq ada-keywords ada-83-keywords))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1205 ((eq ada-language-version 'ada95)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1206 (setq ada-keywords ada-95-keywords)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 (if ada-auto-case
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 (ada-activate-keys-for-case)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1212 ;;-----------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1213 ;; auto-casing
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1214 ;; Since Ada is case-insensitive, the Ada-mode provides an extensive set of
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1215 ;; functions to auto-case identifiers, keywords, ...
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1216 ;; The basic rules for autocasing are defined through the variables
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1217 ;; `ada-case-attribute', `ada-case-keyword' and `ada-case-identifier'. These
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1218 ;; are references to the functions that will do the actual casing.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1219 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1220 ;; However, in most cases, the user will want to define some exceptions to
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1221 ;; these casing rules. This is done through a list of files, that contain
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1222 ;; one word per line. These files are stored in `ada-case-exception-file'.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1223 ;; For backward compatibility, this variable can also be a string.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1224 ;;-----------------------------------------------------------------
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1225
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1226 (defun ada-create-case-exception (&optional word)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1227 "Defines WORD as an exception for the casing system.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1228 If WORD is not given, then the current word in the buffer is used instead.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1229 The new words is added to the first file in `ada-case-exception-file'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1230 The standard casing rules will no longer apply to this word."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1232 (let ((previous-syntax-table (syntax-table))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1233 (exception-list '())
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1234 file-name
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1235 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1236
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1237 (cond ((stringp ada-case-exception-file)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1238 (setq file-name ada-case-exception-file))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1239 ((listp ada-case-exception-file)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1240 (setq file-name (car ada-case-exception-file)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1241 (t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1242 (error "No exception file specified")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1243
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1244 (set-syntax-table ada-mode-symbol-syntax-table)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1245 (unless word
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1246 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1247 (skip-syntax-backward "w")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1248 (setq word (buffer-substring-no-properties
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1249 (point) (save-excursion (forward-word 1) (point))))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1250
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1251 ;; Reread the exceptions file, in case it was modified by some other,
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1252 ;; and to keep the end-of-line comments that may exist in it.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1253 (if (file-readable-p (expand-file-name file-name))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1254 (let ((buffer (current-buffer)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1255 (find-file (expand-file-name file-name))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1256 (set-syntax-table ada-mode-symbol-syntax-table)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1257 (widen)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1258 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1259 (while (not (eobp))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1260 (add-to-list 'exception-list
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1261 (list
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1262 (buffer-substring-no-properties
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1263 (point) (save-excursion (forward-word 1) (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1264 (buffer-substring-no-properties
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1265 (save-excursion (forward-word 1) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1266 (save-excursion (end-of-line) (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1267 t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1268 (forward-line 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1269 (kill-buffer nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1270 (set-buffer buffer)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1271
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1272 ;; If the word is already in the list, even with a different casing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1273 ;; we simply want to replace it.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1274 (if (and (not (equal exception-list '()))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1275 (assoc-ignore-case word exception-list))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1276 (setcar (assoc-ignore-case word exception-list)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1277 word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1278 (add-to-list 'exception-list (list word "" t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1279 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1280
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1281 (if (and (not (equal ada-case-exception '()))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1282 (assoc-ignore-case word ada-case-exception))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1283 (setcar (assoc-ignore-case word ada-case-exception)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1284 word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1285 (add-to-list 'ada-case-exception (cons word t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1286 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1287
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1288 ;; Save the list in the file
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1289 (find-file (expand-file-name file-name))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1290 (erase-buffer)
28995
93c16141d107 (ada-mode, ada-create-case-exception): Don't quote lambdas.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 26225
diff changeset
1291 (mapcar (lambda (x) (insert (car x) (nth 1 x) "\n"))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1292 (sort exception-list
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1293 (lambda(a b) (string< (car a) (car b)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1294 (save-buffer)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1295 (kill-buffer nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1296 (set-syntax-table previous-syntax-table)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1297 ))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1298
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1299 (defun ada-case-read-exceptions-from-file (file-name)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1300 "Read the content of the casing exception file FILE-NAME."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1301 (if (file-readable-p (expand-file-name file-name))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1302 (let ((buffer (current-buffer)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1303 (find-file (expand-file-name file-name))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1304 (set-syntax-table ada-mode-symbol-syntax-table)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1305 (widen)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1306 (goto-char (point-min))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1307 (while (not (eobp))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1308
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1309 ;; If the item is already in the list, even with an other casing,
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1310 ;; do not add it again. This way, the user can easily decide which
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1311 ;; priority should be applied to each casing exception
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1312 (let ((word (buffer-substring-no-properties
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1313 (point) (save-excursion (forward-word 1) (point)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1314 (unless (assoc-ignore-case word ada-case-exception)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1315 (add-to-list 'ada-case-exception (cons word t))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1316
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1317 (forward-line 1))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1318 (kill-buffer nil)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1319 (set-buffer buffer)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1320 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1321
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1322 (defun ada-case-read-exceptions ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1323 "Read all the casing exception files from `ada-case-exception-file'."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1324 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1325
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1326 ;; Reinitialize the casing exception list
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1327 (setq ada-case-exception '())
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1328
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1329 (cond ((stringp ada-case-exception-file)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1330 (ada-case-read-exceptions-from-file ada-case-exception-file))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1331
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1332 ((listp ada-case-exception-file)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1333 (mapcar 'ada-case-read-exceptions-from-file
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1334 ada-case-exception-file))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1335
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1336 (defun ada-adjust-case-identifier ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1337 "Adjust case of the previous identifier.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1338 The auto-casing is done according to the value of `ada-case-identifier' and
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1339 the exceptions defined in `ada-case-exception-file'."
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1340 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1341 (if (or (equal ada-case-exception '())
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1342 (equal (char-after) ?_))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1343 (funcall ada-case-identifier -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1344
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1345 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1346 (let ((end (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1347 (start (save-excursion (skip-syntax-backward "w")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1348 (point)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1349 match)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1350 ;; If we have an exception, replace the word by the correct casing
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1351 (if (setq match (assoc-ignore-case (buffer-substring start end)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1352 ada-case-exception))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1353
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1354 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1355 (delete-region start end)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1356 (insert (car match)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1357
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1358 ;; Else simply re-case the word
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1359 (funcall ada-case-identifier -1))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 (defun ada-after-keyword-p ()
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1362 "Returns t if cursor is after a keyword that is not an attribute."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (forward-word -1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1365 (and (not (and (char-before)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1366 (or (= (char-before) ?_)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1367 (= (char-before) ?'))));; unless we have a _ or '
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (looking-at (concat ada-keywords "[^_]")))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (defun ada-adjust-case (&optional force-identifier)
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1371 "Adjust the case of the word before the just typed character.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1372 If FORCE-IDENTIFIER is non-nil then also adjust keyword as identifier."
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1373 (forward-char -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1374 (if (and (> (point) 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1375 ;; or if at the end of a character constant
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1376 (not (and (eq (char-after) ?')
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1377 (eq (char-before (1- (point))) ?')))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1378 ;; or if the previous character was not part of a word
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1379 (eq (char-syntax (char-before)) ?w)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1380 ;; if in a string or a comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1381 (not (ada-in-string-or-comment-p))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1382 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1383 (if (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1384 (forward-word -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1385 (or (= (point) (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1386 (backward-char 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1387 (= (char-after) ?'))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1388 (funcall ada-case-attribute -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1389 (if (and
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1390 (not force-identifier) ; (MH)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1391 (ada-after-keyword-p))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1392 (funcall ada-case-keyword -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1393 (ada-adjust-case-identifier))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1394 (forward-char 1)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1395 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 (defun ada-adjust-case-interactive (arg)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1398 "Adjust the case of the previous word, and process the character just typed.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1399 ARG is the prefix the user entered with \C-u."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 (interactive "P")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1401
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1402 (if ada-auto-case
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1403 (let ((lastk last-command-char)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1404 (previous-syntax-table (syntax-table)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1405
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1406 (unwind-protect
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1407 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1408 (set-syntax-table ada-mode-symbol-syntax-table)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1409 (cond ((or (eq lastk ?\n)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1410 (eq lastk ?\r))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1411 ;; horrible kludge
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1412 (insert " ")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1413 (ada-adjust-case)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1414 ;; horrible dekludge
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1415 (delete-backward-char 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1416 ;; some special keys and their bindings
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1417 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1418 ((eq lastk ?\n)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1419 (funcall ada-lfd-binding))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1420 ((eq lastk ?\r)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1421 (funcall ada-ret-binding))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1422 ((eq lastk ?\C-i) (ada-tab))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1423 ;; Else just insert the character
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1424 ((self-insert-command (prefix-numeric-value arg))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1425 ;; if there is a keyword in front of the underscore
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1426 ;; then it should be part of an identifier (MH)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1427 (if (eq lastk ?_)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1428 (ada-adjust-case t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1429 (ada-adjust-case))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1430 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1431 ;; Restore the syntax table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1432 (set-syntax-table previous-syntax-table))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1433 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1434
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1435 ;; Else, no auto-casing
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1436 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1437 ((eq last-command-char ?\n)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1438 (funcall ada-lfd-binding))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1439 ((eq last-command-char ?\r)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1440 (funcall ada-ret-binding))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1441 (t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1442 (self-insert-command (prefix-numeric-value arg))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1443 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 (defun ada-activate-keys-for-case ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1446 "Modifies the key bindings for all the keys that should readjust the casing."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1447 (interactive)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1448 ;; Save original key-bindings to allow swapping ret/lfd
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1449 ;; when casing is activated.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1450 ;; The 'or ...' is there to be sure that the value will not
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1451 ;; be changed again when Ada mode is called more than once
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1452 (or ada-ret-binding (setq ada-ret-binding (key-binding "\C-M")))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1453 (or ada-lfd-binding (setq ada-lfd-binding (key-binding "\C-j")))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1454
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1455 ;; Call case modifying function after certain keys.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 (mapcar (function (lambda(key) (define-key
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 ada-mode-map
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458 (char-to-string key)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459 'ada-adjust-case-interactive)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1460 '( ?` ?_ ?# ?% ?& ?* ?( ?) ?- ?= ?+
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1461 ?| ?\; ?: ?' ?\" ?< ?, ?. ?> ?/ ?\n 32 ?\r )))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 (defun ada-loose-case-word (&optional arg)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1464 "Upcase first letter and letters following `_' in the following word.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1465 No other letter is modified.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1466 ARG is ignored, and is there for compatibility with `capitalize-word' only."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1467 (interactive)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1468 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1469 (let ((end (save-excursion (skip-syntax-forward "w") (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1470 (first t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1471 (skip-syntax-backward "w")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1472 (while (and (or first (search-forward "_" end t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1473 (< (point) end))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1474 (and first
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1475 (setq first nil))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1476 (insert-char (upcase (following-char)) 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1477 (delete-char 1)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1478
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1479 (defun ada-no-auto-case (&optional arg)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1480 "Does nothing.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1481 This function can be used for the auto-casing variables in the ada-mode, to
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1482 adapt to unusal auto-casing schemes. Since it does nothing, you can for
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1483 instance use it for `ada-case-identifier' if you don't want any special
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1484 auto-casing for identifiers, whereas keywords have to be lower-cased.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1485 See also `ada-auto-case' to disable auto casing altogether."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1486 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1488 (defun ada-capitalize-word (&optional arg)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1489 "Upcase first letter and letters following '_', lower case other letters.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1490 ARG is ignored, and is there for compatibility with `capitalize-word' only."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1491 (interactive)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1492 (let ((end (save-excursion (skip-syntax-forward "w") (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1493 (begin (save-excursion (skip-syntax-backward "w") (point))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1494 (modify-syntax-entry ?_ "_")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1495 (capitalize-region begin end)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1496 (modify-syntax-entry ?_ "w")))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 (defun ada-adjust-case-region (from to)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1499 "Adjusts the case of all words in the region between FROM and TO.
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1500 Attention: This function might take very long for big regions !"
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 (interactive "*r")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 (let ((begin nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 (end nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 (keywordp nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1505 (attribp nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1506 (previous-syntax-table (syntax-table)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1507 (message "Adjusting case ...")
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1508 (unwind-protect
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1509 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1510 (set-syntax-table ada-mode-symbol-syntax-table)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1511 (goto-char to)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1512 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1513 ;; loop: look for all identifiers, keywords, and attributes
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1514 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1515 (while (re-search-backward "\\<\\(\\sw+\\)\\>" from t)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1516 (setq end (match-end 1))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1517 (setq attribp
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1518 (and (> (point) from)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1519 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1520 (forward-char -1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1521 (setq attribp (looking-at "'.[^']")))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1522 (or
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1523 ;; do nothing if it is a string or comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1524 (ada-in-string-or-comment-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1525 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1526 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1527 ;; get the identifier or keyword or attribute
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1528 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1529 (setq begin (point))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1530 (setq keywordp (looking-at ada-keywords))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1531 (goto-char end)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1532 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1533 ;; casing according to user-option
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1534 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1535 (if attribp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1536 (funcall ada-case-attribute -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1537 (if keywordp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1538 (funcall ada-case-keyword -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1539 (ada-adjust-case-identifier)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1540 (goto-char begin))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1541 (message "Adjusting case ... Done"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1542 (set-syntax-table previous-syntax-table))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 (defun ada-adjust-case-buffer ()
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1545 "Adjusts the case of all words in the whole buffer.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 ATTENTION: This function might take very long for big buffers !"
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1547 (interactive "*")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1548 (ada-adjust-case-region (point-min) (point-max)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1549
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1550
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1551 ;;--------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1552 ;; Format Parameter Lists
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1553 ;; Some special algorithms are provided to indent the parameter lists in
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1554 ;; subprogram declarations. This is done in two steps:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1555 ;; - First parses the parameter list. The returned list has the following
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1556 ;; format:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1557 ;; ( (<Param_Name> in? out? access? <Type_Name> <Default_Expression>)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1558 ;; ... )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1559 ;; This is done in `ada-scan-paramlist'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1560 ;; - Delete and recreate the parameter list in function
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1561 ;; `ada-insert-paramlist'.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1562 ;; Both steps are called from `ada-format-paramlist'.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1563 ;; Note: Comments inside the parameter list are lost.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1564 ;; The syntax has to be correct, or the reformating will fail.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1565 ;;--------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1566
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 (defun ada-format-paramlist ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1568 "Reformats the parameter list point is in."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 (let ((begin nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 (end nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1572 (delend nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1573 (paramlist nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1574 (previous-syntax-table (syntax-table)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1575 (unwind-protect
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1576 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1577 (set-syntax-table ada-mode-symbol-syntax-table)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1578
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1579 ;; check if really inside parameter list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1580 (or (ada-in-paramlist-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1581 (error "not in parameter list"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1582
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1583 ;; find start of current parameter-list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1584 (ada-search-ignore-string-comment
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
1585 (concat ada-subprog-start-re "\\|\\<body\\>" ) t nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1586 (down-list 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1587 (backward-char 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1588 (setq begin (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1589
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1590 ;; find end of parameter-list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1591 (forward-sexp 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1592 (setq delend (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1593 (delete-char -1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1594 (insert "\n")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1595
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1596 ;; find end of last parameter-declaration
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1597 (forward-comment -1000)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1598 (setq end (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1599
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1600 ;; build a list of all elements of the parameter-list
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1601 (setq paramlist (ada-scan-paramlist (1+ begin) end))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1602
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1603 ;; delete the original parameter-list
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1604 (delete-region begin delend)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1605
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1606 ;; insert the new parameter-list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1607 (goto-char begin)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1608 (ada-insert-paramlist paramlist))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1609
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1610 ;; restore syntax-table
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1611 (set-syntax-table previous-syntax-table)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1612 )))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614 (defun ada-scan-paramlist (begin end)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1615 "Scan the parameter list found in between BEGIN and END.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1616 Returns the equivalent internal parameter list."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 (let ((paramlist (list))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 (param (list))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 (notend t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 (apos nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 (epos nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 (semipos nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 (match-cons nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625 (goto-char begin)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1626
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627 ;; loop until end of last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 (while notend
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630 ;; find first character of parameter-declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 (ada-goto-next-non-ws)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1632 (setq apos (point))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634 ;; find last character of parameter-declaration
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1635 (if (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1636 (ada-search-ignore-string-comment "[ \t\n]*;" nil end t))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1638 (setq epos (car match-cons))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1639 (setq semipos (cdr match-cons)))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1640 (setq epos end))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642 ;; read name(s) of parameter(s)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 (goto-char apos)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1644 (looking-at "\\(\\(\\sw\\|[_, \t\n]\\)*\\(\\sw\\|_\\)\\)[ \t\n]*:[^=]")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1645
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1646 (setq param (list (match-string 1)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1647 (ada-search-ignore-string-comment ":" nil epos t 'search-forward)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 ;; look for 'in'
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1650 (setq apos (point))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1651 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1652 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1653 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1654 (consp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1655 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1656 "in" nil epos t 'word-search-forward)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1657
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658 ;; look for 'out'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659 (goto-char apos)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1660 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1661 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1662 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1663 (consp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1664 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1665 "out" nil epos t 'word-search-forward)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1667 ;; look for 'access'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 (goto-char apos)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1669 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1670 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1671 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1672 (consp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1673 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1674 "access" nil epos t 'word-search-forward)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1676 ;; skip 'in'/'out'/'access'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1677 (goto-char apos)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1678 (ada-goto-next-non-ws)
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1679 (while (looking-at "\\<\\(in\\|out\\|access\\)\\>")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 (ada-goto-next-non-ws))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1682
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1683 ;; read type of parameter
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1684 ;; We accept spaces in the name, since some software like Rose
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1685 ;; generates something like: "A : B 'Class"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1686 (looking-at "\\<\\(\\sw\\|[_.' \t]\\)+\\>")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1687 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1688 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1689 (list (match-string 0))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 ;; read default-expression, if there is one
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1692 (goto-char (setq apos (match-end 0)))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1693 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1694 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1695 (list
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1696 (if (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1697 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1698 ":=" nil epos t 'search-forward))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1699 (buffer-substring (car match-cons) epos)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1700 nil))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1701
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 ;; add this parameter-declaration to the list
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1703 (setq paramlist (append paramlist (list param)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 ;; check if it was the last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 (if (eq epos end)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1707 (setq notend nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 (goto-char semipos))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1709 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 (reverse paramlist)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 (defun ada-insert-paramlist (paramlist)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1713 "Inserts a formatted PARAMLIST in the buffer."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714 (let ((i (length paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 (parlen 0)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 (typlen 0)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717 (inp nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1718 (outp nil)
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1719 (accessp nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 (column nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1721 (firstcol nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1722
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723 ;; loop until last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 (while (not (zerop i))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1725 (setq i (1- i))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727 ;; get max length of parameter-name
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1728 (setq parlen (max parlen (length (nth 0 (nth i paramlist)))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1729
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730 ;; get max length of type-name
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1731 (setq typlen (max typlen (length (nth 4 (nth i paramlist)))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1732
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 ;; is there any 'in' ?
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1734 (setq inp (or inp (nth 1 (nth i paramlist))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1735
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1736 ;; is there any 'out' ?
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1737 (setq outp (or outp (nth 2 (nth i paramlist))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1738
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1739 ;; is there any 'access' ?
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1740 (setq accessp (or accessp (nth 3 (nth i paramlist))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1741 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1742
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743 ;; does paramlist already start on a separate line ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 (if (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 (re-search-backward "^.\\|[^ \t]" nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 (looking-at "^."))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 ;; yes => re-indent it
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1748 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1749 (ada-indent-current)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1750 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1751 (if (looking-at "\\(is\\|return\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1752 (replace-match " \\1"))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1753
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1754 ;; no => insert it where we are after removing any whitespace
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1755 (fixup-whitespace)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1756 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1757 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1758 ((looking-at "[ \t]*\\(\n\\|;\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1759 (replace-match "\\1"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1760 ((looking-at "[ \t]*\\(is\\|return\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1761 (replace-match " \\1"))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1762 (insert " "))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1763
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1764 (insert "(")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1765 (ada-indent-current)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1766
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1767 (setq firstcol (current-column))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1768 (setq i (length paramlist))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1769
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770 ;; loop until last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1771 (while (not (zerop i))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1772 (setq i (1- i))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1773 (setq column firstcol)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1774
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1775 ;; insert parameter-name, space and colon
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776 (insert (nth 0 (nth i paramlist)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 (indent-to (+ column parlen 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 (insert ": ")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1779 (setq column (current-column))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1780
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1781 ;; insert 'in' or space
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1782 (if (nth 1 (nth i paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 (insert "in ")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 (if (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785 (or inp
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1786 accessp)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 (not (nth 3 (nth i paramlist))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1788 (insert " ")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1789
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1790 ;; insert 'out' or space
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1791 (if (nth 2 (nth i paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1792 (insert "out ")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1793 (if (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1794 (or outp
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1795 accessp)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1796 (not (nth 3 (nth i paramlist))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1797 (insert " ")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1798
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1799 ;; insert 'access'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 (if (nth 3 (nth i paramlist))
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1801 (insert "access "))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1803 (setq column (current-column))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1804
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1805 ;; insert type-name and, if necessary, space and default-expression
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1806 (insert (nth 4 (nth i paramlist)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1807 (if (nth 5 (nth i paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1808 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1809 (indent-to (+ column typlen 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1810 (insert (nth 5 (nth i paramlist)))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1811
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1812 ;; check if it was the last parameter
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1813 (if (zerop i)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1814 (insert ")")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1815 ;; no => insert ';' and newline and indent
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1816 (insert ";")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1817 (newline)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1818 (indent-to firstcol))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1819 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1820
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1821 ;; if anything follows, except semicolon, newline, is or return
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1822 ;; put it in a new line and indent it
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1823 (unless (looking-at "[ \t]*\\(;\\|\n\\|is\\|return\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1824 (ada-indent-newline-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1829 ;;;----------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1830 ;; Indentation Engine
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1831 ;; All indentations are indicated as a two-element string:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1832 ;; - position of reference in the buffer
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1833 ;; - offset to indent from this position (can also be a symbol or a list
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1834 ;; that are evaluated)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1835 ;; Thus the total indentation for a line is the column number of the reference
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1836 ;; position plus whatever value the evaluation of the second element provides.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1837 ;; This mechanism is used so that the ada-mode can "explain" how the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1838 ;; indentation was calculated, by showing which variables were used.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1839 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1840 ;; The indentation itself is done in only one pass: first we try to guess in
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1841 ;; what context we are by looking at the following keyword or punctuation
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1842 ;; sign. If nothing remarkable is found, just try to guess the indentation
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1843 ;; based on previous lines.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1844 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1845 ;; The relevant functions for indentation are:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1846 ;; - `ada-indent-region': Re-indent a region of text
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1847 ;; - `ada-justified-indent-current': Re-indent the current line and shows the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1848 ;; calculation that were done
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1849 ;; - `ada-indent-current': Re-indent the current line
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1850 ;; - `ada-get-current-indent': Calculate the indentation for the current line,
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1851 ;; based on the context (see above).
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1852 ;; - `ada-get-indent-*': Calculate the indentation in a specific context.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1853 ;; For efficiency, these functions do not check they are in the correct
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1854 ;; context.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1855 ;;;----------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1856
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 (defun ada-indent-region (beg end)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1858 "Indent the region between BEG end END."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 (interactive "*r")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 (goto-char beg)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1861 (let ((block-done 0)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1862 (lines-remaining (count-lines beg end))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1863 (msg (format "%%4d out of %4d lines remaining ..."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1864 (count-lines beg end)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1865 (endmark (copy-marker end)))
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1866 ;; catch errors while indenting
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1867 (while (< (point) endmark)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1868 (if (> block-done 39)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1869 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1870 (setq lines-remaining (- lines-remaining block-done)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1871 block-done 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1872 (message msg lines-remaining)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1873 (if (= (char-after) ?\n) nil
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1874 (ada-indent-current))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1875 (forward-line 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1876 (setq block-done (1+ block-done)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1877 (message "indenting ... done")))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1878
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1879 (defun ada-indent-newline-indent ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1880 "Indents the current line, inserts a newline and then indents the new line."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1881 (interactive "*")
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
1882 (ada-indent-current)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
1883 (newline)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
1884 (ada-indent-current))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1885
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1886 (defun ada-indent-newline-indent-conditional ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1887 "Insert a newline and indent it.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1888 The original line is indented first if `ada-indent-after-return' is non-nil.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1889 This function is intended to be bound to the \C-m and \C-j keys."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1890 (interactive "*")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1891 (if ada-indent-after-return (ada-indent-current))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1892 (newline)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1893 (ada-indent-current))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1894
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1895 (defun ada-justified-indent-current ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1896 "Indent the current line and explains how the calculation was done."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1897 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1898
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1899 (let ((cur-indent (ada-indent-current)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1900
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1901 (message nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1902 (if (equal (cdr cur-indent) '(0))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1903 (message "same indentation")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1904 (message (mapconcat (lambda(x)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1905 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1906 ((symbolp x)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1907 (symbol-name x))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1908 ((numberp x)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1909 (number-to-string x))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1910 ((listp x)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1911 (concat "- " (symbol-name (cadr x))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1912 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1913 (cdr cur-indent)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1914 " + ")))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1915 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1916 (goto-char (car cur-indent))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1917 (sit-for 1))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1919 (defun ada-batch-reformat ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1920 "Re-indent and re-case all the files found on the command line.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1921 This function should be used from the Unix/Windows command line, with a
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1922 command like:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1923 emacs -batch -l ada-mode -f ada-batch-reformat file1 file2 ..."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1924
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1925 (while command-line-args-left
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1926 (let ((source (car command-line-args-left)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1927 (message (concat "formating " source))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1928 (find-file source)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1929 (ada-indent-region (point-min) (point-max))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1930 (ada-adjust-case-buffer)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1931 (write-file source))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1932 (setq command-line-args-left (cdr command-line-args-left)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1933 (message "Done")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1934 (kill-emacs 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1935
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1936 (defsubst ada-goto-previous-word ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1937 "Moves point to the beginning of the previous word of Ada code.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1938 Returns the new position of point or nil if not found."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1939 (ada-goto-next-word t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1940
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 (defun ada-indent-current ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1942 "Indent current line as Ada code.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1943 Returns the calculation that was done, including the reference point and the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1944 offset."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1946 (let ((previous-syntax-table (syntax-table))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1947 (orgpoint (point-marker))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1948 cur-indent tmp-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1949 prev-indent)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1950
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1951 (unwind-protect
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1952 (progn
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1953 (set-syntax-table ada-mode-symbol-syntax-table)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1954
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1955 ;; This need to be done here so that the advice is not always
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1956 ;; activated (this might interact badly with other modes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1957 (if ada-xemacs
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1958 (ad-activate 'parse-partial-sexp t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1959
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1960 (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1961 (setq cur-indent
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1962
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1963 ;; Not First line in the buffer ?
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1964 (if (save-excursion (zerop (forward-line -1)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1965 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1966 (back-to-indentation)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1967 (ada-get-current-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1968
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1969 ;; first line in the buffer
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1970 (list (point-min) 0))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1971
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1972 ;; Evaluate the list to get the column to indent to
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1973 ;; prev-indent contains the column to indent to
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1974 (if cur-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1975 (setq prev-indent (save-excursion (goto-char (car cur-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1976 (current-column))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1977 tmp-indent (cdr cur-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1978 (setq prev-indent 0 tmp-indent '()))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
1979
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1980 (while (not (null tmp-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1981 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1982 ((numberp (car tmp-indent))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1983 (setq prev-indent (+ prev-indent (car tmp-indent))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1984 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1985 (setq prev-indent (+ prev-indent (eval (car tmp-indent)))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1986 )
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1987 (setq tmp-indent (cdr tmp-indent)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1988
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1989 ;; only re-indent if indentation is different then the current
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1990 (if (= (save-excursion (back-to-indentation) (current-column)) prev-indent)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1991 nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1992 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1993 (delete-horizontal-space)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1994 (indent-to prev-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1995 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1996 ;; restore position of point
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1997 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1998 (goto-char orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1999 (if (< (current-column) (current-indentation))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2000 (back-to-indentation)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2001
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2002 ;; restore syntax-table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2003 (set-syntax-table previous-syntax-table)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2004 (if ada-xemacs
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2005 (ad-deactivate 'parse-partial-sexp))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2006 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2007
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2008 cur-indent
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2009 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2010
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2011 (defun ada-get-current-indent ()
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2012 "Return the indentation to use for the current line."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2013 (let (column
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2014 pos
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2015 match-cons
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2016 result
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2017 (orgpoint (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2018 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2019 (forward-comment -10000)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2020 (forward-line 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2021 (point))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2022
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2023 (setq result
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2024 (cond
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2025
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2026 ;;-----------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 ;; in open parenthesis, but not in parameter-list
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2028 ;;-----------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2029
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2030 ((and ada-indent-to-open-paren
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2031 (not (ada-in-paramlist-p))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2032 (setq column (ada-in-open-paren-p)))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2033
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2034 ;; check if we have something like this (Table_Component_Type =>
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2035 ;; Source_File_Record)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2036 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2037 (if (and (skip-chars-backward " \t")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2038 (= (char-before) ?\n)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2039 (not (forward-comment -10000))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2040 (= (char-before) ?>))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2041 ;; ??? Could use a different variable
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2042 (list column 'ada-broken-indent)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2043 (list column 0))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2044
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2045 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2046 ;; at end of buffer
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2047 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2048
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2049 ((not (char-after))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2050 (ada-indent-on-previous-lines nil orgpoint orgpoint))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2051
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2052 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2053 ;; starting with e
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2054 ;;---------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2055
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2056 ((= (char-after) ?e)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2057 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2058
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2059 ;; ------- end ------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2060
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2061 ((looking-at "end\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2062 (let ((label 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2063 limit)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2064 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2065 (ada-goto-matching-start 1)
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2066
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2067 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2068 ;; found 'loop' => skip back to 'while' or 'for'
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2069 ;; if 'loop' is not on a separate line
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2070 ;; Stop the search for 'while' and 'for' when a ';' is encountered.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2071 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2072 (if (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2073 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2074 (looking-at ".+\\<loop\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2075 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2076 (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2077 (setq limit (car (ada-search-ignore-string-comment ";" t))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2078 (if (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2079 (and
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2080 (setq match-cons
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2081 (ada-search-ignore-string-comment ada-loop-start-re t limit))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2082 (not (looking-at "\\<loop\\>"))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2083 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2084 (goto-char (car match-cons))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2085 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2086 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2087 (if (looking-at ada-named-block-re)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2088 (setq label (- ada-label-indent))))))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2089
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2090 (list (+ (save-excursion (back-to-indentation) (point)) label) 0))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2091
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2092 ;; ------ exception ----
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2093
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2094 ((looking-at "exception\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2095 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2096 (ada-goto-matching-start 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2097 (list (save-excursion (back-to-indentation) (point)) 0)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2098
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2099 ;; else
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2100
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2101 ((looking-at "else\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2102 (if (save-excursion (ada-goto-previous-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2103 (looking-at "\\<or\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2104 (ada-indent-on-previous-lines nil orgpoint orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2105 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2106 (ada-goto-matching-start 1 nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2107 (list (progn (back-to-indentation) (point)) 0))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2108
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2109 ;; elsif
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2110
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2111 ((looking-at "elsif\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2112 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2113 (ada-goto-matching-start 1 nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2114 (list (progn (back-to-indentation) (point)) 0)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2115
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2116 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2117
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2118 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2119 ;; starting with w (when)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2120 ;;---------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2121
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2122 ((and (= (char-after) ?w)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2123 (looking-at "when\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2124 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2125 (ada-goto-matching-start 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2126 (list (save-excursion (back-to-indentation) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2127 'ada-when-indent)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2128
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2129 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2130 ;; starting with t (then)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2131 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2132
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2133 ((and (= (char-after) ?t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2134 (looking-at "then\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2135 (if (save-excursion (ada-goto-previous-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2136 (looking-at "and\\>"))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2137 (ada-indent-on-previous-lines nil orgpoint orgpoint)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2138 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2139 ;; Select has been added for the statement: "select ... then abort"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2140 (ada-search-ignore-string-comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2141 "\\<\\(elsif\\|if\\|select\\)\\>" t nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2142 (list (progn (back-to-indentation) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2143 'ada-stmt-end-indent))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2144
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2145 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2146 ;; starting with l (loop)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2147 ;;---------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2148
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2149 ((and (= (char-after) ?l)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2150 (looking-at "loop\\>"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2151 (setq pos (point))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2152 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2153 (goto-char (match-end 0))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2154 (ada-goto-stmt-start)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2155 (if (looking-at "\\<\\(loop\\|if\\)\\>")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2156 (ada-indent-on-previous-lines nil orgpoint orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2157 (unless (looking-at ada-loop-start-re)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2158 (ada-search-ignore-string-comment ada-loop-start-re
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2159 nil pos))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2160 (if (looking-at "\\<loop\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2161 (ada-indent-on-previous-lines nil orgpoint orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2162 (list (progn (back-to-indentation) (point)) 'ada-stmt-end-indent)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2163
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2164 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2165 ;; starting with b (begin)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2166 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2167
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2168 ((and (= (char-after) ?b)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2169 (looking-at "begin\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2170 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2171 (if (ada-goto-matching-decl-start t)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2172 (list (progn (back-to-indentation) (point)) 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2173 (ada-indent-on-previous-lines nil orgpoint orgpoint))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2174
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2175 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2176 ;; starting with i (is)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2177 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2178
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2179 ((and (= (char-after) ?i)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2180 (looking-at "is\\>"))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2181
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2182 (if (and ada-indent-is-separate
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2183 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2184 (goto-char (match-end 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2185 (ada-goto-next-non-ws (save-excursion (end-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2186 (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2187 (looking-at "\\<abstract\\>\\|\\<separate\\>")))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2188 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2189 (ada-goto-stmt-start)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2190 (list (progn (back-to-indentation) (point)) 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2191 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2192 (ada-goto-stmt-start)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2193 (list (progn (back-to-indentation) (point)) 'ada-stmt-end-indent))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2194
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2195 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2196 ;; starting with r (record, return, renames)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2197 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2198
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2199 ((= (char-after) ?r)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2200
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2201 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2202
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2203 ;; ----- record ------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2204
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2205 ((looking-at "record\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2206 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2207 (ada-search-ignore-string-comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2208 "\\<\\(type\\|use\\)\\>" t nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2209 (if (looking-at "\\<use\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2210 (ada-search-ignore-string-comment "for" t nil nil 'word-search-backward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2211 (list (progn (back-to-indentation) (point)) 'ada-indent-record-rel-type)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2212
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2213 ;; ----- return or renames ------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2214
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2215 ((looking-at "re\\(turn\\|names\\)\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2216 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2217 (let ((var 'ada-indent-return))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2218 ;; If looking at a renames, skip the 'return' statement too
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2219 (if (looking-at "renames")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2220 (let (pos)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2221 (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2222 (setq pos (ada-search-ignore-string-comment ";\\|return\\>" t)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2223 (if (and pos
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2224 (= (char-after (car pos)) ?r))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2225 (goto-char (car pos)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2226 (setq var 'ada-indent-renames)))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2227
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2228 (forward-comment -1000)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2229 (if (= (char-before) ?\))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2230 (forward-sexp -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2231 (forward-word -1))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2232
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2233 ;; If there is a parameter list, and we have a function declaration
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2234 ;; or a access to subprogram declaration
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2235 (let ((num-back 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2236 (if (and (= (char-after) ?\()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2237 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2238 (or (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2239 (backward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2240 (looking-at "function\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2241 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2242 (backward-word 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2243 (setq num-back 2)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2244 (looking-at "function\\>")))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2245
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2246 ;; The indentation depends of the value of ada-indent-return
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2247 (if (<= (eval var) 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2248 (list (point) (list '- var))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2249 (list (progn (backward-word num-back) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2250 var))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2251
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2252 ;; Else there is no parameter list, but we have a function
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2253 ;; Only do something special if the user want to indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2254 ;; relative to the "function" keyword
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2255 (if (and (> (eval var) 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2256 (save-excursion (forward-word -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2257 (looking-at "function\\>")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2258 (list (progn (forward-word -1) (point)) var)
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2259
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2260 ;; Else...
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2261 (ada-indent-on-previous-lines nil orgpoint orgpoint)))))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2262 ))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2263
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2264 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2265 ;; starting with 'o' or 'p'
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2266 ;; 'or' as statement-start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2267 ;; 'private' as statement-start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2268 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2269
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2270 ((and (or (= (char-after) ?o)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2271 (= (char-after) ?p))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2272 (or (ada-looking-at-semi-or)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2273 (ada-looking-at-semi-private)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2274 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2275 (ada-goto-matching-start 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2276 (list (progn (back-to-indentation) (point)) 0)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2277
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2278 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2279 ;; starting with 'd' (do)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2280 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2281
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2282 ((and (= (char-after) ?d)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2283 (looking-at "do\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2284 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2285 (ada-goto-stmt-start)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2286 (list (progn (back-to-indentation) (point)) 'ada-stmt-end-indent)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2287
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2288 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2289 ;; starting with '-' (comment)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2290 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2291
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2292 ((= (char-after) ?-)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2293 (if ada-indent-comment-as-code
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2294
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2295 ;; Indent comments on previous line comments if required
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2296 ;; We must use a search-forward (even if the code is more complex),
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2297 ;; since we want to find the beginning of the comment.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2298 (let (pos)
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2299
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2300 (if (and ada-indent-align-comments
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2301 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2302 (forward-line -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2303 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2304 (while (and (not pos)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2305 (search-forward "--"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2306 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2307 (end-of-line) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2308 t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2309 (unless (ada-in-string-p)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2310 (setq pos (point))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2311 pos))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2312 (list (- pos 2) 0)
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2313
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2314 ;; Else always on previous line
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2315 (ada-indent-on-previous-lines nil orgpoint orgpoint)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2316
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2317 ;; Else same indentation as the previous line
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2318 (list (save-excursion (back-to-indentation) (point)) 0)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2319
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2320 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2321 ;; starting with '#' (preprocessor line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2322 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2323
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2324 ((and (= (char-after) ?#)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2325 (equal ada-which-compiler 'gnat)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2326 (looking-at "#[ \t]*\\(if\\|els\\(e\\|if\\)\\|end[ \t]*if\\)"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2327 (list (save-excursion (beginning-of-line) (point)) 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2328
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2329 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2330 ;; starting with ')' (end of a parameter list)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2331 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2332
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2333 ((and (not (eobp)) (= (char-after) ?\)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2334 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2335 (forward-char 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2336 (backward-sexp 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2337 (list (point) 0)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2338
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2339 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2340 ;; new/abstract/separate
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2341 ;;---------------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2342
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2343 ((looking-at "\\(new\\|abstract\\|separate\\)\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2344 (ada-indent-on-previous-lines nil orgpoint orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2345
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2346 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2347 ;; package/function/procedure
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2348 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2349
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2350 ((and (or (= (char-after) ?p) (= (char-after) ?f))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2351 (looking-at "\\<\\(package\\|function\\|procedure\\)\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2352 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2353 ;; Go up until we find either a generic section, or the end of the
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2354 ;; previous subprogram/package
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2355 (let (found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2356 (while (and (not found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2357 (ada-search-ignore-string-comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2358 "\\<\\(generic\\|end\\|begin\\|package\\|procedure\\|function\\)\\>" t))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2359
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2360 ;; avoid "with procedure"... in generic parts
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2361 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2362 (forward-word -1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2363 (setq found (not (looking-at "with"))))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2364
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2365 (if (looking-at "generic")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2366 (list (progn (back-to-indentation) (point)) 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2367 (ada-indent-on-previous-lines nil orgpoint orgpoint))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2368
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2369 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2370 ;; label
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2371 ;;---------------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2372
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2373 ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2374 (if (ada-in-decl-p)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2375 (ada-indent-on-previous-lines nil orgpoint orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2376 (append (ada-indent-on-previous-lines nil orgpoint orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2377 '(ada-label-indent))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2378
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2379 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2380
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2381 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2382 ;; Other syntaxes
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2383 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2384 (or result (ada-indent-on-previous-lines nil orgpoint orgpoint))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2385
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2386 (defun ada-indent-on-previous-lines (&optional nomove orgpoint initial-pos)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2387 "Calculate the indentation for the new line after ORGPOINT.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2388 The result list is based on the previous lines in the buffer.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2389 If NOMOVE is nil, moves point to the beginning of the current statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2390 if INITIAL-POS is non-nil, moves point to INITIAL-POS before calculation."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2391 (if initial-pos
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2392 (goto-char initial-pos))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2393 (let ((oldpoint (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2394
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2395 ;; Is inside a parameter-list ?
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2396 (if (ada-in-paramlist-p)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2397 (ada-get-indent-paramlist)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2398
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2399 ;; move to beginning of current statement
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2400 (unless nomove
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2401 (ada-goto-stmt-start))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2402
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2403 ;; no beginning found => don't change indentation
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2404 (if (and (eq oldpoint (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2405 (not nomove))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2406 (ada-get-indent-nochange)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2407
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2408 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2409 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2410 ((and
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2411 ada-indent-to-open-paren
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2412 (ada-in-open-paren-p))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2413 (ada-get-indent-open-paren))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2414 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2415 ((looking-at "end\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2416 (ada-get-indent-end orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2417 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2418 ((looking-at ada-loop-start-re)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2419 (ada-get-indent-loop orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2420 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2421 ((looking-at ada-subprog-start-re)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2422 (ada-get-indent-subprog orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2423 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2424 ((looking-at ada-block-start-re)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2425 (ada-get-indent-block-start orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2426 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2427 ((looking-at "\\(sub\\)?type\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2428 (ada-get-indent-type orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2429 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2430 ;; "then" has to be included in the case of "select...then abort"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2431 ;; statements, since (goto-stmt-start) at the beginning of
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2432 ;; the current function would leave the cursor on that position
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2433 ((looking-at "\\(\\(els\\)?if\\>\\)\\|then abort\\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2434 (ada-get-indent-if orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2435 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2436 ((looking-at "case\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2437 (ada-get-indent-case orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2438 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2439 ((looking-at "when\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2440 (ada-get-indent-when orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2441 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2442 ((looking-at "\\(\\sw\\|_\\)+[ \t\n]*:[^=]")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2443 (ada-get-indent-label orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2444 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2445 ((looking-at "separate\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2446 (ada-get-indent-nochange))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2447 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2448 ((looking-at "with\\>\\|use\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2449 ;; Are we still in that statement, or are we in fact looking at
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2450 ;; the previous one ?
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2451 (if (save-excursion (search-forward ";" oldpoint t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2452 (list (progn (back-to-indentation) (point)) 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2453 (list (point) (if (looking-at "with")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2454 'ada-with-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2455 'ada-use-indent))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2456 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2457 (t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2458 (ada-get-indent-noindent orgpoint)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2459 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2460
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2461 (defun ada-get-indent-open-paren ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2462 "Calculates the indentation when point is behind an unclosed parenthesis."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2463 (list (ada-in-open-paren-p) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2464
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2465 (defun ada-get-indent-nochange ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2466 "Return the current indentation of the previous line."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2467 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2468 (forward-line -1)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2469 (back-to-indentation)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2470 (list (point) 0)))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2471
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2472 (defun ada-get-indent-paramlist ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2473 "Calculates the indentation when point is inside a parameter list."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2474 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2475 (ada-search-ignore-string-comment "[^ \t\n]" t nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2476 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2477 ;; in front of the first parameter
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2478 ((= (char-after) ?\()
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2479 (goto-char (match-end 0))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2480 (list (point) 0))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2481
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2482 ;; in front of another parameter
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2483 ((= (char-after) ?\;)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2484 (goto-char (cdr (ada-search-ignore-string-comment "(\\|;" t nil t)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2485 (ada-goto-next-non-ws)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2486 (list (point) 0))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2487
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2488 ;; inside a parameter declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2489 (t
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2490 (goto-char (cdr (ada-search-ignore-string-comment "(\\|;" t nil t)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2491 (ada-goto-next-non-ws)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2492 (list (point) 'ada-broken-indent)))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2493
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2494 (defun ada-get-indent-end (orgpoint)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2495 "Calculates the indentation when point is just before an end_statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2496 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2497 (let ((defun-name nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2498 (indent nil))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2499
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2500 ;; is the line already terminated by ';' ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2501 (if (save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2502 (ada-search-ignore-string-comment ";" nil orgpoint nil
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2503 'search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2504
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2505 ;; yes, look what's following 'end'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2506 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2507 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2508 (ada-goto-next-non-ws)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2509 (cond
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2510 ((looking-at "\\<\\(loop\\|select\\|if\\|case\\)\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2511 (save-excursion (ada-check-matching-start (match-string 0)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2512 (list (save-excursion (back-to-indentation) (point)) 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2513
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2514 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2515 ;; loop/select/if/case/record/select
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2516 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2517 ((looking-at "\\<record\\>")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2518 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2519 (ada-check-matching-start (match-string 0))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2520 ;; we are now looking at the matching "record" statement
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2521 (forward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2522 (ada-goto-stmt-start)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2523 ;; now on the matching type declaration, or use clause
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2524 (unless (looking-at "\\(for\\|type\\)\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2525 (ada-search-ignore-string-comment "\\<type\\>" t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2526 (list (progn (back-to-indentation) (point)) 0)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2527 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2528 ;; a named block end
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2529 ;;
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
2530 ((looking-at ada-ident-re)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2531 (setq defun-name (match-string 0))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2532 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2533 (ada-goto-matching-start 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2534 (ada-check-defun-name defun-name))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2535 (list (progn (back-to-indentation) (point)) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2536 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2537 ;; a block-end without name
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2538 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2539 ((= (char-after) ?\;)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2540 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2541 (ada-goto-matching-start 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2542 (if (looking-at "\\<begin\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2543 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2544 (setq indent (list (point) 0))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2545 (if (ada-goto-matching-decl-start t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2546 (list (progn (back-to-indentation) (point)) 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2547 indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2548 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2549 ;; anything else - should maybe signal an error ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2550 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2551 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2552 (list (save-excursion (back-to-indentation) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2553 'ada-broken-indent))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2554
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2555 (list (save-excursion (back-to-indentation) (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2556 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2557
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2558 (defun ada-get-indent-case (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2559 "Calculates the indentation when point is just before a case statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2560 ORGPOINT is the limit position used in the calculation."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2561 (let ((match-cons nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2562 (opos (point)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2563 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2564 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2565 ;; case..is..when..=>
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2566 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2567 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2568 (setq match-cons (and
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2569 ;; the `=>' must be after the keyword `is'.
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2570 (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2571 "is" nil orgpoint nil 'word-search-forward)
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2572 (ada-search-ignore-string-comment
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2573 "[ \t\n]+=>" nil orgpoint))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2574 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2575 (goto-char (car match-cons))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2576 (unless (ada-search-ignore-string-comment "when" t opos)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2577 (error "missing 'when' between 'case' and '=>'"))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2578 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2579 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2580 ;; case..is..when
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2581 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2582 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2583 (setq match-cons (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2584 "when" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2585 (goto-char (cdr match-cons))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2586 (list (save-excursion (back-to-indentation) (point)) 'ada-broken-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2587 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2588 ;; case..is
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2589 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2590 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2591 (setq match-cons (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2592 "is" nil orgpoint nil 'word-search-forward)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2593 (list (save-excursion (back-to-indentation) (point)) 'ada-when-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2594 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2595 ;; incomplete case
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2596 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2597 (t
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2598 (list (save-excursion (back-to-indentation) (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2599 'ada-broken-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2600
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2601 (defun ada-get-indent-when (orgpoint)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2602 "Calculates the indentation when point is just before a when statement.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2603 ORGPOINT is the limit position used in the calculation."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2604 (let ((cur-indent (save-excursion (back-to-indentation) (point))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2605 (if (ada-search-ignore-string-comment "[ \t\n]*=>" nil orgpoint)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2606 (list cur-indent 'ada-indent)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2607 (list cur-indent 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2608
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2609 (defun ada-get-indent-if (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2610 "Calculates the indentation when point is just before an if statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2611 ORGPOINT is the limit position used in the calculation."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2612 (let ((cur-indent (save-excursion (back-to-indentation) (point)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2613 (match-cons nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2614 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2615 ;; Move to the correct then (ignore all "and then")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2616 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2617 (while (and (setq match-cons (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2618 "\\<\\(then\\|and[ \t]*then\\)\\>"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2619 nil orgpoint))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2620 (= (char-after (car match-cons)) ?a)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2621 ;; If "then" was found (we are looking at it)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2622 (if match-cons
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2623 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2624 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2625 ;; 'then' first in separate line ?
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2626 ;; => indent according to 'then',
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2627 ;; => else indent according to 'if'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2628 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2629 (if (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2630 (back-to-indentation)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2631 (looking-at "\\<then\\>"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2632 (setq cur-indent (save-excursion (back-to-indentation) (point))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2633 ;; skip 'then'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2634 (forward-word 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2635 (list cur-indent 'ada-indent))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2636
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2637 (list cur-indent 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2638
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2639 (defun ada-get-indent-block-start (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2640 "Calculates the indentation when point is at the start of a block.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2641 ORGPOINT is the limit position used in the calculation."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2642 (let ((pos nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2643 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2644 ((save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2645 (forward-word 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2646 (setq pos (ada-goto-next-non-ws orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2647 (goto-char pos)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2648 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2649 (ada-indent-on-previous-lines t orgpoint)))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2650
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2651 ;; nothing follows the block-start
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2652 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2653 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2654
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2655 (defun ada-get-indent-subprog (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2656 "Calculates the indentation when point is just before a subprogram.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2657 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2658 (let ((match-cons nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2659 (cur-indent (save-excursion (back-to-indentation) (point)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2660 (foundis nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2661 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2662 ;; is there an 'is' in front of point ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2663 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2664 (if (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2665 (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2666 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2667 "\\<\\(is\\|do\\)\\>" nil orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2668 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2669 ;; yes, then skip to its end
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2670 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2671 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2672 (setq foundis t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2673 (goto-char (cdr match-cons)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2674 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2675 ;; no, then goto next non-ws, if there is one in front of point
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2676 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2677 (progn
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2678 (unless (ada-goto-next-non-ws orgpoint)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2679 (goto-char orgpoint))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2680
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2681 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2682 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2683 ;; nothing follows 'is'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2684 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2685 ((and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2686 foundis
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2687 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2688 (not (ada-search-ignore-string-comment
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2689 "[^ \t\n]" nil orgpoint t))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2690 (list cur-indent 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2691 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2692 ;; is abstract/separate/new ...
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2693 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2694 ((and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2695 foundis
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2696 (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2697 (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2698 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2699 "\\<\\(separate\\|new\\|abstract\\)\\>"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2700 nil orgpoint))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2701 (goto-char (car match-cons))
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
2702 (ada-search-ignore-string-comment ada-subprog-start-re t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2703 (ada-get-indent-noindent orgpoint))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2704 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2705 ;; something follows 'is'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2706 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2707 ((and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2708 foundis
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2709 (save-excursion (setq match-cons (ada-goto-next-non-ws orgpoint)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2710 (goto-char match-cons)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2711 (ada-indent-on-previous-lines t orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2712 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2713 ;; no 'is' but ';'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2714 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2715 ((save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2716 (ada-search-ignore-string-comment ";" nil orgpoint nil 'search-forward))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2717 (list cur-indent 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2718 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2719 ;; no 'is' or ';'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2720 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2721 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2722 (list cur-indent 'ada-broken-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2723
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2724 (defun ada-get-indent-noindent (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2725 "Calculates the indentation when point is just before a 'noindent stmt'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2726 ORGPOINT is the limit position used in the calculation."
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2727 (let ((label 0))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2728 (save-excursion
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2729 (beginning-of-line)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2730
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2731 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2732
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2733 ;; This one is called when indenting a line preceded by a multi-line
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2734 ;; subprogram declaration (in that case, we are at this point inside
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2735 ;; the parameter declaration list)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2736 ((ada-in-paramlist-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2737 (ada-previous-procedure)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2738 (list (save-excursion (back-to-indentation) (point)) 0))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2739
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2740 ;; This one is called when indenting the second line of a multi-line
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2741 ;; declaration section, in a declare block or a record declaration
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2742 ((looking-at "[ \t]*\\(\\sw\\|_\\)*[ \t]*,[ \t]*$")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2743 (list (save-excursion (back-to-indentation) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2744 'ada-broken-decl-indent))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2745
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2746 ;; This one is called in every over case when indenting a line at the
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2747 ;; top level
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2748 (t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2749 (if (looking-at ada-named-block-re)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2750 (setq label (- ada-label-indent))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2751
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2752 (let (p)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2753
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2754 ;; "with private" or "null record" cases
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2755 (if (or (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2756 (and (ada-search-ignore-string-comment "\\<private\\>" nil orgpoint)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2757 (setq p (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2758 (save-excursion (forward-char -7);; skip back "private"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2759 (ada-goto-previous-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2760 (looking-at "with"))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2761 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2762 (and (ada-search-ignore-string-comment "\\<record\\>" nil orgpoint)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2763 (setq p (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2764 (save-excursion (forward-char -6);; skip back "record"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2765 (ada-goto-previous-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2766 (looking-at "null")))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2767 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2768 (goto-char p)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2769 (re-search-backward "\\<\\(type\\|subtype\\)\\>" nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2770 (list (save-excursion (back-to-indentation) (point)) 0)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2771 (if (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2772 (ada-search-ignore-string-comment ";" nil orgpoint nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2773 'search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2774 (list (+ (save-excursion (back-to-indentation) (point)) label) 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2775 (list (+ (save-excursion (back-to-indentation) (point)) label)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2776 'ada-broken-indent)))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2777
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2778 (defun ada-get-indent-label (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2779 "Calculates the indentation when before a label or variable declaration.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2780 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2781 (let ((match-cons nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2782 (cur-indent (save-excursion (back-to-indentation) (point))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2783 (ada-search-ignore-string-comment ":" nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2784 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2785 ;; loop label
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2786 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2787 (setq match-cons (ada-search-ignore-string-comment
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2788 ada-loop-start-re nil orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2789 (goto-char (car match-cons))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2790 (ada-get-indent-loop orgpoint))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2791
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2792 ;; declare label
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2793 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2794 (setq match-cons (ada-search-ignore-string-comment
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2795 "\\<declare\\|begin\\>" nil orgpoint)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2796 (goto-char (car match-cons))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2797 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2798
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2799 ;; variable declaration
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2800 ((ada-in-decl-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2801 (if (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2802 (ada-search-ignore-string-comment ";" nil orgpoint))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2803 (list cur-indent 0)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2804 (list cur-indent 'ada-broken-indent)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2805
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2806 ;; nothing follows colon
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2807 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2808 (list cur-indent '(- ada-label-indent))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2809
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2810 (defun ada-get-indent-loop (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2811 "Calculates the indentation when just before a loop or a for ... use.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2812 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2813 (let ((match-cons nil)
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2814 (pos (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2815
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2816 ;; If looking at a named block, skip the label
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2817 (label (save-excursion
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2818 (beginning-of-line)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2819 (if (looking-at ada-named-block-re)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2820 (- ada-label-indent)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2821 0))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2822
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2823 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2824
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2825 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2826 ;; statement complete
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2827 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2828 ((save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2829 (ada-search-ignore-string-comment ";" nil orgpoint nil
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2830 'search-forward))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2831 (list (+ (save-excursion (back-to-indentation) (point)) label) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2832 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2833 ;; simple loop
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2834 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2835 ((looking-at "loop\\>")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2836 (setq pos (ada-get-indent-block-start orgpoint))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2837 (if (equal label 0)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2838 pos
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2839 (list (+ (car pos) label) (cdr pos))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2840
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2841 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2842 ;; 'for'- loop (or also a for ... use statement)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2843 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2844 ((looking-at "for\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2845 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2846 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2847 ;; for ... use
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2848 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2849 ((save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2850 (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2851 (goto-char (match-end 0))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2852 (ada-goto-next-non-ws orgpoint)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2853 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2854 (if (= (char-after) ?') (forward-word 1) t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2855 (ada-goto-next-non-ws orgpoint)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2856 (looking-at "\\<use\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2857 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2858 ;; check if there is a 'record' before point
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2859 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2860 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2861 (setq match-cons (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2862 "record" nil orgpoint nil 'word-search-forward))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2863 t)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2864 (if match-cons
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2865 (goto-char (car match-cons)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2866 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2867 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2868 ;; for..loop
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2869 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2870 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2871 (setq match-cons (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2872 "loop" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2873 (goto-char (car match-cons))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2874 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2875 ;; indent according to 'loop', if it's first in the line;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2876 ;; otherwise to 'for'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2877 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2878 (unless (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2879 (back-to-indentation)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2880 (looking-at "\\<loop\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2881 (goto-char pos))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2882 (list (+ (save-excursion (back-to-indentation) (point)) label)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2883 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2884 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2885 ;; for-statement is broken
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2886 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2887 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2888 (list (+ (save-excursion (back-to-indentation) (point)) label)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2889 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2890
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2891 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2892 ;; 'while'-loop
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2893 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2894 ((looking-at "while\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2895 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2896 ;; while..loop ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2897 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2898 (if (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2899 (setq match-cons (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2900 "loop" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2901
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2902 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2903 (goto-char (car match-cons))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2904 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2905 ;; indent according to 'loop', if it's first in the line;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2906 ;; otherwise to 'while'.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2907 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2908 (unless (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2909 (back-to-indentation)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2910 (looking-at "\\<loop\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2911 (goto-char pos))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2912 (list (+ (save-excursion (back-to-indentation) (point)) label)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2913 'ada-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2914
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2915 (list (+ (save-excursion (back-to-indentation) (point)) label)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2916 'ada-broken-indent))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2917
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2918 (defun ada-get-indent-type (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2919 "Calculates the indentation when before a type statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2920 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2921 (let ((match-dat nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2922 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2923 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2924 ;; complete record declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2925 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2926 ((save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2927 (and
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2928 (setq match-dat (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2929 "end" nil orgpoint nil 'word-search-forward))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2930 (ada-goto-next-non-ws)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2931 (looking-at "\\<record\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2932 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2933 (ada-goto-next-non-ws)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2934 (= (char-after) ?\;)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2935 (goto-char (car match-dat))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2936 (list (save-excursion (back-to-indentation) (point)) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2937 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2938 ;; record type
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2939 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2940 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2941 (setq match-dat (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2942 "record" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2943 (goto-char (car match-dat))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2944 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2945 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2946 ;; complete type declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2947 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2948 ((save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2949 (ada-search-ignore-string-comment ";" nil orgpoint nil
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2950 'search-forward))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2951 (list (save-excursion (back-to-indentation) (point)) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2952 ;;
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
2953 ;; "type ... is", but not "type ... is ...", which is broken
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2954 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2955 ((save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2956 (and
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2957 (ada-search-ignore-string-comment "is" nil orgpoint nil
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2958 'word-search-forward)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2959 (not (ada-goto-next-non-ws orgpoint))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2960 (list (save-excursion (back-to-indentation) (point)) 'ada-broken-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2961 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2962 ;; broken statement
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2963 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2964 (t
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2965 (list (save-excursion (back-to-indentation) (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2966 'ada-broken-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2967
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2968
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2969 ;; -----------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2970 ;; -- searching and matching
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2971 ;; -----------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2972
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2973 (defun ada-goto-stmt-start ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2974 "Moves point to the beginning of the statement that point is in or after.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2975 Returns the new position of point.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2976 As a special case, if we are looking at a closing parenthesis, skip to the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2977 open parenthesis."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2978 (let ((match-dat nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2979 (orgpoint (point)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2980
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2981 (setq match-dat (ada-search-prev-end-stmt))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2982 (if match-dat
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2983
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2984 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2985 ;; found a previous end-statement => check if anything follows
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2986 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2987 (unless (looking-at "declare")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2988 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2989 (unless (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2990 (goto-char (cdr match-dat))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2991 (ada-goto-next-non-ws orgpoint))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2992 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2993 ;; nothing follows => it's the end-statement directly in
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2994 ;; front of point => search again
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2995 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2996 (setq match-dat (ada-search-prev-end-stmt)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2997 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2998 ;; if found the correct end-statement => goto next non-ws
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2999 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3000 (if match-dat
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3001 (goto-char (cdr match-dat)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3002 (ada-goto-next-non-ws)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3003 ))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
3004
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3005 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3006 ;; no previous end-statement => we are at the beginning of the
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3007 ;; accessible part of the buffer
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3008 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3009 (progn
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3010 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3011 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3012 ;; skip to the very first statement, if there is one
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3013 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3014 (unless (ada-goto-next-non-ws orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3015 (goto-char orgpoint))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3016 (point)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3017
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3018
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3019 (defun ada-search-prev-end-stmt ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3020 "Moves point to previous end-statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3021 Returns a cons cell whose car is the beginning and whose cdr the end of the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3022 match."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3023 (let ((match-dat nil)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3024 (found nil))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3025
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3026 ;; search until found or beginning-of-buffer
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3027 (while
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3028 (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3029 (not found)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3030 (setq match-dat (ada-search-ignore-string-comment
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3031 ada-end-stmt-re t)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3032
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3033 (goto-char (car match-dat))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3034 (unless (ada-in-open-paren-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3035 (if (and (looking-at
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3036 "\\<\\(record\\|loop\\|select\\|else\\|then\\)\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3037 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3038 (ada-goto-previous-word)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3039 (looking-at "\\<\\(end\\|or\\|and\\)\\>[ \t]*[^;]")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3040 (forward-word -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3041
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3042 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3043 (goto-char (cdr match-dat))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3044 (ada-goto-next-non-ws)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3045 (looking-at "(")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3046 ;; words that can go after an 'is'
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3047 (unless (looking-at
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3048 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3049 (concat "\\<"
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3050 (regexp-opt '("separate" "access" "array"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3051 "abstract" "new") t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3052 "\\>\\|(")))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3053 (setq found t))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3054 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3055
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3056 (if found
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3057 match-dat
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3058 nil)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3059
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3060
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3061 (defun ada-goto-next-non-ws (&optional limit)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3062 "Skips white spaces, newlines and comments to next non-ws character.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3063 Stop the search at LIMIT.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3064 Do not call this function from within a string."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3065 (unless limit
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3066 (setq limit (point-max)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3067 (while (and (<= (point) limit)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3068 (progn (forward-comment 10000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3069 (if (and (not (eobp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3070 (save-excursion (forward-char 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3071 (ada-in-string-p)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3072 (progn (forward-sexp 1) t)))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3073 (if (< (point) limit)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3074 (point)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3075 nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3076 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3077
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3078
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3079 (defun ada-goto-stmt-end (&optional limit)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3080 "Moves point to the end of the statement that point is in or before.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3081 Returns the new position of point or nil if not found.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3082 Stop the search at LIMIT."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3083 (if (ada-search-ignore-string-comment ada-end-stmt-re nil limit)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3084 (point)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3085 nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3086
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3087
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3088 (defun ada-goto-next-word (&optional backward)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3089 "Moves point to the beginning of the next word of Ada code.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3090 If BACKWARD is non-nil, jump to the beginning of the previous word.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3091 Returns the new position of point or nil if not found."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3092 (let ((match-cons nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3093 (orgpoint (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3094 (old-syntax (char-to-string (char-syntax ?_))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3095 (modify-syntax-entry ?_ "w")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3096 (unless backward
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3097 (skip-syntax-forward "w"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3098 (if (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3099 (if backward
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3100 (ada-search-ignore-string-comment "\\w" t nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3101 (ada-search-ignore-string-comment "\\w" nil nil t)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3102 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3103 ;; move to the beginning of the word found
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3104 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3105 (progn
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3106 (goto-char (car match-cons))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3107 (skip-syntax-backward "w")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3108 (point))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3109 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3110 ;; if not found, restore old position of point
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3111 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3112 (goto-char orgpoint)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3113 'nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3114 (modify-syntax-entry ?_ old-syntax))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3115 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3116
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3117
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3118 (defun ada-check-matching-start (keyword)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3119 "Signals an error if matching block start is not KEYWORD.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3120 Moves point to the matching block start."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3121 (ada-goto-matching-start 0)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3122 (unless (looking-at (concat "\\<" keyword "\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3123 (error "matching start is not '%s'" keyword)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3124
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3125
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3126 (defun ada-check-defun-name (defun-name)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3127 "Checks if the name of the matching defun really is DEFUN-NAME.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3128 Assumes point to be already positioned by 'ada-goto-matching-start'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3129 Moves point to the beginning of the declaration."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3130
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3131 ;; named block without a `declare'
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3132 (if (save-excursion
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3133 (ada-goto-previous-word)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3134 (looking-at (concat "\\<" defun-name "\\> *:")))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3135 t ; do nothing
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3136 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3137 ;; 'accept' or 'package' ?
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3138 ;;
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3139 (unless (looking-at ada-subprog-start-re)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3140 (ada-goto-matching-decl-start))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3141 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3142 ;; 'begin' of 'procedure'/'function'/'task' or 'declare'
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3143 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3144 (save-excursion
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3145 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3146 ;; a named 'declare'-block ?
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3147 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3148 (if (looking-at "\\<declare\\>")
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3149 (ada-goto-stmt-start)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3150 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3151 ;; no, => 'procedure'/'function'/'task'/'protected'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3152 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3153 (progn
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3154 (forward-word 2)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3155 (backward-word 1)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3156 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3157 ;; skip 'body' 'type'
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3158 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3159 (if (looking-at "\\<\\(body\\|type\\)\\>")
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3160 (forward-word 1))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3161 (forward-sexp 1)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3162 (backward-sexp 1)))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3163 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3164 ;; should be looking-at the correct name
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3165 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3166 (unless (looking-at (concat "\\<" defun-name "\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3167 (error "matching defun has different name: %s"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3168 (buffer-substring (point)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3169 (progn (forward-sexp 1) (point))))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3170
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3171 (defun ada-goto-matching-decl-start (&optional noerror recursive)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3172 "Moves point to the matching declaration start of the current 'begin'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3173 If NOERROR is non-nil, it only returns nil if no match was found."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3174 (let ((nest-count 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3175 (first (not recursive))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3176 (count-generic nil)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3177 (stop-at-when nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3178 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3179
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3180 ;; Ignore "when" most of the time, except if we are looking at the
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3181 ;; beginning of a block (structure: case .. is
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3182 ;; when ... =>
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3183 ;; begin ...
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3184 ;; exception ... )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3185 (if (looking-at "begin")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3186 (setq stop-at-when t))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3187
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3188 (if (or
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3189 (looking-at "\\<\\(package\\|procedure\\|function\\)\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3190 (save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3191 (ada-search-ignore-string-comment
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3192 "\\<\\(package\\|procedure\\|function\\|generic\\)\\>" t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3193 (looking-at "generic")))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3194 (setq count-generic t))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3195
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3196 ;; search backward for interesting keywords
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3197 (while (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3198 (not (zerop nest-count))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3199 (ada-search-ignore-string-comment ada-matching-decl-start-re t))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3200 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3201 ;; calculate nest-depth
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3202 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3203 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3204 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3205 ((looking-at "end")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3206 (ada-goto-matching-start 1 noerror)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3207
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3208 ;; In some case, two begin..end block can follow each other closely,
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3209 ;; which we have to detect, as in
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3210 ;; procedure P is
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3211 ;; procedure Q is
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3212 ;; begin
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3213 ;; end;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3214 ;; begin -- here we should go to procedure, not begin
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3215 ;; end
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3216
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3217 (if (looking-at "begin")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3218 (let ((loop-again t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3219 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3220 (while loop-again
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3221 ;; If begin was just there as the beginning of a block
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3222 ;; (with no declare) then do nothing, otherwise just
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3223 ;; register that we have to find the statement that
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3224 ;; required the begin
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3225
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3226 (ada-search-ignore-string-comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3227 "\\<\\(declare\\|begin\\|end\\|procedure\\|function\\|task\\|package\\)\\>"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3228 t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3229
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3230 (if (looking-at "end")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3231 (ada-goto-matching-decl-start noerror t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3232
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3233 (setq loop-again nil)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3234 (unless (looking-at "begin")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3235 (setq nest-count (1+ nest-count))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3236 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3237 )))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3238 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3239 ((looking-at "generic")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3240 (if count-generic
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3241 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3242 (setq first nil)
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3243 (setq nest-count (1- nest-count)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3244 ;;
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3245 ((looking-at "if")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3246 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3247 (forward-word -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3248 (unless (looking-at "\\<end[ \t\n]*if\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3249 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3250 (setq nest-count (1- nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3251 (setq first nil)))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
3252
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3253 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3254 ((looking-at "declare\\|generic")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3255 (setq nest-count (1- nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3256 (setq first nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3257 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3258 ((looking-at "is")
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
3259 ;; check if it is only a type definition, but not a protected
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
3260 ;; type definition, which should be handled like a procedure.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3261 (if (or (looking-at "is[ \t]+<>")
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3262 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3263 (forward-comment -10000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3264 (forward-char -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3265
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3266 ;; Detect if we have a closing parenthesis (Could be
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3267 ;; either the end of subprogram parameters or (<>)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3268 ;; in a type definition
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3269 (if (= (char-after) ?\))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3270 (progn
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3271 (forward-char 1)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3272 (backward-sexp 1)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3273 (forward-comment -10000)
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3274 ))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3275 (skip-chars-backward "a-zA-Z0-9_.'")
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3276 (ada-goto-previous-word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3277 (and
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3278 (looking-at "\\<\\(sub\\)?type\\>")
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3279 (save-match-data
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3280 (ada-goto-previous-word)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3281 (not (looking-at "\\<protected\\>"))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3282 )) ; end of `or'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3283 (goto-char (match-beginning 0))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3284 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3285 (setq nest-count (1- nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3286 (setq first nil))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3287
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3288 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3289 ((looking-at "new")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3290 (if (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3291 (ada-goto-previous-word)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3292 (looking-at "is"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3293 (goto-char (match-beginning 0))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3294 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3295 ((and first
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3296 (looking-at "begin"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3297 (setq nest-count 0))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3298 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3299 ((looking-at "when")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3300 (if stop-at-when
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3301 (setq nest-count (1- nest-count)))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3302 (setq first nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3303 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3304 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3305 (setq nest-count (1+ nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3306 (setq first nil)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3307
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3308 );; end of loop
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3309
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3310 ;; check if declaration-start is really found
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3311 (if (and
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3312 (zerop nest-count)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3313 (if (looking-at "is")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3314 (ada-search-ignore-string-comment ada-subprog-start-re t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3315 (looking-at "declare\\|generic")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3316 t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3317 (if noerror nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3318 (error "no matching proc/func/task/declare/package/protected")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3319 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3320
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3321 (defun ada-goto-matching-start (&optional nest-level noerror gotothen)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3322 "Moves point to the beginning of a block-start.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3323 Which block depends on the value of NEST-LEVEL, which defaults to zero. If
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3324 NOERROR is non-nil, it only returns nil if no matching start was found.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3325 If GOTOTHEN is non-nil, point moves to the 'then' following 'if'."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3326 (let ((nest-count (if nest-level nest-level 0))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3327 (found nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3328 (pos nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3329
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3330 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3331 ;; search backward for interesting keywords
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3332 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3333 (while (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3334 (not found)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3335 (ada-search-ignore-string-comment ada-matching-start-re t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3336
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3337 (unless (and (looking-at "\\<record\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3338 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3339 (forward-word -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3340 (looking-at "\\<null\\>")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3341 (progn
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3342 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3343 ;; calculate nest-depth
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3344 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3345 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3346 ;; found block end => increase nest depth
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3347 ((looking-at "end")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3348 (setq nest-count (1+ nest-count)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3349
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3350 ;; found loop/select/record/case/if => check if it starts or
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3351 ;; ends a block
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3352 ((looking-at "loop\\|select\\|record\\|case\\|if")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3353 (setq pos (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3354 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3355 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3356 ;; check if keyword follows 'end'
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3357 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3358 (ada-goto-previous-word)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3359 (if (looking-at "\\<end\\>[ \t]*[^;]")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3360 ;; it ends a block => increase nest depth
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3361 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3362 (setq nest-count (1+ nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3363 (setq pos (point)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3364 ;; it starts a block => decrease nest depth
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3365 (setq nest-count (1- nest-count))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3366 (goto-char pos))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3367
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3368 ;; found package start => check if it really is a block
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3369 ((looking-at "package")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3370 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3371 ;; ignore if this is just a renames statement
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3372 (let ((current (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3373 (pos (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3374 "\\<\\(is\\|renames\\|;\\)\\>" nil)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3375 (if pos
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3376 (goto-char (car pos))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3377 (error (concat
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3378 "No matching 'is' or 'renames' for 'package' at"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3379 " line "
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3380 (number-to-string (count-lines (point-min)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3381 (1+ current)))))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3382 (unless (looking-at "renames")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3383 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3384 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3385 (ada-goto-next-non-ws)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3386 ;; ignore it if it is only a declaration with 'new'
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3387 (if (not (looking-at "\\<\\(new\\|separate\\)\\>"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3388 (setq nest-count (1- nest-count)))))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3389 ;; found task start => check if it has a body
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3390 ((looking-at "task")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3391 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3392 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3393 (ada-goto-next-non-ws)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3394 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3395 ((looking-at "\\<body\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3396 ((looking-at "\\<type\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3397 ;; In that case, do nothing if there is a "is"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3398 (forward-word 2);; skip "type"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3399 (ada-goto-next-non-ws);; skip type name
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3400
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3401 ;; Do nothing if we are simply looking at a simple
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3402 ;; "task type name;" statement with no block
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3403 (unless (looking-at ";")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3404 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3405 ;; Skip the parameters
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3406 (if (looking-at "(")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3407 (ada-search-ignore-string-comment ")" nil))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3408 (let ((tmp (ada-search-ignore-string-comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3409 "\\<\\(is\\|;\\)\\>" nil)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3410 (if tmp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3411 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3412 (goto-char (car tmp))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3413 (if (looking-at "is")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3414 (setq nest-count (1- nest-count)))))))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3415 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3416 ;; Check if that task declaration had a block attached to
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3417 ;; it (i.e do nothing if we have just "task name;")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3418 (unless (progn (forward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3419 (looking-at "[ \t]*;"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3420 (setq nest-count (1- nest-count)))))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3421 ;; all the other block starts
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3422 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3423 (setq nest-count (1- nest-count)))) ; end of 'cond'
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3424
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3425 ;; match is found, if nest-depth is zero
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3426 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3427 (setq found (zerop nest-count))))) ; end of loop
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3428
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3429 (if found
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3430 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3431 ;; match found => is there anything else to do ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3432 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3433 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3434 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3435 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3436 ;; found 'if' => skip to 'then', if it's on a separate line
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3437 ;; and GOTOTHEN is non-nil
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3438 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3439 ((and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3440 gotothen
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3441 (looking-at "if")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3442 (save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3443 (ada-search-ignore-string-comment "then" nil nil nil
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3444 'word-search-forward)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3445 (back-to-indentation)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3446 (looking-at "\\<then\\>")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3447 (goto-char (match-beginning 0)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3448 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3449 ;; found 'do' => skip back to 'accept'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3450 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3451 ((looking-at "do")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3452 (unless (ada-search-ignore-string-comment "accept" t nil nil
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3453 'word-search-backward)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3454 (error "missing 'accept' in front of 'do'"))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3455 (point))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3456
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3457 (if noerror
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3458 nil
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3459 (error "no matching start")))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3460
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3461
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3462 (defun ada-goto-matching-end (&optional nest-level noerror)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3463 "Moves point to the end of a block.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3464 Which block depends on the value of NEST-LEVEL, which defaults to zero.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3465 If NOERROR is non-nil, it only returns nil if found no matching start."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3466 (let ((nest-count (if nest-level nest-level 0))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3467 (found nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3468
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3469 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3470 ;; search forward for interesting keywords
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3471 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3472 (while (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3473 (not found)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3474 (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3475 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3476 (concat "\\<"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3477 (regexp-opt '("end" "loop" "select" "begin" "case"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3478 "if" "task" "package" "record" "do") t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3479 "\\>")) nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3480
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3481 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3482 ;; calculate nest-depth
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3483 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3484 (backward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3485 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3486 ;; found block end => decrease nest depth
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3487 ((looking-at "\\<end\\>")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3488 (setq nest-count (1- nest-count))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3489 ;; skip the following keyword
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3490 (if (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3491 (skip-chars-forward "end")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3492 (ada-goto-next-non-ws)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3493 (looking-at "\\<\\(loop\\|select\\|record\\|case\\|if\\)\\>"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3494 (forward-word 1)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3495 ;; found package start => check if it really starts a block
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3496 ((looking-at "\\<package\\>")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3497 (ada-search-ignore-string-comment "is" nil nil nil
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3498 'word-search-forward)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3499 (ada-goto-next-non-ws)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3500 ;; ignore and skip it if it is only a 'new' package
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3501 (if (looking-at "\\<new\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3502 (goto-char (match-end 0))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3503 (setq nest-count (1+ nest-count))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3504 ;; all the other block starts
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3505 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3506 (setq nest-count (1+ nest-count))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3507 (forward-word 1))) ; end of 'cond'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3508
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3509 ;; match is found, if nest-depth is zero
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3510 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3511 (setq found (zerop nest-count))) ; end of loop
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3512
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3513 (if found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3514 t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3515 (if noerror
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3516 nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3517 (error "no matching end")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3518 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3519
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3520
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3521 (defun ada-search-ignore-string-comment
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3522 (search-re &optional backward limit paramlists search-func)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3523 "Regexp-search for SEARCH-RE, ignoring comments, strings.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3524 If PARAMLISTS is nil, ignore parameter lists. Returns a cons cell of
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3525 begin and end of match data or nil, if not found.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3526 The search is done using SEARCH-FUNC, which should search backward if
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3527 BACKWARD is non-nil, forward otherwise. SEARCH-FUNC can be optimized in case
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3528 we are searching for a constant string.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3529 The search stops at pos LIMIT.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3530 Point is moved at the beginning of the search-re."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3531 (let (found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3532 begin
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3533 end
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3534 parse-result
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3535 (previous-syntax-table (syntax-table)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3536
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3537 (unless search-func
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3538 (setq search-func (if backward 're-search-backward 're-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3539
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3540 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3541 ;; search until found or end-of-buffer
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3542 ;; We have to test that we do not look further than limit
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3543 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3544 (set-syntax-table ada-mode-symbol-syntax-table)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3545 (while (and (not found)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3546 (or (not limit)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3547 (or (and backward (<= limit (point)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3548 (>= limit (point))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3549 (funcall search-func search-re limit 1))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3550 (setq begin (match-beginning 0))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3551 (setq end (match-end 0))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3552
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3553 (setq parse-result (parse-partial-sexp
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3554 (save-excursion (beginning-of-line) (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3555 (point)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3556
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3557 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3558 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3559 ;; If inside a string, skip it (and the following comments)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3560 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3561 ((ada-in-string-p parse-result)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3562 (if ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3563 (search-backward "\"" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3564 (goto-char (nth 8 parse-result)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3565 (unless backward (forward-sexp 1)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3566 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3567 ;; If inside a comment, skip it (and the following comments)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3568 ;; There is a special code for comments at the end of the file
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3569 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3570 ((ada-in-comment-p parse-result)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3571 (if ada-xemacs
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3572 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3573 (forward-line 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3574 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3575 (forward-comment -1))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3576 (goto-char (nth 8 parse-result)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3577 (unless backward
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3578 ;; at the end of the file, it is not possible to skip a comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3579 ;; so we just go at the end of the line
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3580 (if (forward-comment 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3581 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3582 (forward-comment 1000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3583 (beginning-of-line))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3584 (end-of-line))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3585 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3586 ;; directly in front of a comment => skip it, if searching forward
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3587 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3588 ((and (= (char-after begin) ?-) (= (char-after (1+ begin)) ?-))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3589 (unless backward (progn (forward-char -1) (forward-comment 1000))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3590
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3591 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3592 ;; found a parameter-list but should ignore it => skip it
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3593 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3594 ((and (not paramlists) (ada-in-paramlist-p))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3595 (if backward
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3596 (search-backward "(" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3597 (search-forward ")" nil t)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3598 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3599 ;; found what we were looking for
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3600 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3601 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3602 (setq found t)))) ; end of loop
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3603
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3604 (set-syntax-table previous-syntax-table)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3605
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3606 (if found
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3607 (cons begin end)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3608 nil)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3609
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3610 ;; -------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3611 ;; -- Testing the position of the cursor
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3612 ;; -------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3613
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3614 (defun ada-in-decl-p ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3615 "Returns t if point is inside a declarative part.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3616 Assumes point to be at the end of a statement."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3617 (or (ada-in-paramlist-p)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3618 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3619 (ada-goto-matching-decl-start t))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3620
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3621
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3622 (defun ada-looking-at-semi-or ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3623 "Returns t if looking-at an 'or' following a semicolon."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3624 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3625 (and (looking-at "\\<or\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3626 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3627 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3628 (ada-goto-stmt-start)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3629 (looking-at "\\<or\\>")))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3630
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3631
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3632 (defun ada-looking-at-semi-private ()
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3633 "Returns t if looking at the start of a private section in a package.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3634 Returns nil if the private is part of the package name, as in
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3635 'private package A is...' (this can only happen at top level)."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3636 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3637 (and (looking-at "\\<private\\>")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3638 (not (looking-at "\\<private[ \t]*\\(package\\|generic\\)"))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3639
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3640 ;; Make sure this is the start of a private section (ie after
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3641 ;; a semicolon or just after the package declaration, but not
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3642 ;; after a 'type ... is private' or 'is new ... with private'
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
3643 (progn (forward-comment -1000)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3644 (or (= (char-before) ?\;)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3645 (and (forward-word -3)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3646 (looking-at "\\<package\\>")))))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3647
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3648
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3649 (defun ada-in-paramlist-p ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3650 "Returns t if point is inside a parameter-list."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3651 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3652 (and
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3653 (ada-search-ignore-string-comment "(\\|)" t nil t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3654 ;; inside parentheses ?
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3655 (= (char-after) ?\()
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3656
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3657 ;; We could be looking at two things here:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3658 ;; operator definition: function "." (
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3659 ;; subprogram definition: procedure .... (
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3660 ;; Let's skip back over the first one
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3661 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3662 (skip-syntax-backward " ")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3663 (if (= (char-before) ?\")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3664 (backward-char 3)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3665 (backward-word 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3666 t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3667
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3668 ;; and now over the second one
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3669 (backward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3670
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3671 ;; We should ignore the case when the reserved keyword is in a
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3672 ;; comment (for instance, when we have:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3673 ;; -- .... package
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3674 ;; Test (A)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3675 ;; we should return nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3676
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3677 (not (ada-in-string-or-comment-p))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3678
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3679 ;; right keyword two words before parenthesis ?
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3680 ;; Type is in this list because of discriminants
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3681 (looking-at (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3682 (concat "\\<\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3683 "procedure\\|function\\|body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3684 "task\\|entry\\|accept\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3685 "access[ \t]+procedure\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3686 "access[ \t]+function\\|"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3687 "pragma\\|"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3688 "type\\)\\>"))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3689
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3690 (defun ada-search-ignore-complex-boolean (regexp backwardp)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3691 "Like `ada-search-ignore-string-comment', except that it also ignores
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3692 boolean expressions 'and then' and 'or else'."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3693 (let (result)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3694 (while (and (setq result (ada-search-ignore-string-comment regexp backwardp))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3695 (save-excursion (forward-word -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3696 (looking-at "and then\\|or else"))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3697 result))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3698
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3699 (defun ada-in-open-paren-p ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3700 "Returns the position of the first non-ws behind the last unclosed
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3701 parenthesis, or nil."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3702 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3703 (let ((parse (parse-partial-sexp
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3704 (point)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3705 (or (car (ada-search-ignore-complex-boolean
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3706 "\\<\\(;\\|is\\|then\\|loop\\|begin\\|else\\)\\>"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3707 t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3708 (point-min)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3709
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3710 (if (nth 1 parse)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3711 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3712 (goto-char (1+ (nth 1 parse)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3713 (skip-chars-forward " \t")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3714 (point))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3715
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3716
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3717 ;; -----------------------------------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3718 ;; -- Behavior Of TAB Key
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3719 ;; -----------------------------------------------------------
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3720
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3721 (defun ada-tab ()
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3722 "Do indenting or tabbing according to `ada-tab-policy'.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3723 In Transient Mark mode, if the mark is active, operate on the contents
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3724 of the region. Otherwise, operates only on the current line."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3725 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3726 (cond ((eq ada-tab-policy 'indent-rigidly) (ada-tab-hard))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3727 ((eq ada-tab-policy 'indent-auto)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3728 ;; transient-mark-mode and mark-active are not defined in XEmacs
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3729 (if (or (and ada-xemacs (funcall (symbol-function 'region-active-p)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3730 (and (not ada-xemacs)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3731 (symbol-value 'transient-mark-mode)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3732 (symbol-value 'mark-active)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3733 (ada-indent-region (region-beginning) (region-end))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3734 (ada-indent-current)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3735 ((eq ada-tab-policy 'always-tab) (error "not implemented"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3736 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3737
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3738 (defun ada-untab (arg)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3739 "Delete leading indenting according to `ada-tab-policy'."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3740 (interactive "P")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3741 (cond ((eq ada-tab-policy 'indent-rigidly) (ada-untab-hard))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3742 ((eq ada-tab-policy 'indent-auto) (error "not implemented"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3743 ((eq ada-tab-policy 'always-tab) (error "not implemented"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3744 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3745
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3746 (defun ada-indent-current-function ()
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3747 "Ada mode version of the indent-line-function."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3748 (interactive "*")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3749 (let ((starting-point (point-marker)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3750 (beginning-of-line)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3751 (ada-tab)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3752 (if (< (point) starting-point)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3753 (goto-char starting-point))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3754 (set-marker starting-point nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3755 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3756
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3757 (defun ada-tab-hard ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3758 "Indent current line to next tab stop."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3759 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3760 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3761 (beginning-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3762 (insert-char ? ada-indent))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3763 (if (save-excursion (= (point) (progn (beginning-of-line) (point))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3764 (forward-char ada-indent)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3765
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3766 (defun ada-untab-hard ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3767 "indent current line to previous tab stop."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3768 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3769 (let ((bol (save-excursion (progn (beginning-of-line) (point))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3770 (eol (save-excursion (progn (end-of-line) (point)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3771 (indent-rigidly bol eol (- 0 ada-indent))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3772
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3773
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3774
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3775 ;; ------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3776 ;; -- Miscellaneous
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3777 ;; ------------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3778
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3779 (defun ada-gnat-style ()
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3780 "Clean up comments, `(' and `,' for GNAT style checking switch."
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3781 (interactive)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3782 (save-excursion
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3783 (goto-char (point-min))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3784 (while (re-search-forward "--[ \t]*\\([^-]\\)" nil t)
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3785 (replace-match "-- \\1"))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3786 (goto-char (point-min))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3787 (while (re-search-forward "\\>(" nil t)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3788 (replace-match " ("))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3789 (goto-char (point-min))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3790 (while (re-search-forward "([ \t]+" nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3791 (replace-match "("))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3792 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3793 (while (re-search-forward ")[ \t]+)" nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3794 (replace-match "))"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3795 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3796 (while (re-search-forward "\\>:" nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3797 (replace-match " :"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3798 (goto-char (point-min))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3799 (while (re-search-forward ",\\<" nil t)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3800 (replace-match ", "))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3801 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3802 (while (re-search-forward "[ \t]*\\.\\.[ \t]*" nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3803 (replace-match " .. "))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3804 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3805 (while (re-search-forward "[ \t]*\\([-:+*/]\\)[ \t]*" nil t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3806 (if (not (ada-in-string-or-comment-p))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3807 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3808 (forward-char -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3809 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3810 ((looking-at "/=")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3811 (replace-match " /= "))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3812 ((looking-at ":=")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3813 (replace-match ":= "))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3814 ((not (looking-at "--"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3815 (replace-match " \\1 ")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3816 (forward-char 2))))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3817 ))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3818
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3819
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3820
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3821 ;; -------------------------------------------------------------
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3822 ;; -- Moving To Procedures/Packages/Statements
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3823 ;; -------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3824
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3825 (defun ada-move-to-start ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3826 "Moves point to the matching start of the current Ada structure."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3827 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3828 (let ((pos (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3829 (previous-syntax-table (syntax-table)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3830 (unwind-protect
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3831 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3832 (set-syntax-table ada-mode-symbol-syntax-table)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3833
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3834 (message "searching for block start ...")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3835 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3836 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3837 ;; do nothing if in string or comment or not on 'end ...;'
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3838 ;; or if an error occurs during processing
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3839 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3840 (or
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3841 (ada-in-string-or-comment-p)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3842 (and (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3843 (or (looking-at "[ \t]*\\<end\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3844 (backward-word 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3845 (or (looking-at "[ \t]*\\<end\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3846 (backward-word 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3847 (or (looking-at "[ \t]*\\<end\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3848 (error "not on end ...;")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3849 (ada-goto-matching-start 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3850 (setq pos (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3851
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3852 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3853 ;; on 'begin' => go on, according to user option
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3854 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3855 ada-move-to-declaration
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3856 (looking-at "\\<begin\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3857 (ada-goto-matching-decl-start)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3858 (setq pos (point))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3859
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3860 ) ; end of save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3861
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3862 ;; now really move to the found position
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3863 (goto-char pos)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3864 (message "searching for block start ... done"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3865
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3866 ;; restore syntax-table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3867 (set-syntax-table previous-syntax-table))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3868
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3869 (defun ada-move-to-end ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3870 "Moves point to the matching end of the block around point.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3871 Moves to 'begin' if in a declarative part."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3872 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3873 (let ((pos (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3874 (previous-syntax-table (syntax-table)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3875 (unwind-protect
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3876 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3877 (set-syntax-table ada-mode-symbol-syntax-table)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3878
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3879 (message "searching for block end ...")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3880 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3881
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3882 (forward-char 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3883 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3884 ;; directly on 'begin'
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3885 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3886 (ada-goto-previous-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3887 (looking-at "\\<begin\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3888 (ada-goto-matching-end 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3889 ;; on first line of defun declaration
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3890 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3891 (and (ada-goto-stmt-start)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3892 (looking-at "\\<function\\>\\|\\<procedure\\>" )))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3893 (ada-search-ignore-string-comment "begin" nil nil nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3894 'word-search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3895 ;; on first line of task declaration
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3896 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3897 (and (ada-goto-stmt-start)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3898 (looking-at "\\<task\\>" )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3899 (forward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3900 (ada-goto-next-non-ws)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3901 (looking-at "\\<body\\>")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3902 (ada-search-ignore-string-comment "begin" nil nil nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3903 'word-search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3904 ;; accept block start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3905 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3906 (and (ada-goto-stmt-start)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3907 (looking-at "\\<accept\\>" )))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3908 (ada-goto-matching-end 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3909 ;; package start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3910 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3911 (and (ada-goto-matching-decl-start t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3912 (looking-at "\\<package\\>")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3913 (ada-goto-matching-end 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3914 ;; inside a 'begin' ... 'end' block
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3915 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3916 (ada-goto-matching-decl-start t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3917 (ada-search-ignore-string-comment "begin" nil nil nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3918 'word-search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3919 ;; (hopefully ;-) everything else
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3920 (t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3921 (ada-goto-matching-end 1)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3922 (setq pos (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3923 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3924
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3925 ;; now really move to the position found
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3926 (goto-char pos)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3927 (message "searching for block end ... done"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3928
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3929 ;; restore syntax-table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3930 (set-syntax-table previous-syntax-table))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3931
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3932 (defun ada-next-procedure ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3933 "Moves point to next procedure."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3934 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3935 (end-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3936 (if (re-search-forward ada-procedure-start-regexp nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3937 (goto-char (match-beginning 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3938 (error "No more functions/procedures/tasks")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3939
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3940 (defun ada-previous-procedure ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3941 "Moves point to previous procedure."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3942 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3943 (beginning-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3944 (if (re-search-backward ada-procedure-start-regexp nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3945 (goto-char (match-beginning 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3946 (error "No more functions/procedures/tasks")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3947
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3948 (defun ada-next-package ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3949 "Moves point to next package."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3950 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3951 (end-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3952 (if (re-search-forward ada-package-start-regexp nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3953 (goto-char (match-beginning 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3954 (error "No more packages")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3955
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3956 (defun ada-previous-package ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3957 "Moves point to previous package."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3958 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3959 (beginning-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3960 (if (re-search-backward ada-package-start-regexp nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3961 (goto-char (match-beginning 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3962 (error "No more packages")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3963
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3964
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3965 ;; ------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3966 ;; -- Define keymap and menus for Ada
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3967 ;; -------------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3968
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3969 (defun ada-create-keymap ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3970 "Create the keymap associated with the Ada mode."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3971
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3972 ;; Indentation and Formatting
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3973 (define-key ada-mode-map "\C-j" 'ada-indent-newline-indent-conditional)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3974 (define-key ada-mode-map "\C-m" 'ada-indent-newline-indent-conditional)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3975 (define-key ada-mode-map "\t" 'ada-tab)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3976 (define-key ada-mode-map "\C-c\t" 'ada-justified-indent-current)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3977 (define-key ada-mode-map "\C-c\C-l" 'ada-indent-region)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3978 (if ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3979 (define-key ada-mode-map '(shift tab) 'ada-untab)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3980 (define-key ada-mode-map [S-tab] 'ada-untab))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3981 (define-key ada-mode-map "\C-c\C-f" 'ada-format-paramlist)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3982 ;; We don't want to make meta-characters case-specific.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3983
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3984 ;; Movement
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3985 (define-key ada-mode-map "\M-\C-e" 'ada-next-procedure)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3986 (define-key ada-mode-map "\M-\C-a" 'ada-previous-procedure)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3987 (define-key ada-mode-map "\C-c\C-a" 'ada-move-to-start)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3988 (define-key ada-mode-map "\C-c\C-e" 'ada-move-to-end)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3989
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3990 ;; Compilation
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3991 (unless (lookup-key ada-mode-map "\C-c\C-c")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3992 (define-key ada-mode-map "\C-c\C-c" 'compile))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3993
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3994 ;; Casing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3995 (define-key ada-mode-map "\C-c\C-b" 'ada-adjust-case-buffer)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3996 (define-key ada-mode-map "\C-c\C-t" 'ada-case-read-exceptions)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3997 (define-key ada-mode-map "\C-c\C-y" 'ada-create-case-exception)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3998
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3999 ;; On XEmacs, you can easily specify whether DEL should deletes
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4000 ;; one character forward or one character backward. Take this into
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4001 ;; account
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4002 (if (boundp 'delete-key-deletes-forward)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4003 (define-key ada-mode-map [backspace] 'backward-delete-char-untabify)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4004 (define-key ada-mode-map "\177" 'backward-delete-char-untabify))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4005
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4006 ;; Make body
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4007 (define-key ada-mode-map "\C-c\C-n" 'ada-make-subprogram-body)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4008
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4009 ;; Use predefined function of Emacs19 for comments (RE)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4010 (define-key ada-mode-map "\C-c;" 'comment-region)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4011 (define-key ada-mode-map "\C-c:" 'ada-uncomment-region)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4012 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4013
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4014
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4015 (defun ada-create-menu ()
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4016 "Create the ada menu as shown in the menu bar.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4017 This function is designed to be extensible, so that each compiler-specific file
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4018 can add its own items."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4019 ;; Note that the separators must have different length in the submenus
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4020 (autoload 'easy-menu-define "easymenu")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4021
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4022 (let ((m '("Ada"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4023 ("Help" ["Ada Mode" (info "ada-mode") t])))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4024 (option '(["Auto Casing" (setq ada-auto-case (not ada-auto-case))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4025 :style toggle :selected ada-auto-case]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4026 ["Auto Indent After Return"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4027 (setq ada-indent-after-return (not ada-indent-after-return))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4028 :style toggle :selected ada-indent-after-return]))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4029 (goto '(["Next compilation error" next-error t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4030 ["Previous Package" ada-previous-package t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4031 ["Next Package" ada-next-package t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4032 ["Previous Procedure" ada-previous-procedure t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4033 ["Next Procedure" ada-next-procedure t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4034 ["Goto Start Of Statement" ada-move-to-start t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4035 ["Goto End Of Statement" ada-move-to-end t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4036 ["-" nil nil]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4037 ["Other File" ff-find-other-file t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4038 ["Other File Other Window" ada-ff-other-window t]))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4039 (edit '(["Indent Line" ada-indent-current-function t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4040 ["Justify Current Indentation" ada-justified-indent-current t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4041 ["Indent Lines in Selection" ada-indent-region t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4042 ["Indent Lines in File" (ada-indent-region (point-min) (point-max)) t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4043 ["Format Parameter List" ada-format-paramlist t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4044 ["-" nil nil]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4045 ["Comment Selection" comment-region t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4046 ["Uncomment Selection" ada-uncomment-region t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4047 ["--" nil nil]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4048 ["Fill Comment Paragraph" fill-paragraph t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4049 ["Fill Comment Paragraph Justify" ada-fill-comment-paragraph-justify t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4050 ["Fill Comment Paragraph Postfix" ada-fill-comment-paragraph-postfix t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4051 ["---" nil nil]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4052 ["Adjust Case Selection" ada-adjust-case-region t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4053 ["Adjust Case Buffer" ada-adjust-case-buffer t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4054 ["Create Case Exception" ada-create-case-exception t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4055 ["Reload Case Exceptions" ada-case-read-exceptions t]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4056 ["----" nil nil]
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4057 ["Make body for subprogram" ada-make-subprogram-body t]))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4058
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4059 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4060
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4061 ;; Option menu present only if in Ada mode
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4062 (setq m (append m (list (append (list "Options"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4063 (if ada-xemacs :included :visible)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4064 '(string= mode-name "Ada"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4065 option))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4066
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4067 ;; Customize menu always present
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4068 (setq m (append m '(["Customize" (customize-group 'ada)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4069 (>= emacs-major-version 20)])))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4070
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4071 ;; Goto and Edit menus present only if in Ada mode
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4072 (setq m (append m (list (append (list "Goto"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4073 (if ada-xemacs :included :visible)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4074 '(string= mode-name "Ada"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4075 goto)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4076 (append (list "Edit"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4077 (if ada-xemacs :included :visible)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4078 '(string= mode-name "Ada"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4079 edit))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4080
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4081 (easy-menu-define ada-mode-menu ada-mode-map "Menu keymap for Ada mode" m)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4082 (if ada-xemacs
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4083 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4084 (easy-menu-add ada-mode-menu ada-mode-map)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4085 (define-key ada-mode-map [menu-bar] ada-mode-menu)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4086 (setq mode-popup-menu (cons "Ada mode" ada-mode-menu)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4087 )
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4088 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4089
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4090
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4091 ;; -------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4092 ;; Commenting/Uncommenting code
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4093 ;; The following two calls are provided to enhance the standard
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4094 ;; comment-region function, which only allows uncommenting if the
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4095 ;; comment is at the beginning of a line. If the line have been re-indented,
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4096 ;; we are unable to use comment-region, which makes no sense.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4097 ;;
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4098 ;; In addition, we provide an interface to the standard comment handling
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4099 ;; function for justifying the comments.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4100 ;; -------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4101
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4102 (defadvice comment-region (before ada-uncomment-anywhere)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4103 (if (and arg
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4104 (< arg 0)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4105 (string= mode-name "Ada"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4106 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4107 (let ((cs (concat "^[ \t]*" (regexp-quote comment-start))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4108 (goto-char beg)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4109 (while (re-search-forward cs end t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4110 (replace-match comment-start))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4111 ))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4112
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4113 (defun ada-uncomment-region (beg end &optional arg)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4114 "Delete `comment-start' at the beginning of a line in the region."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4115 (interactive "r\nP")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4116
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4117 ;; This advice is not needed anymore with Emacs21. However, for older
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4118 ;; versions, as well as for XEmacs, we still need to enable it.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4119 (if (or (<= emacs-major-version 20) (boundp 'running-xemacs))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4120 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4121 (ad-activate 'comment-region)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4122 (comment-region beg end (- (or arg 1)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4123 (ad-deactivate 'comment-region))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4124 (comment-region beg end (list (- (or arg 1))))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4125
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4126 (defun ada-fill-comment-paragraph-justify ()
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4127 "Fills current comment paragraph and justifies each line as well."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4128 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4129 (ada-fill-comment-paragraph 'full))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4130
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4131 (defun ada-fill-comment-paragraph-postfix ()
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4132 "Fills current comment paragraph and justifies each line as well.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4133 Adds `ada-fill-comment-postfix' at the end of each line."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4134 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4135 (ada-fill-comment-paragraph 'full t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4136
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4137 (defun ada-fill-comment-paragraph (&optional justify postfix)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4138 "Fills the current comment paragraph.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4139 If JUSTIFY is non-nil, each line is justified as well.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4140 If POSTFIX and JUSTIFY are non-nil, `ada-fill-comment-postfix' is appended
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4141 to each filled and justified line.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4142 The paragraph is indented on the first line."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4143 (interactive "P")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4144
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4145 ;; check if inside comment or just in front a comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4146 (if (and (not (ada-in-comment-p))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4147 (not (looking-at "[ \t]*--")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4148 (error "not inside comment"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4149
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4150 (let* ((indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4151 (from)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4152 (to)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4153 (opos (point-marker))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4154
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4155 ;; Sets this variable to nil, otherwise it prevents
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4156 ;; fill-region-as-paragraph to work on Emacs <= 20.2
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4157 (parse-sexp-lookup-properties nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4158
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4159 fill-prefix
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4160 (fill-column (current-fill-column)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4161
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4162 ;; Find end of paragraph
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4163 (back-to-indentation)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4164 (while (and (not (eobp)) (looking-at "--[ \t]*[^ \t\n]"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4165 (forward-line 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4166
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4167 ;; If we were at the last line in the buffer, create a dummy empty
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4168 ;; line at the end of the buffer.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4169 (if (eolp)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4170 (insert "\n")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4171 (back-to-indentation)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4172 (beginning-of-line)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4173 (setq to (point-marker))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4174 (goto-char opos)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4175
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4176 ;; Find beginning of paragraph
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4177 (back-to-indentation)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4178 (while (and (not (bobp)) (looking-at "--[ \t]*[^ \t\n]"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4179 (forward-line -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4180 (back-to-indentation))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4181
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4182 ;; We want one line to above the first one, unless we are at the beginning
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4183 ;; of the buffer
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4184 (unless (bobp)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4185 (forward-line 1))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4186 (beginning-of-line)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4187 (setq from (point-marker))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4188
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4189 ;; Calculate the indentation we will need for the paragraph
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4190 (back-to-indentation)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4191 (setq indent (current-column))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4192 ;; unindent the first line of the paragraph
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4193 (delete-region from (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4194
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4195 ;; Remove the old postfixes
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4196 (goto-char from)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4197 (while (re-search-forward "--\n" to t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4198 (replace-match "\n"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4199
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4200 ;; Remove the old prefixes (so that the number of spaces after -- is not
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4201 ;; relevant), except on the first one since `fill-region-as-paragraph'
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4202 ;; would not put it back on the first line.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4203 (goto-char (+ from 2))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4204 (while (re-search-forward "^-- *" to t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4205 (replace-match " "))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
4206
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4207 (goto-char (1- to))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4208 (setq to (point-marker))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4209
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4210 ;; Indent and justify the paragraph
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4211 (setq fill-prefix ada-fill-comment-prefix)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4212 (set-left-margin from to indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4213 (if postfix
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4214 (setq fill-column (- fill-column (length ada-fill-comment-postfix))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4215
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4216 (fill-region-as-paragraph from to justify)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4217
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4218 ;; Add the postfixes if required
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4219 (if postfix
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4220 (save-restriction
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4221 (goto-char from)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4222 (narrow-to-region from to)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4223 (while (not (eobp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4224 (end-of-line)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4225 (insert-char ? (- fill-column (current-column)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4226 (insert ada-fill-comment-postfix)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4227 (forward-line))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4228 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4229
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4230 ;; In Emacs <= 20.2 and XEmacs <=20.4, there is a bug, and a newline is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4231 ;; inserted at the end. Delete it
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4232 (if (or ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4233 (<= emacs-major-version 19)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4234 (and (= emacs-major-version 20)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4235 (<= emacs-minor-version 2)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4236 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4237 (goto-char to)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4238 (end-of-line)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4239 (delete-char 1)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4240
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4241 (goto-char opos)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4242
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4243
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4244 ;; ---------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4245 ;; support for find-file.el
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4246 ;; These functions are used by find-file to guess the file names from
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4247 ;; unit names, and to find the other file (spec or body) from the current
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4248 ;; file (body or spec).
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4249 ;; It is also used to find in which function we are, so as to put the
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4250 ;; cursor at the correct position.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4251 ;; Standard Ada does not force any relation between unit names and file names,
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4252 ;; so some of these functions can only be a good approximation. However, they
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4253 ;; are also overriden in `ada-xref'.el when we know that the user is using
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4254 ;; GNAT.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4255 ;; ---------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4256
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4257 ;; Overriden when we work with GNAT, to use gnatkrunch
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4258 (defun ada-make-filename-from-adaname (adaname)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4259 "Determine the filename in which ADANAME is found.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4260 This is a generic function, independent from any compiler."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4261 (while (string-match "\\." adaname)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4262 (setq adaname (replace-match "-" t t adaname)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4263 (downcase adaname)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4264 )
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4265
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4266 (defun ada-other-file-name ()
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4267 "Return the name of the other file.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4268 The name returned is the body if current-buffer is the spec, or the spec
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4269 otherwise."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4270
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4271 (let ((is-spec nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4272 (is-body nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4273 (suffixes ada-spec-suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4274 (name (buffer-file-name)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4275
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4276 ;; Guess whether we have a spec or a body, and get the basename of the
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4277 ;; file. Since the extension may not start with '.', we can not use
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4278 ;; file-name-extension
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4279 (while (and (not is-spec)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4280 suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4281 (if (string-match (concat "\\(.*\\)" (car suffixes) "$") name)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4282 (setq is-spec t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4283 name (match-string 1 name)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4284 (setq suffixes (cdr suffixes)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4285
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4286 (if (not is-spec)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4287 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4288 (setq suffixes ada-body-suffixes)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4289 (while (and (not is-body)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4290 suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4291 (if (string-match (concat "\\(.*\\)" (car suffixes) "$") name)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4292 (setq is-body t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4293 name (match-string 1 name)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4294 (setq suffixes (cdr suffixes)))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
4295
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4296 ;; If this wasn't in either list, return name itself
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4297 (if (not (or is-spec is-body))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4298 name
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
4299
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4300 ;; Else find the other possible names
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4301 (if is-spec
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4302 (setq suffixes ada-body-suffixes)
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4303 (setq suffixes ada-spec-suffixes))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4304 (setq is-spec name)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4305
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4306 (while suffixes
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4307 (if (file-exists-p (concat name (car suffixes)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4308 (setq is-spec (concat name (car suffixes))))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4309 (setq suffixes (cdr suffixes)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4310
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4311 is-spec)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4312
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4313 (defun ada-which-function-are-we-in ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4314 "Return the name of the function whose definition/declaration point is in.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4315 Redefines the function `ff-which-function-are-we-in'."
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4316 (setq ff-function-name nil)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4317 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4318 (end-of-line);; make sure we get the complete name
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4319 (if (or (re-search-backward ada-procedure-start-regexp nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4320 (re-search-backward ada-package-start-regexp nil t))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4321 (setq ff-function-name (match-string 0)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4322 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4323
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4324
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4325 (defvar ada-last-which-function-line -1
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4326 "Last on which ada-which-function was called")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4327 (defvar ada-last-which-function-subprog 0
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4328 "Last subprogram name returned by ada-which-function")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4329 (make-variable-buffer-local 'ada-last-which-function-subprog)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4330 (make-variable-buffer-local 'ada-last-which-function-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4331
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4332
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4333 (defun ada-which-function ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4334 "Returns the name of the function whose body the point is in.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4335 This function works even in the case of nested subprograms, whereas the
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4336 standard Emacs function which-function does not.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4337 Note that this function expects subprogram bodies to be terminated by
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4338 'end <name>;', not 'end;'.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4339 Since the search can be long, the results are cached."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4340
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4341 (let ((line (count-lines (point-min) (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4342 (pos (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4343 end-pos
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4344 func-name
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4345 found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4346
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4347 ;; If this is the same line as before, simply return the same result
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4348 (if (= line ada-last-which-function-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4349 ada-last-which-function-subprog
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4350
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4351 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4352 ;; In case the current line is also the beginning of the body
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4353 (end-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4354 (while (and (ada-in-paramlist-p)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4355 (= (forward-line 1) 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4356 (end-of-line))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4357
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4358 ;; Can't simply do forward-word, in case the "is" is not on the
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4359 ;; same line as the closing parenthesis
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4360 (skip-chars-forward "is \t\n")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4361
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4362 ;; No look for the closest subprogram body that has not ended yet.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4363 ;; Not that we expect all the bodies to be finished by "end <name",
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4364 ;; not simply "end"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4365
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4366 (while (and (not found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4367 (re-search-backward ada-imenu-subprogram-menu-re nil t))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4368 (setq func-name (match-string 2))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4369 (if (and (not (ada-in-comment-p))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4370 (not (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4371 (goto-char (match-end 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4372 (looking-at "[ \t\n]*new"))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4373 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4374 (if (ada-search-ignore-string-comment
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4375 (concat "end[ \t]+" func-name "[ \t]*;"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4376 (setq end-pos (point))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4377 (setq end-pos (point-max)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4378 (if (>= end-pos pos)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4379 (setq found func-name))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4380 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4381 (setq ada-last-which-function-line line
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4382 ada-last-which-function-subprog found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4383 found))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4384
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4385 (defun ada-ff-other-window ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4386 "Find other file in other window using `ff-find-other-file'."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4387 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4388 (and (fboundp 'ff-find-other-file)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4389 (ff-find-other-file t)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4390
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4391 (defun ada-set-point-accordingly ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4392 "Move to the function declaration that was set by
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4393 `ff-which-function-are-we-in'."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4394 (if ff-function-name
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4395 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4396 (goto-char (point-min))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4397 (unless (ada-search-ignore-string-comment
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4398 (concat ff-function-name "\\b") nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4399 (goto-char (point-min))))))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4400
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4401 (defun ada-get-body-name (&optional spec-name)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4402 "Returns the file name for the body of SPEC-NAME.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4403 If SPEC-NAME is nil, returns the body for the current package.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4404 Returns nil if no body was found."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4405 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4406
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4407 (unless spec-name (setq spec-name (buffer-file-name)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4408
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4409 ;; If find-file.el was available, use its functions
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4410 (if (functionp 'ff-get-file)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4411 (ff-get-file-name ada-search-directories
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4412 (ada-make-filename-from-adaname
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4413 (file-name-nondirectory
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4414 (file-name-sans-extension spec-name)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4415 ada-body-suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4416 ;; Else emulate it very simply
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4417 (concat (ada-make-filename-from-adaname
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4418 (file-name-nondirectory
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4419 (file-name-sans-extension spec-name)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4420 ".adb")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4421
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4422
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4423 ;; ---------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4424 ;; support for font-lock.el
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4425 ;; Strings are a real pain in Ada because a single quote character is
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4426 ;; overloaded as a string quote and type/instance delimiter. By default, a
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4427 ;; single quote is given punctuation syntax in `ada-mode-syntax-table'.
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4428 ;; So, for Font Lock mode purposes, we mark single quotes as having string
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4429 ;; syntax when the gods that created Ada determine them to be.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4430 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4431 ;; This only works in Emacs. See the comments before the grammar functions
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4432 ;; at the beginning of this file for how this is done with XEmacs.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4433 ;; ----------------------------------------------------
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4434
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4435 (defconst ada-font-lock-syntactic-keywords
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4436 ;; Mark single quotes as having string quote syntax in 'c' instances.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4437 ;; As a special case, ''' will not be highlighted, but if we do not
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4438 ;; set this special case, then the rest of the buffer is highlighted as
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4439 ;; a string
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4440 ;; This sets the properties of the characters, so that ada-in-string-p
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4441 ;; correctly handles '"' too...
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4442 '(("\\('\\)[^'\n]\\('\\)" (1 (7 . ?')) (2 (7 . ?')))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4443 ("^[ \t]*\\(#\\(if\\|else\\|elsif\\|end\\)\\)" (1 (11 . ?\n)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4444 ))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4445
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4446 (defvar ada-font-lock-keywords
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4447 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4448 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4449 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4450 ;; handle "type T is access function return S;"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4451 (list "\\<\\(function[ \t]+return\\)\\>" '(1 font-lock-keyword-face) )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4452
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4453 ;; preprocessor line
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4454 (list "^[ \t]*\\(#.*\n\\)" '(1 font-lock-type-face t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4455
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4456 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4457 ;; accept, entry, function, package (body), protected (body|type),
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4458 ;; pragma, procedure, task (body) plus name.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4459 (list (concat
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4460 "\\<\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4461 "accept\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4462 "entry\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4463 "function\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4464 "package[ \t]+body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4465 "package\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4466 "pragma\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4467 "procedure\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4468 "protected[ \t]+body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4469 "protected[ \t]+type\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4470 "protected\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4471 "task[ \t]+body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4472 "task[ \t]+type\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4473 "task"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4474 "\\)\\>[ \t]*"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4475 "\\(\\sw+\\(\\.\\sw*\\)*\\)?")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4476 '(1 font-lock-keyword-face) '(2 font-lock-function-name-face nil t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4477 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4478 ;; Optional keywords followed by a type name.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4479 (list (concat ; ":[ \t]*"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4480 "\\<\\(access[ \t]+all\\|access\\|constant\\|in[ \t]+out\\|in\\|out\\)\\>"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4481 "[ \t]*"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4482 "\\(\\sw+\\(\\.\\sw*\\)*\\)?")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4483 '(1 font-lock-keyword-face nil t) '(2 font-lock-type-face nil t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4484
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4485 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4486 ;; Main keywords, except those treated specially below.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4487 (concat "\\<"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4488 (regexp-opt
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4489 '("abort" "abs" "abstract" "accept" "access" "aliased" "all"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4490 "and" "array" "at" "begin" "case" "declare" "delay" "delta"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4491 "digits" "do" "else" "elsif" "entry" "exception" "exit" "for"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4492 "generic" "if" "in" "is" "limited" "loop" "mod" "not"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4493 "null" "or" "others" "private" "protected" "raise"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4494 "range" "record" "rem" "renames" "requeue" "return" "reverse"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4495 "select" "separate" "tagged" "task" "terminate" "then" "until"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4496 "when" "while" "xor") t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4497 "\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4498 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4499 ;; Anything following end and not already fontified is a body name.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4500 '("\\<\\(end\\)\\>\\([ \t]+\\)?\\(\\(\\sw\\|[_.]\\)+\\)?"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4501 (1 font-lock-keyword-face) (3 font-lock-function-name-face nil t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4502 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4503 ;; Keywords followed by a type or function name.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4504 (list (concat "\\<\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4505 "new\\|of\\|subtype\\|type"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4506 "\\)\\>[ \t]*\\(\\sw+\\(\\.\\sw*\\)*\\)?[ \t]*\\((\\)?")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4507 '(1 font-lock-keyword-face)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4508 '(2 (if (match-beginning 4)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4509 font-lock-function-name-face
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4510 font-lock-type-face) nil t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4511 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4512 ;; Keywords followed by a (comma separated list of) reference.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4513 (list (concat "\\<\\(goto\\|raise\\|use\\|with\\)\\>" ; "when" removed
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4514 "[ \t\n]*\\(\\(\\sw\\|[_.|, \t\n]\\)+\\)\\W")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4515 '(1 font-lock-keyword-face) '(2 font-lock-reference-face nil t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4516 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4517 ;; Goto tags.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4518 '("<<\\(\\sw+\\)>>" 1 font-lock-reference-face)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4519 ))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4520 "Default expressions to highlight in Ada mode.")
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4521
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4522
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4523 ;; ---------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4524 ;; Support for outline.el
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4525 ;; ---------------------------------------------------------
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4526
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4527 (defun ada-outline-level ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4528 "This is so that `current-column` DTRT in otherwise-hidden text"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4529 ;; patch from Dave Love <fx@gnu.org>
24446
25556de3fe49 (ada-outline-level): Bind buffer-invisibility-spec.
Dave Love <fx@gnu.org>
parents: 24325
diff changeset
4530 (let (buffer-invisibility-spec)
25556de3fe49 (ada-outline-level): Bind buffer-invisibility-spec.
Dave Love <fx@gnu.org>
parents: 24325
diff changeset
4531 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4532 (back-to-indentation)
24446
25556de3fe49 (ada-outline-level): Bind buffer-invisibility-spec.
Dave Love <fx@gnu.org>
parents: 24325
diff changeset
4533 (current-column))))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4534
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4535 ;; ---------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4536 ;; Automatic generation of code
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4537 ;; The Ada-mode has a set of function to automatically generate a subprogram
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4538 ;; or package body from its spec.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4539 ;; These function only use a primary and basic algorithm, this could use a
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4540 ;; lot of improvement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4541 ;; When the user is using GNAT, we rather use gnatstub to generate an accurate
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4542 ;; body.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4543 ;; ----------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4544
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4545 (defun ada-gen-treat-proc (match)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4546 "Make dummy body of a procedure/function specification.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4547 MATCH is a cons cell containing the start and end location of the last search
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4548 for ada-procedure-start-regexp."
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4549 (goto-char (car match))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4550 (let (func-found procname functype)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4551 (cond
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4552 ((or (looking-at "^[ \t]*procedure")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4553 (setq func-found (looking-at "^[ \t]*function")))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4554 ;; treat it as a proc/func
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4555 (forward-word 2)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4556 (forward-word -1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4557 (setq procname (buffer-substring (point) (cdr match))) ; store proc name
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4558
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4559 ;; goto end of procname
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4560 (goto-char (cdr match))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4561
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4562 ;; skip over parameterlist
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4563 (unless (looking-at "[ \t\n]*\\(;\\|return\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4564 (forward-sexp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4565
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4566 ;; if function, skip over 'return' and result type.
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4567 (if func-found
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4568 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4569 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4570 (skip-chars-forward " \t\n")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4571 (setq functype (buffer-substring (point)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4572 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4573 (skip-chars-forward
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4574 "a-zA-Z0-9_\.")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4575 (point))))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4576 ;; look for next non WS
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4577 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4578 ((looking-at "[ \t]*;")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4579 (delete-region (match-beginning 0) (match-end 0));; delete the ';'
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4580 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4581 (insert "is")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4582 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4583 (if func-found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4584 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4585 (insert "Result : " functype ";")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4586 (ada-indent-newline-indent)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4587 (insert "begin")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4588 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4589 (if func-found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4590 (insert "return Result;")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4591 (insert "null;"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4592 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4593 (insert "end " procname ";")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4594 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4595 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4596 ;; else
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4597 ((looking-at "[ \t\n]*is")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4598 ;; do nothing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4599 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4600 ((looking-at "[ \t\n]*rename")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4601 ;; do nothing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4602 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4603 (t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4604 (message "unknown syntax"))))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4605 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4606 (if (looking-at "^[ \t]*task")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4607 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4608 (message "Task conversion is not yet implemented")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4609 (forward-word 2)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4610 (if (looking-at "[ \t]*;")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4611 (forward-line)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4612 (ada-move-to-end))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4613 ))))))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4614
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4615 (defun ada-make-body ()
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4616 "Create an Ada package body in the current buffer.
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4617 The potential old buffer contents is deleted first, then we copy the
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4618 spec buffer in here and modify it to make it a body.
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4619 This function typically is to be hooked into `ff-file-created-hooks'."
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4620 (interactive)
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4621 (delete-region (point-min) (point-max))
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4622 (insert-buffer (car (cdr (buffer-list))))
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4623 (ada-mode)
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4624
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4625 (let (found ada-procedure-or-package-start-regexp)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4626 (if (setq found
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4627 (ada-search-ignore-string-comment ada-package-start-regexp nil))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4628 (progn (goto-char (cdr found))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4629 (insert " body")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4630 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4631 (error "No package"))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4632
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4633 (setq ada-procedure-or-package-start-regexp
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4634 (concat ada-procedure-start-regexp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4635 "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4636 ada-package-start-regexp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4637
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4638 (while (setq found
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4639 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4640 ada-procedure-or-package-start-regexp nil))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4641 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4642 (goto-char (car found))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4643 (if (looking-at ada-package-start-regexp)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4644 (progn (goto-char (cdr found))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4645 (insert " body"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4646 (ada-gen-treat-proc found))))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4647
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4648
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4649 (defun ada-make-subprogram-body ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4650 "Make one dummy subprogram body from spec surrounding point."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4651 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4652 (let* ((found (re-search-backward ada-procedure-start-regexp nil t))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4653 (spec (match-beginning 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4654 body-file)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4655 (if found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4656 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4657 (goto-char spec)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4658 (if (and (re-search-forward "(\\|;" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4659 (= (char-before) ?\())
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4660 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4661 (ada-search-ignore-string-comment ")" nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4662 (ada-search-ignore-string-comment ";" nil)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4663 (setq spec (buffer-substring spec (point)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4664
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4665 ;; If find-file.el was available, use its functions
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4666 (setq body-file (ada-get-body-name))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4667 (if body-file
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4668 (find-file body-file)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4669 (error "No body found for the package. Create it first."))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4670
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4671 (save-restriction
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4672 (widen)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4673 (goto-char (point-max))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4674 (forward-comment -10000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4675 (re-search-backward "\\<end\\>" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4676 ;; Move to the beginning of the elaboration part, if any
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4677 (re-search-backward "^begin" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4678 (newline)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4679 (forward-char -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4680 (insert spec)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4681 (re-search-backward ada-procedure-start-regexp nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4682 (ada-gen-treat-proc (cons (match-beginning 0) (match-end 0)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4683 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4684 (error "Not in subprogram spec"))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4685
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4686 ;; --------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4687 ;; Global initializations
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4688 ;; --------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4689
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4690 ;; Create the keymap once and for all. If we do that in ada-mode,
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4691 ;; the keys changed in the user's .emacs have to be modified
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4692 ;; every time
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4693 (ada-create-keymap)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4694 (ada-create-menu)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4695
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4696 ;; Create the syntax tables, but do not activate them
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4697 (ada-create-syntax-table)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4698
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4699 ;; Add the default extensions (and set up speedbar)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4700 (ada-add-extensions ".ads" ".adb")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4701 ;; This two files are generated by GNAT when running with -gnatD
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4702 (if (equal ada-which-compiler 'gnat)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4703 (ada-add-extensions ".ads.dg" ".adb.dg"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4704
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4705 ;; Read the special cases for exceptions
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4706 (ada-case-read-exceptions)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4707
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4708 ;; include the other ada-mode files
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4709 (if (equal ada-which-compiler 'gnat)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4710 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4711 ;; The order here is important: ada-xref defines the Project
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4712 ;; submenu, and ada-prj adds to it.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4713 (require 'ada-xref)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4714 (condition-case nil (require 'ada-prj) (error nil))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4715 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4716 (condition-case nil (require 'ada-stmt) (error nil))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4717
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4718 ;;; provide ourselves
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4719 (provide 'ada-mode)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4720
10707
4a2ea4f52ea0 Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 10705
diff changeset
4721 ;;; ada-mode.el ends here