annotate lisp/progmodes/ada-mode.el @ 50803:140fa7af01db

(struct skp): New struct, to pass args through map_keymap. (single_keymap_panes): Use it and map_keymap. (single_menu_item): Use skp as well.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 04 May 2003 01:27:32 +0000
parents b0ce71ab9c28
children 15929fed5553
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
1 ;;; ada-mode.el --- major-mode for editing Ada sources
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3 ;; Copyright (C) 1994, 95, 97, 98, 99, 2000, 2001, 2002, 2003
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 38361
diff changeset
4 ;; Free Software Foundation, Inc.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
6 ;; 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
7 ;; 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
8 ;; Emmanuel Briot <briot@gnat.com>
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
9 ;; Maintainer: Emmanuel Briot <briot@gnat.com>
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
10 ;; Ada Core Technologies's version: Revision: 1.188
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
11 ;; Keywords: languages ada
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
12
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
13 ;; This file is part of GNU Emacs.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
14
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 38361
diff changeset
15 ;; GNU Emacs is free software; you can redistribute it and/or modify
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; 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
17 ;; the Free Software Foundation; either version 2, or (at your option)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; any later version.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 38361
diff changeset
20 ;; GNU Emacs is distributed in the hope that it will be useful,
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; GNU General Public License for more details.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;; You should have received a copy of the GNU General Public License
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 38361
diff changeset
26 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 38361
diff changeset
27 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 38361
diff changeset
28 ;; Boston, MA 02111-1307, USA.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
29
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
30 ;;; Commentary:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
31 ;;; 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
32 ;;; This is a major rewrite of the file packaged with Emacs-20. The
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
33 ;;; ada-mode is composed of four lisp files, ada-mode.el, ada-xref.el,
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
34 ;;; 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
35 ;;; 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
36 ;;; by Ada Core Technologies. All the other files rely heavily on
38446
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
37 ;;; features provided only by Gnat.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ;;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
39 ;;; 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
40 ;;; 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
41 ;;; 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
42 ;;; functions.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
43
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
44 ;;; Usage:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
45 ;;; 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
46 ;;; 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
47 ;;; 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
48 ;;; following command :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
49 ;;; M-x ada-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
50 ;;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
51 ;;; 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
52 ;;; 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
53 ;;; 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
54 ;;; 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
55 ;;; won't work) :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
56 ;;; (setq ada-which-compiler 'generic)
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 ;;; 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
59
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
60 ;;; History:
11199
394f205af26d Fix comments.
Karl Heuer <kwzh@gnu.org>
parents: 10880
diff changeset
61 ;;; 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
62 ;;; 1985. He based his work on the already existing Modula-2 mode.
394f205af26d Fix comments.
Karl Heuer <kwzh@gnu.org>
parents: 10880
diff changeset
63 ;;; 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
64 ;;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;;; Lynn Slater wrote an extensive Ada mode in 1989. It consisted of
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;;; several files with support for dired commands and other nice
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;;; things. It is currently available from the PAL
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;;; (wuarchive.wustl.edu:/languages/ada) as ada-mode-1.06a.tar.Z.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;;; The probably very first Ada mode (called electric-ada.el) was
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;;; written by Steven D. Litvintchouk and Steven M. Rosen for the
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;;; Gosling Emacs. L. Slater based his development on ada.el and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;;; electric-ada.el.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 ;;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
75 ;;; 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
76 ;;; Some ideas from the Ada mode mailing list have been
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;;; added. Some of the functionality of L. Slater's mode has not
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;;; (yet) been recoded in this new mode. Perhaps you prefer sticking
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;;; to his version.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
81 ;;; 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
82 ;;; 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
83
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
84 ;;; Credits:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
85 ;;; 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
86 ;;; many patches included in this package.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
87 ;;; 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
88 ;;; ada-imenu-generic-expression
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
89 ;;; 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
90 ;;; to the ada-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
91 ;;; 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
92 ;;; woodruff@stc.llnl.gov (John Woodruff)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
93 ;;; jj@ddci.dk (Jesper Joergensen)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
94 ;;; gse@ocsystems.com (Scott Evans)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
95 ;;; comar@gnat.com (Cyrille Comar)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
96 ;;; stephen.leake@gsfc.nasa.gov (Stephen Leake)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
97 ;;; robin-reply@reagans.org
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
98 ;;; 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
99
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
100 ;;; Code:
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
101 ;;; 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
102 ;;; The names start with ada-
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
103 ;;; 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
104 ;;; 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
105 ;;; file.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
106
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
107 ;;; Supported packages.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
108 ;;; This package supports a number of other Emacs modes. These other modes
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
109 ;;; should be loaded before the ada-mode, which will then setup some variables
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
110 ;;; to improve the support for Ada code.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
111 ;;; Here is the list of these modes:
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
112 ;;; `which-function-mode': Display the name of the subprogram the cursor is
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
113 ;;; in in the mode line.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
114 ;;; `outline-mode': Provides the capability to collapse or expand the code
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
115 ;;; for specific language constructs, for instance if you want to hide the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
116 ;;; code corresponding to a subprogram
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
117 ;;; `align': This mode is now provided with Emacs 21, but can also be
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
118 ;;; installed manually for older versions of Emacs. It provides the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
119 ;;; capability to automatically realign the selected region (for instance
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
120 ;;; all ':=', ':' and '--' will be aligned on top of each other.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
121 ;;; `imenu': Provides a menu with the list of entities defined in the current
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
122 ;;; buffer, and an easy way to jump to any of them
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
123 ;;; `speedbar': Provides a separate file browser, and the capability for each
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
124 ;;; file to see the list of entities defined in it and to jump to them
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
125 ;;; easily
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
126 ;;; `abbrev-mode': Provides the capability to define abbreviations, which
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
127 ;;; are automatically expanded when you type them. See the Emacs manual.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
128
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
129
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
130 ;; 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
131 (eval-and-compile
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
132 (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
133 "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
134 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
135 (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
136 (string-match "XEmacs" emacs-version))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
137 (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
138 (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
139 (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
140 (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
141 (>= emacs-minor-version minor)))))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
142
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
143
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
144 ;; 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
145 ;; 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
146 (eval-and-compile
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
147 (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
148 (symbol-value 'running-xemacs))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
149 "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
150
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
151 (eval-and-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
152 (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
153
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
154 ;; This call should not be made in the release that is done for the
44933
89bfde1b51f5 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 44465
diff changeset
155 ;; official Emacs, since it does nothing useful for the latest version
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
156 ;;(if (not (ada-check-emacs-version 21 1))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
157 ;; (require 'ada-support))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
158
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
159 (defvar ada-mode-hook nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
160 "*List of functions to call when Ada mode is invoked.
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
161 This hook is automatically executed after the `ada-mode' is
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
162 fully loaded.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
163 This is a good place to add Ada environment specific bindings.")
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
164
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
165 (defgroup ada nil
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
166 "Major mode for editing Ada source in Emacs."
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
167 :group 'languages)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
168
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
169 (defcustom ada-auto-case t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
170 "*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
171 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
172 and `ada-case-attribute'."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
173 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
174
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
175 (defcustom ada-broken-decl-indent 0
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
176 "*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
177
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
178 An example is :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
179 declare
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
180 A,
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
181 >>>>>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
182 :type 'integer :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
183
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
184 (defcustom ada-broken-indent 2
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
185 "*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
186
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
187 An example is :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
188 My_Var : My_Type := (Field1 =>
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
189 >>>>>>>>>Value); -- from ada-broken-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
190 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
191
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
192 (defcustom ada-continuation-indent ada-broken-indent
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
193 "*Number of columns to indent the continuation of broken lines in
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
194 parenthesis.
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
195
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
196 An example is :
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
197 Func (Param1,
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
198 >>>>>Param2);"
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
199 :type 'integer :group 'ada)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
200
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
201 (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
202 "*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
203 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
204 `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
205 :type '(choice (const downcase-word)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
206 (const upcase-word)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
207 (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
208 (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
209 (const ada-no-auto-case))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
210 :group 'ada)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
212 (defcustom ada-case-exception-file
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
213 (list (convert-standard-filename' "~/.emacs_case_exceptions"))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
214 "*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
215 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
216 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
217
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
218 These files should contain one word per line, that gives the casing
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
219 to be used for that word in Ada files. If the line starts with the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
220 character *, then the exception will be used for substrings that either
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
221 start at the beginning of a word or after a _ character, and end either
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
222 at the end of the word or at a _ character. Each line can be terminated by
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
223 a comment."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
224 :type '(repeat (file))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
225 :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
226
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
227 (defcustom ada-case-keyword 'downcase-word
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
228 "*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
229 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
230 `ada-capitalize-word'."
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
231 :type '(choice (const downcase-word)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
232 (const upcase-word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
233 (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
234 (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
235 (const ada-no-auto-case))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
236 :group 'ada)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
237
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
238 (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
239 "*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
240 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
241 `ada-capitalize-word'."
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
242 :type '(choice (const downcase-word)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
243 (const upcase-word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
244 (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
245 (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
246 (const ada-no-auto-case))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
247 :group 'ada)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
248
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
249 (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
250 "*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
251 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
252
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
253 (defcustom ada-indent 3
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
254 "*Size of Ada indentation.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
255
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
256 An example is :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
257 procedure Foo is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
258 begin
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
259 >>>>>>>>>>null; -- from ada-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
260 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
261
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
262 (defcustom ada-indent-after-return t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
263 "*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
264 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
265
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
266 (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
267 "*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
268 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
269 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
270
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
271 For instance:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
272 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
273 -- 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
274 :type 'boolean :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
275
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
276 (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
277 "*Non-nil means indent comment lines as code.
42206
0f4506820432 Doc fix.
Pavel Janík <Pavel@Janik.cz>
parents: 41082
diff changeset
278 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
279 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
280
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
281 (defcustom ada-indent-handle-comment-special nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
282 "*Non-nil if comment lines should be handled specially inside
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
283 parenthesis.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
284 By default, if the line that contains the open parenthesis has some
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
285 text following it, then the following lines will be indented in the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
286 same column as this text. This will not be true if the first line is
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
287 a comment and `ada-indent-handle-comment-special' is t.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
288
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
289 type A is
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
290 ( Value_1, -- common behavior, when not a comment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
291 Value_2);
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
292
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
293 type A is
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
294 ( -- `ada-indent-handle-comment-special' is nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
295 Value_1,
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
296 Value_2);
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
297
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
298 type A is
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
299 ( -- `ada-indent-handle-comment-special' is non-nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
300 Value_1,
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
301 Value_2);"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
302 :type 'boolean :group 'ada)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
303
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
304 (defcustom ada-indent-is-separate t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
305 "*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
306 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
307
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
308 (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
309 "*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
310
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
311 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
312 type A is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
313 >>>>>>>>>>>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
314 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
315
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
316 (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
317 "*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
318 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
319 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
320
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
321 An example is:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
322 function A (B : Integer)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
323 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
324 >>>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
325 :type 'integer :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
326
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
327 (defcustom ada-indent-return 0
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
328 "*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
329 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
330 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
331
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
332 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
333 function A (B : Integer)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
334 >>>>>return C; -- from ada-indent-return"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
335 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
336
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
337 (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
338 "*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
339 :type 'boolean :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
340
41012
39ee7e7e2200 (ada-fill-comment-prefix): GNAT wants 2 spaces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38446
diff changeset
341 (defcustom ada-fill-comment-prefix "-- "
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
342 "*Text inserted in the first columns when filling a comment paragraph.
41036
aaa6f44a1b96 (ada-fill-comment-prefix): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 41012
diff changeset
343 Note: if you modify this variable, you will have to invoke `ada-mode'
aaa6f44a1b96 (ada-fill-comment-prefix): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 41012
diff changeset
344 again to take account of the new value."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
345 :type 'string :group 'ada)
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
346
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
347 (defcustom ada-fill-comment-postfix " --"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
348 "*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
349 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
350 :type 'string :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
351
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
352 (defcustom ada-label-indent -4
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
353 "*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
354
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
355 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
356 procedure Foo is
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
357 begin
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
358 >>>>>>>>>>>>Label: -- from ada-label-indent
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
359
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
360 This is also used for <<..>> labels"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
361 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
362
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
363 (defcustom ada-language-version 'ada95
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
364 "*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
365 :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
366
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
367 (defcustom ada-move-to-declaration nil
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
368 "*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
369 not to 'begin'."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
370 :type 'boolean :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
371
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
372 (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
373 "*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
374 If nil, no contextual menu is available."
35959
c49a286df476 (ada-popup-key): Fix :type.
Dave Love <fx@gnu.org>
parents: 35263
diff changeset
375 :type '(restricted-sexp :match-alternatives (stringp vectorp))
35263
9d5252e923a3 (ada-popup-key): Fix last change.
Dave Love <fx@gnu.org>
parents: 35182
diff changeset
376 :group 'ada)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
377
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
378 (defcustom ada-search-directories
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
379 (append '(".")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
380 (split-string (or (getenv "ADA_INCLUDE_PATH") "") ":")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
381 '("/usr/adainclude" "/usr/local/adainclude"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
382 "/opt/gnu/adainclude"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
383 "*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
384 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
385 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
386 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
387 runtime really is."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
388 :type '(repeat (choice :tag "Directory"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
389 (const :tag "default" nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
390 (directory :format "%v")))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
391 :group 'ada)
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
392
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
393 (defcustom ada-stmt-end-indent 0
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
394 "*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
395
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
396 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
397 if A = B
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
398 >>>>>>>>>>>then -- from ada-stmt-end-indent"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
399 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
400
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
401 (defcustom ada-tab-policy 'indent-auto
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
402 "*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
403 Must be one of :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
404 `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
405 `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
406 `always-tab' : do indent-relative."
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
407 :type '(choice (const indent-auto)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
408 (const indent-rigidly)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
409 (const always-tab))
18120
112bc3055da6 Customize.
Richard M. Stallman <rms@gnu.org>
parents: 17996
diff changeset
410 :group 'ada)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
412 (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
413 "*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
414
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
415 An example is:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
416 use Ada.Text_IO,
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
417 >>>>>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
418 :type 'integer :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
419
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
420 (defcustom ada-when-indent 3
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
421 "*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
422
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
423 An example is:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
424 case A is
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
425 >>>>>>>>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
426 :type 'integer :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
427
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
428 (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
429 "*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
430
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
431 An example is:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
432 with Ada.Text_IO,
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
433 >>>>>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
434 :type 'integer :group 'ada)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
435
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
436 (defcustom ada-which-compiler 'gnat
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
437 "*Name of the compiler to use.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
438 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
439 The possible choices are :
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
440 `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
441 features
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
442 `generic': Use a generic compiler"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
443 :type '(choice (const gnat)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
444 (const generic))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
445 :group 'ada)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
446
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
447
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 ;;; ---- end of user configurable variables
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
451 (defvar ada-body-suffixes '(".adb")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
452 "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
453 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
454
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
455 (defvar ada-spec-suffixes '(".ads")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
456 "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
457 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
458
32300
5acb191f2a15 (ada-mode-menu): Add name to menu map.
Dave Love <fx@gnu.org>
parents: 30411
diff changeset
459 (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
460 "Menu for ada-mode.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
461
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
462 (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
463 "Local keymap used for Ada mode.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
465 (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
466 "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
467
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 (defvar ada-mode-syntax-table nil
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 "Syntax table to be used for editing Ada source code.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
471 (defvar ada-mode-symbol-syntax-table nil
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
472 "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
473
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
474 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
475 (defconst ada-83-string-keywords
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
476 '("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
477 "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
478 "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
479 "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
480 "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
481 "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
482 "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
483 "type" "use" "when" "while" "with" "xor")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
484 "List of Ada keywords.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
485 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
486
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
487 (defvar ada-ret-binding nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
488 "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
489
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
490 (defvar ada-case-exception '()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
491 "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
492
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
493 (defvar ada-case-exception-substring '()
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
494 "Alist of substrings (entities) that have special casing.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
495 The substrings are detected for word constituant when the word
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
496 is not itself in ada-case-exception, and only for substrings that
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
497 either are at the beginning or end of the word, or start after '_'.")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
498
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
499 (defvar ada-lfd-binding nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
500 "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
501
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
502 (defvar ada-other-file-alist nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
503 "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
504 See `ff-other-file-alist'.")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
505
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
506 (defvar ada-align-list
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
507 '(("[^:]\\(\\s-*\\):[^:]" 1 t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
508 ("[^=]\\(\\s-+\\)=[^=]" 1 t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
509 ("\\(\\s-*\\)use\\s-" 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
510 ("\\(\\s-*\\)--" 1))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
511 "Ada support for align.el <= 2.2
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
512 This variable provides regular expressions on which to align different lines.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
513 See `align-mode-alist' for more information.")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
514
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
515 (defvar ada-align-modes
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
516 '((ada-declaration
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
517 (regexp . "[^:]\\(\\s-*\\):[^:]")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
518 (valid . (lambda() (not (ada-in-comment-p))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
519 (modes . '(ada-mode)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
520 (ada-assignment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
521 (regexp . "[^=]\\(\\s-+\\)=[^=]")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
522 (valid . (lambda() (not (ada-in-comment-p))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
523 (modes . '(ada-mode)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
524 (ada-comment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
525 (regexp . "\\(\\s-*\\)--")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
526 (modes . '(ada-mode)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
527 (ada-use
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
528 (regexp . "\\(\\s-*\\)use\\s-")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
529 (valid . (lambda() (not (ada-in-comment-p))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
530 (modes . '(ada-mode)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
531 )
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
532 "Ada support for align.el >= 2.8
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
533 This variable defines several rules to use to align different lines.")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
534
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
535 (defconst ada-align-region-separate
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
536 (concat
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
537 "^\\s-*\\($\\|\\("
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
538 "begin\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
539 "declare\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
540 "else\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
541 "end\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
542 "exception\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
543 "for\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
544 "function\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
545 "generic\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
546 "if\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
547 "is\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
548 "procedure\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
549 "record\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
550 "return\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
551 "type\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
552 "when"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
553 "\\)\\>\\)")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
554 "see the variable `align-region-separate' for more information.")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
555
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
556 ;;; ---- 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
557
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (defconst ada-83-keywords
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
559 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
560 (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
561 "Regular expression for looking at Ada83 keywords.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
563 (defconst ada-95-keywords
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
564 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
565 (concat "\\<" (regexp-opt
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
566 (append
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
567 '("abstract" "aliased" "protected" "requeue"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
568 "tagged" "until")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
569 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
570 "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
571
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
572 (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
573 "Regular expression for looking at Ada keywords.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
575 (defconst ada-ident-re
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
576 "\\(\\sw\\|[_.]\\)+"
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
577 "Regexp matching Ada (qualified) identifiers.")
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
578
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
579 ;; "with" needs to be included in the regexp, so that we can insert new lines
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
580 ;; after the declaration of the parameter for a generic.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 (defvar ada-procedure-start-regexp
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
582 (concat
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
583 "^[ \t]*\\(with[ \t]+\\)?\\(procedure\\|function\\|task\\)[ \t\n]+"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
584
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
585 ;; subprogram name: operator ("[+/=*]")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
586 "\\("
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
587 "\\(\"[^\"]+\"\\)"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
588
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
589 ;; subprogram name: name
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
590 "\\|"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
591 "\\(\\(\\sw\\|[_.]\\)+\\)"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
592 "\\)")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 "Regexp used to find Ada procedures/functions.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (defvar ada-package-start-regexp
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 "^[ \t]*\\(package\\)"
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
597 "Regexp used to find Ada packages.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 ;;; ---- regexps for indentation functions
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 (defvar ada-block-start-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
603 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
604 (concat "\\<\\(" (regexp-opt '("begin" "declare" "else"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
605 "exception" "generic" "loop" "or"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
606 "private" "select" ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
607 "\\|\\(\\(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
608 "Regexp for keywords starting Ada blocks.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (defvar ada-end-stmt-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
611 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
612 (concat "\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
613 ";" "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
614 "=>[ \t]*$" "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
615 "^[ \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
616 "\\<" (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
617 "loop" "private" "record" "select"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
618 "then abort" "then") t) "\\>" "\\|"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
619 "^[ \t]*" (regexp-opt '("function" "package" "procedure")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
620 t) "\\>\\(\\sw\\|[ \t_.]\\)+\\<is\\>" "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
621 "^[ \t]*exception\\>"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
622 "\\)") )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 "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
624 A new statement starts after these.")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
626 (defvar ada-matching-start-re
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
627 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
628 (concat "\\<"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
629 (regexp-opt
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
630 '("end" "loop" "select" "begin" "case" "do"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
631 "if" "task" "package" "record" "protected") t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
632 "\\>"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
633 "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
634
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
635 (defvar ada-matching-decl-start-re
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
636 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
637 (concat "\\<"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
638 (regexp-opt
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
639 '("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
640 "\\>"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
641 "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
642
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 (defvar ada-loop-start-re
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 "\\<\\(for\\|while\\|loop\\)\\>"
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 "Regexp for the start of a loop.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (defvar ada-subprog-start-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
648 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
649 (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
650 "protected" "task") t) "\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 "Regexp for the start of a subprogram.")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
653 (defvar ada-named-block-re
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
654 "[ \t]*\\(\\sw\\|_\\)+[ \t]*:[^=]"
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
655 "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
656
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
657 (defvar ada-contextual-menu-on-identifier nil
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
658 "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
659
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
660 (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
661 "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
662 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
663 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
664 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
665 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
666 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
667 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
668 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
669
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
670 (easy-menu-define ada-contextual-menu nil
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
671 "Menu to use when the user presses the right mouse button.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
672 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
673 displaying the menu if point was on an identifier."
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
674 '("Ada"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
675 ["Goto Declaration/Body" ada-point-and-xref
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
676 :included ada-contextual-menu-on-identifier]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
677 ["Goto Body" ada-point-and-xref-body
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
678 :included ada-contextual-menu-on-identifier]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
679 ["Goto Previous Reference" ada-xref-goto-previous-reference]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
680 ["List References" ada-find-references
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
681 :included ada-contextual-menu-on-identifier]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
682 ["List Local References" ada-find-local-references
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
683 :included ada-contextual-menu-on-identifier]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
684 ["-" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
685 ["Other File" ff-find-other-file]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
686 ["Goto Parent Unit" ada-goto-parent]))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
687
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
688
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
689 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
690 ;; Support for imenu (see imenu.el)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
691 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
692
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
693 (defconst ada-imenu-comment-re "\\([ \t]*--.*\\)?")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
694
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
695 (defconst ada-imenu-subprogram-menu-re
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
696 (concat "^[ \t]*\\(procedure\\|function\\)[ \t\n]+"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
697 "\\(\\(\\sw\\|_\\)+\\)[ \t\n]*\\([ \t\n]\\|([^)]+)"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
698 ada-imenu-comment-re
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
699 "\\)[ \t\n]*"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
700 "\\(return[ \t\n]+\\(\\sw\\|[_.]\\)+[ \t\n]*\\)?is[ \t\n]"))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
701
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
702 (defvar ada-imenu-generic-expression
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
703 (list
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
704 (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
705 (list "*Specs*"
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
706 (concat
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
707 "^[ \t]*\\(procedure\\|function\\)[ \t\n]+\\(\\(\\sw\\|_\\)+\\)"
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
708 "\\("
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
709 "\\(" ada-imenu-comment-re "[ \t\n]+\\|[ \t\n]*([^)]+)"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
710 ada-imenu-comment-re "\\)";; parameter list or simple space
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
711 "\\([ \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
712 "\\)?;") 2)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
713 '("*Tasks*" "^[ \t]*task[ \t]+\\(type[ \t]+\\)?\\(\\(body[ \t]+\\)?\\(\\sw\\|_\\)+\\)" 2)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
714 '("*Type Defs*" "^[ \t]*\\(sub\\)?type[ \t]+\\(\\(\\sw\\|_\\)+\\)" 2)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
715 '("*Protected*"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
716 "^[ \t]*protected[ \t]+\\(type[ \t]+\\)?\\(\\(body[ \t]+\\)?\\(\\sw\\|_\\)+\\)" 2)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
717 '("*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
718 "Imenu generic expression for Ada mode.
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
719 See `imenu-generic-expression'. This variable will create several submenus for
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
720 each type of entity that can be found in an Ada file.")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
721
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
722
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
723 ;;------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
724 ;; Support for compile.el
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
725 ;;------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
726
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
727 (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
728 "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
729 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
730 (mouse-set-point last-input-event)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
731 (ada-compile-goto-error (point))
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
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
734 (defun ada-compile-goto-error (pos)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
735 "Replaces `compile-goto-error' from compile.el.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
736 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
737 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
738 For instance, on this line:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
739 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
740 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
741 (interactive "d")
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
742 (goto-char pos)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
743
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
744 (skip-chars-backward "-a-zA-Z0-9_:./\\")
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
745 (cond
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
746 ;; 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
747 ((and (not (bolp))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
748 (looking-at
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
749 "\\([-_.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
750 (let ((line (match-string 2))
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
751 file
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
752 (error-pos (point-marker))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
753 source)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
754 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
755 (save-restriction
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
756 (widen)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
757 ;; Use funcall so as to prevent byte-compiler warnings
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
758 ;; `ada-find-file' is not defined if ada-xref wasn't loaded. But
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
759 ;; if we can find it, we should use it instead of
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
760 ;; `compilation-find-file', since the latter doesn't know anything
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
761 ;; about source path.
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
762
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
763 (if (functionp 'ada-find-file)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
764 (setq file (funcall (symbol-function 'ada-find-file)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
765 (match-string 1)))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
766 (setq file (funcall (symbol-function 'compilation-find-file)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
767 (point-marker) (match-string 1)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
768 "./")))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
769 (set-buffer file)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
770
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
771 (if (stringp line)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
772 (goto-line (string-to-number line)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
773 (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
774 (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
775 (cons source error-pos))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
776 ))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
777
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
778 ;; otherwise, default behavior
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
779 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
780 (funcall (symbol-function 'compile-goto-error)))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
781 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
782 (recenter))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
783
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
784
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
785 ;;-------------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
786 ;; Grammar related function
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
787 ;; 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
788 ;; 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
789 ;; 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
790 ;; 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
791 ;; - ' 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
792 ;; - # 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
793 ;; - " 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
794 ;; - ( 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
795 ;; 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
796 ;; 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
797 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
798 ;; 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
799 ;; 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
800 ;; 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
801 ;; `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
802 ;; 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
803 ;; `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
804 ;; `ada-initialize-properties'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
805 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
806 ;; 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
807 ;; 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
808 ;; 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
809 ;; 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
810 ;; with parse-partial-sexp.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
811 ;; 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
812 ;; better is available on XEmacs.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
813 ;;-------------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
814
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
815 (defun ada-create-syntax-table ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
816 "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
817 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
818 declares it as a word constituent."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
819 (interactive)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
820 (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
821 (set-syntax-table ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
822
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
823 ;; 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
824 ;; 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
825 ;; off the track.)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
826 (modify-syntax-entry ?% "$" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
827 (modify-syntax-entry ?\" "\"" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
828
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
829 (modify-syntax-entry ?: "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
830 (modify-syntax-entry ?\; "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
831 (modify-syntax-entry ?& "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
832 (modify-syntax-entry ?\| "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
833 (modify-syntax-entry ?+ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
834 (modify-syntax-entry ?* "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
835 (modify-syntax-entry ?/ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
836 (modify-syntax-entry ?= "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
837 (modify-syntax-entry ?< "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
838 (modify-syntax-entry ?> "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
839 (modify-syntax-entry ?$ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
840 (modify-syntax-entry ?\[ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
841 (modify-syntax-entry ?\] "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
842 (modify-syntax-entry ?\{ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
843 (modify-syntax-entry ?\} "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
844 (modify-syntax-entry ?. "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
845 (modify-syntax-entry ?\\ "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
846 (modify-syntax-entry ?\' "." ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
847
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
848 ;; 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
849 (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
850
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
851 ;; 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
852 ;; setup for '#'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
853 (if ada-xemacs
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
854 (modify-syntax-entry ?# "<" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
855 (modify-syntax-entry ?# "$" ada-mode-syntax-table))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
856
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
857 ;; and \f and \n end a comment
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
858 (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
859 (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
860
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
861 ;; define what belongs in Ada symbols
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
862 (modify-syntax-entry ?_ "_" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
863
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
864 ;; define parentheses to match
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
865 (modify-syntax-entry ?\( "()" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
866 (modify-syntax-entry ?\) ")(" ada-mode-syntax-table)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
867
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
868 (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
869 (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
870 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
871
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
872 ;; 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
873 ;; of the section on Grammar related functions).
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
874
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
875 (if ada-xemacs
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
876 (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
877 "Handles special character constants and gnatprep statements."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
878 (let (change)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
879 (if (< to from)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
880 (let ((tmp from))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
881 (setq from to to tmp)))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
882 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
883 (goto-char from)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
884 (while (re-search-forward "'\\([(\")#]\\)'" to t)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
885 (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
886 1
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
887 (match-string 1))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
888 change))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
889 (replace-match "'A'"))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
890 (goto-char from)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
891 (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
892 (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
893 (length (match-string 1))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
894 (match-string 1))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
895 change))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
896 (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
897 ad-do-it
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
898 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
899 (while change
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
900 (goto-char (caar change))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
901 (delete-char (cadar change))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
902 (insert (caddar change))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
903 (setq change (cdr change)))))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
904
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
905 (defun ada-deactivate-properties ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
906 "Deactivate ada-mode's properties handling.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
907 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
908 (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
909
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
910 (defun ada-initialize-properties ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
911 "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
912 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
913 as numbers instead of gnatprep comments."
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
914 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
915 (save-restriction
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
916 (widen)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
917 (goto-char (point-min))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
918 (while (re-search-forward "'.'" nil t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
919 (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
920 '(syntax-table ("'" . ?\"))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
921 (goto-char (point-min))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
922 (while (re-search-forward "^[ \t]*#" nil t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
923 (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
924 '(syntax-table (11 . 10))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
925 (set-buffer-modified-p nil)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
926
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
927 ;; 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
928 ;; 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
929 ;; but will make things faster most of the time
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
930 (make-local-hook 'after-change-functions)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
931 (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
932 )))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
933
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
934 (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
935 "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
936 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
937 (let ((inhibit-point-motion-hooks t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
938 (eol (point)))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
939 (save-excursion
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
940 (save-match-data
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
941 (beginning-of-line)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
942 (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
943 (while (re-search-forward "'.'" eol t)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
944 (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
945 '(syntax-table ("'" . ?\"))))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
946 (beginning-of-line)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
947 (if (looking-at "^[ \t]*#")
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
948 (add-text-properties (match-beginning 0) (match-end 0)
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
949 '(syntax-table (11 . 10))))))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
950
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
951 ;;------------------------------------------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
952 ;; Testing the grammatical context
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
953 ;;------------------------------------------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
954
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
955 (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
956 "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
957 (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
958 (parse-partial-sexp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
959 (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
960
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
961 (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
962 "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
963 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
964 (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
965 (parse-partial-sexp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
966 (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
967
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
968 (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
969 "Returns t if inside a comment or string."
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
970 (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
971 (parse-partial-sexp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
972 (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
973 (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
974
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
975
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
976 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
977 ;; Contextual menus
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
978 ;; 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
979 ;; mouse button.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
980 ;; 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
981 ;; 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
982 ;; 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
983 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
984
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
985 (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
986 "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
987 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
988 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
989 (funcall function)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
990 (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
991 (list (point) (current-buffer))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
992
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
993 (defun ada-popup-menu (position)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
994 "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
995 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
996 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
997 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
998 where the mouse button was clicked."
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
999 (interactive "e")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1000
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1001 ;; 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
1002 ;; 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
1003 ;; transient-mark-mode.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1004 (let ((deactivate-mark nil))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1005 (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
1006 (list (point) (current-buffer)))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1007 (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
1008
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1009 (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
1010 (and (char-after)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1011 (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
1012 (= (char-after) ?_))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1013 (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
1014 (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
1015 (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
1016 ))
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1017 (if (fboundp 'popup-menu)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1018 (funcall (symbol-function 'popup-menu) ada-contextual-menu)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1019 (let (choice)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1020 (setq choice (x-popup-menu position ada-contextual-menu))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1021 (if choice
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1022 (funcall (lookup-key ada-contextual-menu (vector (car choice)))))))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1023
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1024 (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
1025 (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
1026 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1027
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1028
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1029 ;;------------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1030 ;; Misc functions
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1031 ;;------------------------------------------------------------------
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1032
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1033 ;;;###autoload
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1034 (defun ada-add-extensions (spec body)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1035 "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
1036 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
1037 extensions.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1038 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
1039 name"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1040 (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
1041 (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
1042 (if tmp
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1043 (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
1044 (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
1045
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1046 (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
1047 (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
1048 (if tmp
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1049 (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
1050 (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
1051
41082
6204eb16d008 (ada-add-extensions): Quote regexp special
Andreas Schwab <schwab@suse.de>
parents: 41036
diff changeset
1052 (add-to-list 'auto-mode-alist
6204eb16d008 (ada-add-extensions): Quote regexp special
Andreas Schwab <schwab@suse.de>
parents: 41036
diff changeset
1053 (cons (concat (regexp-quote spec) "\\'") 'ada-mode))
6204eb16d008 (ada-add-extensions): Quote regexp special
Andreas Schwab <schwab@suse.de>
parents: 41036
diff changeset
1054 (add-to-list 'auto-mode-alist
6204eb16d008 (ada-add-extensions): Quote regexp special
Andreas Schwab <schwab@suse.de>
parents: 41036
diff changeset
1055 (cons (concat (regexp-quote body) "\\'") 'ada-mode))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1056
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1057 (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
1058 (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
1059
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1060 ;; 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
1061 ;; speedbar)
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1062 (if (fboundp 'speedbar-add-supported-extension)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1063 (progn
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1064 (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
1065 spec)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1066 (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
1067 body)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1068 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1069
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1070
10707
4a2ea4f52ea0 Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 10705
diff changeset
1071 ;;;###autoload
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 (defun ada-mode ()
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
1073 "Ada mode is the major mode for editing Ada code.
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1074 This version was built on $Date: 2003/01/31 09:21:42 $.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 Bindings are as follows: (Note: 'LFD' is control-j.)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1077 \\{ada-mode-map}
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 Indent line '\\[ada-tab]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 Indent line, insert newline and indent the new line. '\\[newline-and-indent]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 Re-format the parameter-list point is in '\\[ada-format-paramlist]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 Indent all lines in region '\\[ada-indent-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 Adjust case of identifiers and keywords in region '\\[ada-adjust-case-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 Adjust case of identifiers and keywords in buffer '\\[ada-adjust-case-buffer]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1088 Fill comment paragraph, justify and append postfix '\\[fill-paragraph]'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
1090 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
1091 Next package '\\[ada-next-package]' Previous package '\\[ada-previous-package]'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 Goto matching start of current 'end ...;' '\\[ada-move-to-start]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 Goto end of current block '\\[ada-move-to-end]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 Comments are handled using standard GNU Emacs conventions, including:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 Start a comment '\\[indent-for-comment]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 Comment region '\\[comment-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 Uncomment region '\\[ada-uncomment-region]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 Continue comment on next line '\\[indent-new-comment-line]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 If you use imenu.el:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 Display index-menu of functions & procedures '\\[imenu]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 If you use find-file.el:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 Switch to other file (Body <-> Spec) '\\[ff-find-other-file]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 or '\\[ff-mouse-find-other-file]
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 Switch to other file in other window '\\[ada-ff-other-window]'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 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
1110 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
1111
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 If you use ada-xref.el:
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 Goto declaration: '\\[ada-point-and-xref]' on the identifier
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 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
1115 Complete identifier: '\\[ada-complete-identifier]'."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 (kill-all-local-variables)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1120 (set (make-local-variable 'require-final-newline) t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1122 ;; 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
1123 ;; simply with M-h
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1124 (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
1125 (set (make-local-variable 'paragraph-separate) "[ \t\n\f]*$")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 ;; 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
1128 ;; 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
1129 (set (make-local-variable 'comment-end) "")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1130
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1131 ;; 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
1132 (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
1133
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1134 ;; 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
1135 ;; 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
1136 ;; 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
1137 ;; 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
1138 ;; 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
1139 (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
1140 (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
1141 (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
1142
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1143 (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
1144 'ada-indent-current-function)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1145
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1146 (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
1147
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1148 ;; 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
1149 ;; 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
1150 ;; included in comment-start
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1151 (unless ada-xemacs
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1152 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1153 (if (ada-check-emacs-version 20 3)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1154 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1155 (set (make-local-variable 'parse-sexp-ignore-comments) t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1156 (set (make-local-variable 'comment-padding) 0)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1157 (set (make-local-variable 'parse-sexp-lookup-properties) t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1158 ))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1159
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1160 (set 'case-fold-search t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1161 (if (boundp 'imenu-case-fold-search)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1162 (set 'imenu-case-fold-search t))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1163
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1164 (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
1165 'ada-fill-comment-paragraph)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1166
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1167 (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
1168 ada-imenu-generic-expression)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1169
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1170 ;; Support for compile.el
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1171 ;; 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
1172 (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
1173 (lambda()
38446
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
1174 (set (make-local-variable 'compile-auto-highlight) 40)
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
1175 ;; FIXME: This has global impact! -stef
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1176 (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
1177 '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
1178 (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
1179 'ada-compile-goto-error)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1180 (define-key compilation-minor-mode-map "\C-m"
38446
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
1181 'ada-compile-goto-error)))
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
1182
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1183 ;; font-lock support :
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1184 ;; We need to set some properties for XEmacs, and define some variables
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1185 ;; for Emacs
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1186
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1187 (if ada-xemacs
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1188 ;; XEmacs
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1189 (put 'ada-mode 'font-lock-defaults
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1190 '(ada-font-lock-keywords
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1191 nil t ((?\_ . "w") (?# . ".")) beginning-of-line))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1192 ;; Emacs
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1193 (set (make-local-variable 'font-lock-defaults)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1194 '(ada-font-lock-keywords
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1195 nil t
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1196 ((?\_ . "w") (?# . "."))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1197 beginning-of-line
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1198 (font-lock-syntactic-keywords . ada-font-lock-syntactic-keywords)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1199 )
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1200
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1201 ;; Set up support for find-file.el.
38446
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
1202 (set (make-local-variable 'ff-other-file-alist)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1203 'ada-other-file-alist)
38446
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
1204 (set (make-local-variable 'ff-search-directories)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1205 'ada-search-directories)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1206 (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
1207 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
1208 (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
1209
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1210 ;; 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
1211 ;; 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
1212 ;; 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
1213 (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
1214
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1215 ;; Go to the parent package :
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1216 (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
1217 (cons (eval-when-compile
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1218 (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
1219 "\\(body[ \t]+\\)?"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1220 "\\(\\(\\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
1221 (lambda ()
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1222 (set '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
1223 ada-search-directories
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1224 (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
1225 (match-string 3))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1226 ada-spec-suffixes)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1227 ;; 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
1228 ;; go to the correct package.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1229 (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
1230 (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
1231 (lambda ()
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1232 (set '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
1233 ada-search-directories
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1234 (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
1235 (match-string 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1236 ada-spec-suffixes)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1237 ;; 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
1238 ;; 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
1239 ;; 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
1240 ;; 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
1241 ;; 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
1242 ;; 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
1243 (let ((old-construct
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1244 (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
1245 (new-cdr
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1246 (lambda ()
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1247 (set '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
1248 ada-search-directories
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1249 (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
1250 (match-string 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1251 ada-spec-suffixes)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1252 (if old-construct
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1253 (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
1254 (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
1255 (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
1256 new-cdr))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1257
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1258 ;; Support for outline-minor-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1259 (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
1260 "\\([ \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
1261 (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
1262
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1263 ;; Support for imenu : We want a sorted index
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1264 (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
1265
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1266 ;; Support for ispell : Check only comments
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1267 (set (make-local-variable 'ispell-check-comments) 'exclusive)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1268
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1269 ;; Support for align.el <= 2.2, if present
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1270 ;; align.el is distributed with Emacs 21, but not with earlier versions.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1271 (if (boundp 'align-mode-alist)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1272 (add-to-list 'align-mode-alist '(ada-mode . ada-align-list)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1273
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1274 ;; Support for align.el >= 2.8, if present
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1275 (if (boundp 'align-dq-string-modes)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1276 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1277 (add-to-list 'align-dq-string-modes 'ada-mode)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1278 (add-to-list 'align-open-comment-modes 'ada-mode)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1279 (set (make-variable-buffer-local 'align-region-separate)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1280 ada-align-region-separate)
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1281
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1282 ;; Exclude comments alone on line from alignment.
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1283 (add-to-list 'align-exclude-rules-list
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1284 '(ada-solo-comment
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1285 (regexp . "^\\(\\s-*\\)--")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1286 (modes . '(ada-mode))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1287 (add-to-list 'align-exclude-rules-list
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1288 '(ada-solo-use
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1289 (regexp . "^\\(\\s-*\\)\\<use\\>")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1290 (modes . '(ada-mode))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1291
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1292 (setq ada-align-modes nil)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1293
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1294 (add-to-list 'ada-align-modes
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1295 '(ada-declaration-assign
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1296 (regexp . "[^:]\\(\\s-*\\):[^:]")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1297 (valid . (lambda() (not (ada-in-comment-p))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1298 (repeat . t)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1299 (modes . '(ada-mode))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1300 (add-to-list 'ada-align-modes
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1301 '(ada-associate
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1302 (regexp . "[^=]\\(\\s-*\\)=>")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1303 (valid . (lambda() (not (ada-in-comment-p))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1304 (modes . '(ada-mode))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1305 (add-to-list 'ada-align-modes
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1306 '(ada-comment
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1307 (regexp . "\\(\\s-*\\)--")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1308 (modes . '(ada-mode))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1309 (add-to-list 'ada-align-modes
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1310 '(ada-use
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1311 (regexp . "\\(\\s-*\\)\\<use\\s-")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1312 (valid . (lambda() (not (ada-in-comment-p))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1313 (modes . '(ada-mode))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1314 (add-to-list 'ada-align-modes
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1315 '(ada-at
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1316 (regexp . "\\(\\s-+\\)at\\>")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1317 (modes . '(ada-mode))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1318
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1319
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1320 (setq align-mode-rules-list ada-align-modes)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1321 ))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1322
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1323 ;; Set up the contextual menu
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1324 (if ada-popup-key
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1325 (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
1326
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1327 ;; 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
1328 (define-abbrev-table 'ada-mode-abbrev-table ())
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1329 (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
1330
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1331 ;; Support for which-function mode
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1332 ;; which-function-mode does not work with nested subprograms, since it is
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1333 ;; based only on the regexps generated by imenu, and thus can only detect the
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1334 ;; beginning of subprograms, not the end.
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1335 ;; Fix is: redefine a new function ada-which-function, and call it when the
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1336 ;; major-mode is ada-mode.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1337
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1338 (unless ada-xemacs
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1339 ;; This function do not require that we load which-func now.
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1340 ;; This can be done by the user if he decides to use which-func-mode
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1341
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1342 (defadvice which-function (around ada-which-function activate)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1343 "In Ada buffers, should work with overloaded subprograms, and does not
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1344 use imenu."
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1345 (if (equal major-mode 'ada-mode)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1346 (set 'ad-return-value (ada-which-function))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1347 ad-do-it))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1348
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1349 ;; So that we can activate which-func-modes for Ada mode
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1350 (if (and (boundp 'which-func-modes)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1351 (listp which-func-modes))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1352 (add-to-list 'which-func-modes 'ada-mode))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1353 )
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1354
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1355 ;; 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
1356 (setq comment-multi-line nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1357
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1358 (setq major-mode 'ada-mode
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1359 mode-name "Ada")
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 (use-local-map ada-mode-map)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362
38446
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
1363 (easy-menu-add ada-mode-menu ada-mode-map)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1364
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1365 (set-syntax-table ada-mode-syntax-table)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (if ada-clean-buffer-before-saving
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 (progn
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1369 ;; remove all spaces at the end of lines in the whole buffer.
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
1370 (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
1371 ;; 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
1372 (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
1373 (lambda () (untabify (point-min) (point-max))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (run-hooks 'ada-mode-hook)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1377 ;; To be run after the hook, in case the user modified
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1378 ;; ada-fill-comment-prefix
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1379 (make-local-variable 'comment-start)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1380 (if ada-fill-comment-prefix
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1381 (set 'comment-start ada-fill-comment-prefix)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1382 (set 'comment-start "-- "))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1383
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1384 ;; 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
1385 ;; font-lock-mode
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1386
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1387 (unless ada-xemacs
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1388 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1389 (ada-initialize-properties)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1390 (make-local-hook 'font-lock-mode-hook)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1391 (add-hook 'font-lock-mode-hook 'ada-deactivate-properties nil t)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1392
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 ;; the following has to be done after running the ada-mode-hook
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 ;; because users might want to set the values of these variable
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 ;; inside the hook (MH)
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 (cond ((eq ada-language-version 'ada83)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1398 (setq ada-keywords ada-83-keywords))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1399 ((eq ada-language-version 'ada95)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1400 (setq ada-keywords ada-95-keywords)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 (if ada-auto-case
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 (ada-activate-keys-for-case)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1405
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1406 ;; transient-mark-mode and mark-active are not defined in XEmacs
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1407 (defun ada-region-selected ()
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1408 "t if a region has been selected by the user and is still active."
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1409 (or (and ada-xemacs (funcall (symbol-function 'region-active-p)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1410 (and (not ada-xemacs)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1411 (symbol-value 'transient-mark-mode)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1412 (symbol-value 'mark-active))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1413
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1415 ;;-----------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1416 ;; auto-casing
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1417 ;; 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
1418 ;; functions to auto-case identifiers, keywords, ...
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1419 ;; 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
1420 ;; `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
1421 ;; 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
1422 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1423 ;; 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
1424 ;; 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
1425 ;; 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
1426 ;; 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
1427 ;;-----------------------------------------------------------------
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1428
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1429 (defun ada-save-exceptions-to-file (file-name)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1430 "Save the exception lists `ada-case-exception' and
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1431 `ada-case-exception-substring' to the file FILE-NAME."
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1432
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1433 ;; Save the list in the file
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1434 (find-file (expand-file-name file-name))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1435 (erase-buffer)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1436 (mapcar (lambda (x) (insert (car x) "\n"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1437 (sort (copy-sequence ada-case-exception)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1438 (lambda(a b) (string< (car a) (car b)))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1439 (mapcar (lambda (x) (insert "*" (car x) "\n"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1440 (sort (copy-sequence ada-case-exception-substring)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1441 (lambda(a b) (string< (car a) (car b)))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1442 (save-buffer)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1443 (kill-buffer nil)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1444 )
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1445
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1446 (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
1447 "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
1448 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
1449 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
1450 The standard casing rules will no longer apply to this word."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1452 (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
1453 file-name
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
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1456 (cond ((stringp ada-case-exception-file)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1457 (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
1458 ((listp ada-case-exception-file)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1459 (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
1460 (t
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1461 (error (concat "No exception file specified. "
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1462 "See variable 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
1463
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1464 (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
1465 (unless word
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1466 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1467 (skip-syntax-backward "w")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1468 (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
1469 (point) (save-excursion (forward-word 1) (point))))))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1470 (set-syntax-table previous-syntax-table)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1471
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1472 ;; Reread the exceptions file, in case it was modified by some other,
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1473 (ada-case-read-exceptions-from-file file-name)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1474
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1475 ;; 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
1476 ;; we simply want to replace it.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1477 (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
1478 (assoc-ignore-case word ada-case-exception))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1479 (setcar (assoc-ignore-case word ada-case-exception) word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1480 (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
1481 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1482
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1483 (ada-save-exceptions-to-file file-name)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1484 ))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1485
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1486 (defun ada-create-case-exception-substring (&optional word)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1487 "Defines the substring WORD as an exception for the casing system.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1488 If WORD is not given, then the current word in the buffer is used instead,
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1489 or the selected region if any is active.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1490 The new words is added to the first file in `ada-case-exception-file'.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1491 When auto-casing a word, this substring will be special-cased, unless the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1492 word itself has a special casing."
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1493 (interactive)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1494 (let ((file-name
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1495 (cond ((stringp ada-case-exception-file)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1496 ada-case-exception-file)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1497 ((listp ada-case-exception-file)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1498 (car ada-case-exception-file))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1499 (t
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1500 (error (concat "No exception file specified. "
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1501 "See variable ada-case-exception-file."))))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1502
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1503 ;; Find the substring to define as an exception. Order is: the parameter,
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1504 ;; if any, or the selected region, or the word under the cursor
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1505 (cond
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1506 (word nil)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1507
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1508 ((ada-region-selected)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1509 (setq word (buffer-substring-no-properties
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1510 (region-beginning) (region-end))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1511
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1512 (t
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1513 (let ((underscore-syntax (char-syntax ?_)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1514 (unwind-protect
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1515 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1516 (modify-syntax-entry ?_ "." (syntax-table))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1517 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1518 (skip-syntax-backward "w")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1519 (set 'word (buffer-substring-no-properties
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1520 (point)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1521 (save-excursion (forward-word 1) (point))))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1522 (modify-syntax-entry ?_ (make-string 1 underscore-syntax)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1523 (syntax-table))))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1524
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1525 ;; Reread the exceptions file, in case it was modified by some other,
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1526 (ada-case-read-exceptions-from-file file-name)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1527
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1528 ;; If the word is already in the list, even with a different casing
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1529 ;; we simply want to replace it.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1530 (if (and (not (equal ada-case-exception-substring '()))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1531 (assoc-ignore-case word ada-case-exception-substring))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1532 (setcar (assoc-ignore-case word ada-case-exception-substring) word)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1533 (add-to-list 'ada-case-exception-substring (cons word t))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1534 )
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1535
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1536 (ada-save-exceptions-to-file file-name)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1537
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1538 (message (concat "Defining " word " as a casing exception"))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1539
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1540 (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
1541 "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
1542 (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
1543 (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
1544 (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
1545 (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
1546 (widen)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1547 (goto-char (point-min))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1548 (while (not (eobp))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1549
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1550 ;; 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
1551 ;; 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
1552 ;; 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
1553 (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
1554 (point) (save-excursion (forward-word 1) (point)))))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1555
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1556 ;; Handling a substring ?
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1557 (if (char-equal (string-to-char word) ?*)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1558 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1559 (setq word (substring word 1))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1560 (unless (assoc-ignore-case word ada-case-exception-substring)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1561 (add-to-list 'ada-case-exception-substring (cons word t))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1562 (unless (assoc-ignore-case word ada-case-exception)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1563 (add-to-list 'ada-case-exception (cons word t)))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1564
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1565 (forward-line 1))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1566 (kill-buffer nil)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1567 (set-buffer buffer)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1568 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1569
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1570 (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
1571 "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
1572 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1573
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1574 ;; Reinitialize the casing exception list
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1575 (setq ada-case-exception '()
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1576 ada-case-exception-substring '())
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1577
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1578 (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
1579 (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
1580
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1581 ((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
1582 (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
1583 ada-case-exception-file))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1584
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1585 (defun ada-adjust-case-substring ()
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1586 "Adjust case of substrings in the previous word."
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1587 (interactive)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1588 (let ((substrings ada-case-exception-substring)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1589 (max (point))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1590 (case-fold-search t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1591 (underscore-syntax (char-syntax ?_))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1592 re)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1593
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1594 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1595 (forward-word -1)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1596
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1597 (unwind-protect
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1598 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1599 (modify-syntax-entry ?_ "." (syntax-table))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1600
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1601 (while substrings
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1602 (setq re (concat "\\b" (regexp-quote (caar substrings)) "\\b"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
1603
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1604 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1605 (while (re-search-forward re max t)
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1606 (replace-match (caar substrings) t)))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1607 (setq substrings (cdr substrings))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1608 )
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1609 )
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1610 (modify-syntax-entry ?_ (make-string 1 underscore-syntax) (syntax-table)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1611 )))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1612
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1613 (defun ada-adjust-case-identifier ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1614 "Adjust case of the previous identifier.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1615 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
1616 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
1617 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1618 (if (or (equal ada-case-exception '())
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1619 (equal (char-after) ?_))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1620 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1621 (funcall ada-case-identifier -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1622 (ada-adjust-case-substring))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1623
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1624 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1625 (let ((end (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1626 (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
1627 (point)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1628 match)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1629 ;; 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
1630 (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
1631 ada-case-exception))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1632
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1633 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1634 (delete-region start end)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1635 (insert (car match)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1636
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1637 ;; Else simply re-case the word
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1638 (funcall ada-case-identifier -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1639 (ada-adjust-case-substring))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641 (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
1642 "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
1643 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 (forward-word -1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1645 (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
1646 (or (= (char-before) ?_)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1647 (= (char-before) ?'))));; unless we have a _ or '
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648 (looking-at (concat ada-keywords "[^_]")))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 (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
1651 "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
1652 If FORCE-IDENTIFIER is non-nil then also adjust keyword as identifier."
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1653 (if (not (bobp))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1654 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1655 (forward-char -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1656 (if (and (not (bobp))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1657 ;; or if at the end of a character constant
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1658 (not (and (eq (following-char) ?')
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1659 (eq (char-before (1- (point))) ?')))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1660 ;; or if the previous character was not part of a word
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1661 (eq (char-syntax (char-before)) ?w)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1662 ;; if in a string or a comment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1663 (not (ada-in-string-or-comment-p))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1664 )
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1665 (if (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1666 (forward-word -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1667 (or (= (point) (point-min))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1668 (backward-char 1))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1669 (= (following-char) ?'))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1670 (funcall ada-case-attribute -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1671 (if (and
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1672 (not force-identifier) ; (MH)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1673 (ada-after-keyword-p))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1674 (funcall ada-case-keyword -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1675 (ada-adjust-case-identifier))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1676 (forward-char 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
1677 ))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1678 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 (defun ada-adjust-case-interactive (arg)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1681 "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
1682 ARG is the prefix the user entered with \C-u."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1683 (interactive "P")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1684
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1685 (if ada-auto-case
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1686 (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
1687 (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
1688
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1689 (unwind-protect
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1690 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1691 (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
1692 (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
1693 (eq lastk ?\r))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1694 ;; horrible kludge
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1695 (insert " ")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1696 (ada-adjust-case)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1697 ;; horrible dekludge
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1698 (delete-backward-char 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1699 ;; 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
1700 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1701 ((eq lastk ?\n)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1702 (funcall ada-lfd-binding))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1703 ((eq lastk ?\r)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1704 (funcall ada-ret-binding))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1705 ((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
1706 ;; 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
1707 ((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
1708 ;; 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
1709 ;; 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
1710 (if (eq lastk ?_)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1711 (ada-adjust-case t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1712 (ada-adjust-case))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1713 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1714 ;; Restore the syntax table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1715 (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
1716 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1717
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1718 ;; Else, no auto-casing
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1719 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1720 ((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
1721 (funcall ada-lfd-binding))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1722 ((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
1723 (funcall ada-ret-binding))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1724 (t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1725 (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
1726 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1727
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 (defun ada-activate-keys-for-case ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1729 "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
1730 (interactive)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1731 ;; 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
1732 ;; when casing is activated.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1733 ;; 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
1734 ;; 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
1735 (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
1736 (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
1737
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1738 ;; Call case modifying function after certain keys.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 (mapcar (function (lambda(key) (define-key
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 ada-mode-map
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741 (char-to-string key)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1742 '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
1743 '( ?` ?_ ?# ?% ?& ?* ?( ?) ?- ?= ?+
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1744 ?| ?\; ?: ?' ?\" ?< ?, ?. ?> ?/ ?\n 32 ?\r )))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 (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
1747 "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
1748 No other letter is modified.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1749 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
1750 (interactive)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1751 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1752 (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
1753 (first t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1754 (skip-syntax-backward "w")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1755 (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
1756 (< (point) end))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1757 (and first
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1758 (setq first nil))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1759 (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
1760 (delete-char 1)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1761
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1762 (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
1763 "Does nothing.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1764 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
1765 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
1766 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
1767 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
1768 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
1769 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1770
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1771 (defun ada-capitalize-word (&optional arg)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1772 "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
1773 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
1774 (interactive)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1775 (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
1776 (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
1777 (modify-syntax-entry ?_ "_")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1778 (capitalize-region begin end)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1779 (modify-syntax-entry ?_ "w")))
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 (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
1782 "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
1783 Attention: This function might take very long for big regions !"
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 (interactive "*r")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1785 (let ((begin nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1786 (end nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1787 (keywordp nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1788 (attribp nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1789 (previous-syntax-table (syntax-table)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1790 (message "Adjusting case ...")
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1791 (unwind-protect
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1792 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1793 (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
1794 (goto-char to)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1795 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1796 ;; 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
1797 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1798 (while (re-search-backward "\\<\\(\\sw+\\)\\>" from t)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1799 (setq end (match-end 1))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1800 (setq attribp
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1801 (and (> (point) from)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1802 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1803 (forward-char -1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1804 (setq attribp (looking-at "'.[^']")))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1805 (or
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1806 ;; 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
1807 (ada-in-string-or-comment-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1808 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1809 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1810 ;; 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
1811 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1812 (setq begin (point))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1813 (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
1814 (goto-char end)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1815 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1816 ;; casing according to user-option
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1817 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1818 (if attribp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1819 (funcall ada-case-attribute -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1820 (if keywordp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1821 (funcall ada-case-keyword -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1822 (ada-adjust-case-identifier)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1823 (goto-char begin))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1824 (message "Adjusting case ... Done"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1825 (set-syntax-table previous-syntax-table))))
10705
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 (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
1828 "Adjusts the case of all words in the whole buffer.
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 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
1830 (interactive "*")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 (ada-adjust-case-region (point-min) (point-max)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1834 ;;--------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1835 ;; Format Parameter Lists
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1836 ;; 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
1837 ;; 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
1838 ;; - 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
1839 ;; format:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1840 ;; ( (<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
1841 ;; ... )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1842 ;; This is done in `ada-scan-paramlist'.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1843 ;; - 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
1844 ;; `ada-insert-paramlist'.
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1845 ;; 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
1846 ;; 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
1847 ;; 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
1848 ;;--------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1849
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1850 (defun ada-format-paramlist ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1851 "Reformats the parameter list point is in."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853 (let ((begin nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 (end nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1855 (delend nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1856 (paramlist nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1857 (previous-syntax-table (syntax-table)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1858 (unwind-protect
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1859 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1860 (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
1861
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1862 ;; check if really inside parameter list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1863 (or (ada-in-paramlist-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1864 (error "not in parameter list"))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1865
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1866 ;; find start of current parameter-list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1867 (ada-search-ignore-string-comment
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
1868 (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
1869 (down-list 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1870 (backward-char 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1871 (setq begin (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1872
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1873 ;; find end of parameter-list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1874 (forward-sexp 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1875 (setq delend (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1876 (delete-char -1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
1877 (insert "\n")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1878
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1879 ;; find end of last parameter-declaration
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1880 (forward-comment -1000)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1881 (setq end (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1882
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1883 ;; 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
1884 (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
1885
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1886 ;; 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
1887 (delete-region begin delend)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1888
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1889 ;; insert the new parameter-list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1890 (goto-char begin)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1891 (ada-insert-paramlist paramlist))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1892
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1893 ;; restore syntax-table
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1894 (set-syntax-table previous-syntax-table)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
1895 )))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897 (defun ada-scan-paramlist (begin end)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1898 "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
1899 Returns the equivalent internal parameter list."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1900 (let ((paramlist (list))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901 (param (list))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1902 (notend t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1903 (apos nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1904 (epos nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1905 (semipos nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1906 (match-cons nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1907
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1908 (goto-char begin)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1909
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1910 ;; loop until end of last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911 (while notend
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 ;; find first character of parameter-declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914 (ada-goto-next-non-ws)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1915 (setq apos (point))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 ;; find last character of parameter-declaration
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1918 (if (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1919 (ada-search-ignore-string-comment "[ \t\n]*;" nil end t))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1920 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1921 (setq epos (car match-cons))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1922 (setq semipos (cdr match-cons)))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1923 (setq epos end))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1924
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1925 ;; read name(s) of parameter(s)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926 (goto-char apos)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1927 (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
1928
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1929 (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
1930 (ada-search-ignore-string-comment ":" nil epos t 'search-forward)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1932 ;; look for 'in'
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1933 (setq apos (point))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1934 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1935 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1936 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1937 (consp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1938 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1939 "in" nil epos t 'word-search-forward)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1940
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1941 ;; look for 'out'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 (goto-char apos)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1943 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1944 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1945 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1946 (consp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1947 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1948 "out" nil epos t 'word-search-forward)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1949
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1950 ;; look for 'access'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1951 (goto-char apos)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1952 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1953 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1954 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1955 (consp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1956 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1957 "access" nil epos t 'word-search-forward)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1958
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
1959 ;; skip 'in'/'out'/'access'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1960 (goto-char apos)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1961 (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
1962 (while (looking-at "\\<\\(in\\|out\\|access\\)\\>")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1963 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1964 (ada-goto-next-non-ws))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1965
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1966 ;; 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
1967 ;; 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
1968 ;; 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
1969 (looking-at "\\<\\(\\sw\\|[_.' \t]\\)+\\>")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1970 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1971 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1972 (list (match-string 0))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1973
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1974 ;; read default-expression, if there is one
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1975 (goto-char (setq apos (match-end 0)))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1976 (setq param
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1977 (append param
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1978 (list
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1979 (if (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1980 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1981 ":=" nil epos t 'search-forward))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1982 (buffer-substring (car match-cons) epos)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
1983 nil))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1984
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1985 ;; add this parameter-declaration to the list
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1986 (setq paramlist (append paramlist (list param)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1987
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1988 ;; check if it was the last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1989 (if (eq epos end)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
1990 (setq notend nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1991 (goto-char semipos))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1992 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1993 (reverse paramlist)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1994
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995 (defun ada-insert-paramlist (paramlist)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
1996 "Inserts a formatted PARAMLIST in the buffer."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1997 (let ((i (length paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1998 (parlen 0)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1999 (typlen 0)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2000 (inp nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2001 (outp nil)
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
2002 (accessp nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2003 (column nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2004 (firstcol nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2005
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2006 ;; loop until last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2007 (while (not (zerop i))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2008 (setq i (1- i))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2009
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2010 ;; get max length of parameter-name
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2011 (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
2012
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2013 ;; get max length of type-name
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2014 (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
2015
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2016 ;; is there any 'in' ?
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2017 (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
2018
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2019 ;; is there any 'out' ?
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2020 (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
2021
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
2022 ;; is there any 'access' ?
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2023 (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
2024 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2025
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2026 ;; does paramlist already start on a separate line ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2027 (if (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2028 (re-search-backward "^.\\|[^ \t]" nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2029 (looking-at "^."))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2030 ;; yes => re-indent it
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2031 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2032 (ada-indent-current)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2033 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2034 (if (looking-at "\\(is\\|return\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2035 (replace-match " \\1"))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2036
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2037 ;; 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
2038 (fixup-whitespace)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2039 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2040 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2041 ((looking-at "[ \t]*\\(\n\\|;\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2042 (replace-match "\\1"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2043 ((looking-at "[ \t]*\\(is\\|return\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2044 (replace-match " \\1"))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2045 (insert " "))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2046
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2047 (insert "(")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2048 (ada-indent-current)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2049
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2050 (setq firstcol (current-column))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2051 (setq i (length paramlist))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2052
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2053 ;; loop until last parameter
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2054 (while (not (zerop i))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2055 (setq i (1- i))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2056 (setq column firstcol)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2057
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2058 ;; insert parameter-name, space and colon
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2059 (insert (nth 0 (nth i paramlist)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2060 (indent-to (+ column parlen 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2061 (insert ": ")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2062 (setq column (current-column))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2063
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2064 ;; insert 'in' or space
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2065 (if (nth 1 (nth i paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2066 (insert "in ")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2067 (if (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2068 (or inp
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
2069 accessp)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2070 (not (nth 3 (nth i paramlist))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2071 (insert " ")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2072
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2073 ;; insert 'out' or space
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2074 (if (nth 2 (nth i paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2075 (insert "out ")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2076 (if (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2077 (or outp
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
2078 accessp)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2079 (not (nth 3 (nth i paramlist))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2080 (insert " ")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2081
13231
fb78cec8e440 All doc strings changed to comply with standard Emacs conventions.
Richard M. Stallman <rms@gnu.org>
parents: 13160
diff changeset
2082 ;; insert 'access'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2083 (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
2084 (insert "access "))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2085
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2086 (setq column (current-column))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2087
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2088 ;; insert type-name and, if necessary, space and default-expression
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2089 (insert (nth 4 (nth i paramlist)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2090 (if (nth 5 (nth i paramlist))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2091 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2092 (indent-to (+ column typlen 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2093 (insert (nth 5 (nth i paramlist)))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2094
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2095 ;; 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
2096 (if (zerop i)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2097 (insert ")")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2098 ;; no => insert ';' and newline and indent
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2099 (insert ";")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2100 (newline)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2101 (indent-to firstcol))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2102 )
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2103
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2104 ;; if anything follows, except semicolon, newline, is or return
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2105 ;; 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
2106 (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
2107 (ada-indent-newline-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2108 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2109
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2110
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2111
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2112 ;;;----------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2113 ;; Indentation Engine
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2114 ;; 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
2115 ;; - position of reference in the buffer
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2116 ;; - 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
2117 ;; that are evaluated)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2118 ;; 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
2119 ;; 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
2120 ;; 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
2121 ;; 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
2122 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2123 ;; 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
2124 ;; 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
2125 ;; 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
2126 ;; based on previous lines.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2127 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2128 ;; The relevant functions for indentation are:
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2129 ;; - `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
2130 ;; - `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
2131 ;; calculation that were done
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2132 ;; - `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
2133 ;; - `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
2134 ;; based on the context (see above).
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2135 ;; - `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
2136 ;; 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
2137 ;; context.
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2138 ;;;----------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2139
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2140 (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
2141 "Indent the region between BEG end END."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2142 (interactive "*r")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2143 (goto-char beg)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
2144 (let ((block-done 0)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2145 (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
2146 (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
2147 (count-lines beg end)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
2148 (endmark (copy-marker end)))
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
2149 ;; catch errors while indenting
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2150 (while (< (point) endmark)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2151 (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
2152 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2153 (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
2154 block-done 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2155 (message msg lines-remaining)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2156 (if (= (char-after) ?\n) nil
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2157 (ada-indent-current))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2158 (forward-line 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2159 (setq block-done (1+ block-done)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
2160 (message "indenting ... done")))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2161
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2162 (defun ada-indent-newline-indent ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2163 "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
2164 (interactive "*")
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2165 (ada-indent-current)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2166 (newline)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2167 (ada-indent-current))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2168
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2169 (defun ada-indent-newline-indent-conditional ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2170 "Insert a newline and indent it.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2171 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
2172 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
2173 (interactive "*")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2174 (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
2175 (newline)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2176 (ada-indent-current))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2177
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2178 (defun ada-justified-indent-current ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2179 "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
2180 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2181
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2182 (let ((cur-indent (ada-indent-current)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2183
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2184 (let ((line (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2185 (goto-char (car cur-indent))
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2186 (count-lines 1 (point)))))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2187
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2188 (if (equal (cdr cur-indent) '(0))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2189 (message (concat "same indentation as line " (number-to-string line)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2190 (message (mapconcat (lambda(x)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2191 (cond
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2192 ((symbolp x)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2193 (symbol-name x))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2194 ((numberp x)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2195 (number-to-string x))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2196 ((listp x)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2197 (concat "- " (symbol-name (cadr x))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2198 ))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2199 (cdr cur-indent)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2200 " + "))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2201 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2202 (goto-char (car cur-indent))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2203 (sit-for 1))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
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 (defun ada-batch-reformat ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2206 "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
2207 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
2208 command like:
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2209 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
2210
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2211 (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
2212 (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
2213 (message (concat "formating " source))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2214 (find-file source)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2215 (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
2216 (ada-adjust-case-buffer)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2217 (write-file source))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2218 (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
2219 (message "Done")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2220 (kill-emacs 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2221
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2222 (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
2223 "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
2224 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
2225 (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
2226
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2227 (defun ada-indent-current ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2228 "Indent current line as Ada code.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2229 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
2230 offset."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2231 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2232 (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
2233 (orgpoint (point-marker))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2234 cur-indent tmp-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2235 prev-indent)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2236
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2237 (unwind-protect
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2238 (progn
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2239 (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
2240
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2241 ;; 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
2242 ;; 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
2243 (if ada-xemacs
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2244 (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
2245
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2246 (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2247 (setq cur-indent
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2248
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2249 ;; 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
2250 (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
2251 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2252 (back-to-indentation)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2253 (ada-get-current-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2254
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2255 ;; 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
2256 (list (point-min) 0))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2257
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2258 ;; 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
2259 ;; 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
2260 (if cur-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2261 (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
2262 (current-column))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2263 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
2264 (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
2265
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2266 (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
2267 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2268 ((numberp (car tmp-indent))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2269 (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
2270 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2271 (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
2272 )
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2273 (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
2274
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2275 ;; 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
2276 (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
2277 nil
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2278 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2279 (delete-horizontal-space)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2280 (indent-to prev-indent))
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 ;; restore position of point
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2283 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2284 (goto-char orgpoint)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2285 (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
2286 (back-to-indentation)))
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 ;; restore syntax-table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2289 (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
2290 (if ada-xemacs
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2291 (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
2292 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2293
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2294 cur-indent
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2295 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2296
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2297 (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
2298 "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
2299 (let (column
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2300 pos
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2301 match-cons
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2302 result
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2303 (orgpoint (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2304 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2305 (forward-comment -10000)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2306 (forward-line 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2307 (point))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2308
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2309 (setq result
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2310 (cond
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2311
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2312 ;;-----------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2313 ;; 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
2314 ;;-----------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2315
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2316 ((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
2317 (not (ada-in-paramlist-p))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2318 (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
2319
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2320 ;; 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
2321 ;; Source_File_Record)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2322 (save-excursion
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2323
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2324 ;; Align the closing parenthesis on the opening one
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2325 (if (= (following-char) ?\))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2326 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2327 (goto-char column)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2328 (skip-chars-backward " \t")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2329 (list (1- (point)) 0))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2330
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2331 (if (and (skip-chars-backward " \t")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2332 (= (char-before) ?\n)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2333 (not (forward-comment -10000))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2334 (= (char-before) ?>))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2335 ;; ??? Could use a different variable
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2336 (list column 'ada-broken-indent)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2337
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2338 ;; We want all continuation lines to be indented the same
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2339 ;; (ada-broken-line from the opening parenthesis. However, in
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2340 ;; parameter list, each new parameter should be indented at the
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2341 ;; column as the opening parenthesis.
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2342
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2343 ;; A special case to handle nested boolean expressions, as in
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2344 ;; ((B
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2345 ;; and then C) -- indented by ada-broken-indent
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2346 ;; or else D) -- indenting this line.
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2347 ;; ??? This is really a hack, we should have a proper way to go to
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2348 ;; ??? the beginning of the statement
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2349
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2350 (if (= (char-before) ?\))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2351 (backward-sexp))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2352
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2353 (if (memq (char-before) '(?, ?\; ?\( ?\)))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2354 (list column 0)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2355 (list column 'ada-continuation-indent)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2356 )))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2357
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2358 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2359 ;; at end of buffer
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2360 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2361
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2362 ((not (char-after))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2363 (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
2364
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2365 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2366 ;; starting with e
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2367 ;;---------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2368
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2369 ((= (downcase (char-after)) ?e)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2370 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2371
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2372 ;; ------- end ------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2373
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2374 ((looking-at "end\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2375 (let ((label 0)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2376 limit)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2377 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2378 (ada-goto-matching-start 1)
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2379
30411
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 ;; 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
2382 ;; 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
2383 ;; 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
2384 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2385 (if (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2386 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2387 (looking-at ".+\\<loop\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2388 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2389 (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2390 (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
2391 (if (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2392 (and
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2393 (setq match-cons
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2394 (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
2395 (not (looking-at "\\<loop\\>"))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2396 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2397 (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
2398 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2399 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2400 (if (looking-at ada-named-block-re)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2401 (setq label (- ada-label-indent))))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2402
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2403 ;; found 'record' =>
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2404 ;; if the keyword is found at the beginning of a line (or just
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2405 ;; after limited, we indent on it, otherwise we indent on the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2406 ;; beginning of the type declaration)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2407 ;; type A is (B : Integer;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2408 ;; C : Integer) is record
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2409 ;; end record; -- This is badly indented otherwise
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2410 (if (looking-at "record")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2411 (if (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2412 (beginning-of-line)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2413 (looking-at "^[ \t]*\\(record\\|limited record\\)"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2414 (list (save-excursion (back-to-indentation) (point)) 0)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2415 (list (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2416 (car (ada-search-ignore-string-comment "\\<type\\>" t)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2417 0))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2418
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2419 ;; Else keep the same indentation as the beginning statement
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2420 (list (+ (save-excursion (back-to-indentation) (point)) label) 0)))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2421
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2422 ;; ------ exception ----
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2423
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2424 ((looking-at "exception\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2425 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2426 (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
2427 (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
2428
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2429 ;; else
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2430
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2431 ((looking-at "else\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2432 (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
2433 (looking-at "\\<or\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2434 (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
2435 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2436 (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
2437 (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
2438
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2439 ;; elsif
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2440
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2441 ((looking-at "elsif\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2442 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2443 (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
2444 (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
2445
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2446 ))
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 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2449 ;; starting with w (when)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2450 ;;---------------------------
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2451
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2452 ((and (= (downcase (char-after)) ?w)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2453 (looking-at "when\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2454 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2455 (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
2456 (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
2457 'ada-when-indent)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2458
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2459 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2460 ;; starting with t (then)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2461 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2462
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2463 ((and (= (downcase (char-after)) ?t)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2464 (looking-at "then\\>"))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2465 (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
2466 (looking-at "and\\>"))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2467 (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
2468 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2469 ;; 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
2470 (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
2471 "\\<\\(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
2472 (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
2473 'ada-stmt-end-indent))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2474
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2475 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2476 ;; starting with l (loop)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2477 ;;---------------------------
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2478
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2479 ((and (= (downcase (char-after)) ?l)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2480 (looking-at "loop\\>"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2481 (setq pos (point))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2482 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2483 (goto-char (match-end 0))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2484 (ada-goto-stmt-start)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2485 (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
2486 (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
2487 (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
2488 (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
2489 nil pos))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2490 (if (looking-at "\\<loop\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2491 (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
2492 (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
2493
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2494 ;;----------------------------
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2495 ;; starting with l (limited) or r (record)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2496 ;;----------------------------
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2497
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2498 ((or (and (= (downcase (char-after)) ?l)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2499 (looking-at "limited\\>"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2500 (and (= (downcase (char-after)) ?r)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2501 (looking-at "record\\>")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2502
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2503 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2504 (ada-search-ignore-string-comment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2505 "\\<\\(type\\|use\\)\\>" t nil)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2506 (if (looking-at "\\<use\\>")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2507 (ada-search-ignore-string-comment "for" t nil nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2508 'word-search-backward))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2509 (list (progn (back-to-indentation) (point))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2510 'ada-indent-record-rel-type)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2511
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2512 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2513 ;; starting with b (begin)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2514 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2515
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2516 ((and (= (downcase (char-after)) ?b)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2517 (looking-at "begin\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2518 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2519 (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
2520 (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
2521 (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
2522
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2523 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2524 ;; starting with i (is)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2525 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2526
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2527 ((and (= (downcase (char-after)) ?i)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2528 (looking-at "is\\>"))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2529
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2530 (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
2531 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2532 (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
2533 (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
2534 (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2535 (looking-at "\\<abstract\\>\\|\\<separate\\>")))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2536 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2537 (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
2538 (list (progn (back-to-indentation) (point)) 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2539 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2540 (ada-goto-stmt-start)
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2541 (if (looking-at "\\<package\\|procedure\\|function\\>")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2542 (list (progn (back-to-indentation) (point)) 0)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2543 (list (progn (back-to-indentation) (point)) 'ada-indent)))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2544
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2545 ;;---------------------------
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2546 ;; starting with r (return, renames)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2547 ;;---------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2548
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2549 ((and (= (downcase (char-after)) ?r)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2550 (looking-at "re\\(turn\\|names\\)\\>"))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2551
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2552 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2553 (let ((var 'ada-indent-return))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2554 ;; If looking at a renames, skip the 'return' statement too
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2555 (if (looking-at "renames")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2556 (let (pos)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2557 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2558 (set 'pos (ada-search-ignore-string-comment ";\\|return\\>" t)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2559 (if (and pos
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2560 (= (downcase (char-after (car pos))) ?r))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2561 (goto-char (car pos)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2562 (set 'var 'ada-indent-renames)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2563
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2564 (forward-comment -1000)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2565 (if (= (char-before) ?\))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2566 (forward-sexp -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2567 (forward-word -1))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2568
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2569 ;; If there is a parameter list, and we have a function declaration
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2570 ;; or a access to subprogram declaration
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2571 (let ((num-back 1))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2572 (if (and (= (following-char) ?\()
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2573 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2574 (or (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2575 (backward-word 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2576 (looking-at "\\(function\\|procedure\\)\\>"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2577 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2578 (backward-word 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2579 (set 'num-back 2)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2580 (looking-at "\\(function\\|procedure\\)\\>")))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2581
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2582 ;; The indentation depends of the value of ada-indent-return
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2583 (if (<= (eval var) 0)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2584 (list (point) (list '- var))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2585 (list (progn (backward-word num-back) (point))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2586 var))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2587
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2588 ;; Else there is no parameter list, but we have a function
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2589 ;; Only do something special if the user want to indent
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2590 ;; relative to the "function" keyword
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2591 (if (and (> (eval var) 0)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2592 (save-excursion (forward-word -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2593 (looking-at "function\\>")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2594 (list (progn (forward-word -1) (point)) var)
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2595
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2596 ;; Else...
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2597 (ada-indent-on-previous-lines nil orgpoint orgpoint)))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2598
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2599 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2600 ;; 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
2601 ;; 'or' as statement-start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2602 ;; 'private' as statement-start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2603 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2604
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2605 ((and (or (= (downcase (char-after)) ?o)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2606 (= (downcase (char-after)) ?p))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2607 (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
2608 (ada-looking-at-semi-private)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2609 (save-excursion
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2610 ;; ??? Wasn't this done already in ada-looking-at-semi-or ?
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2611 (ada-goto-matching-start 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2612 (list (progn (back-to-indentation) (point)) 0)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2613
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2614 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2615 ;; starting with 'd' (do)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2616 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2617
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2618 ((and (= (downcase (char-after)) ?d)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2619 (looking-at "do\\>"))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2620 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2621 (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
2622 (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
2623
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2624 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2625 ;; starting with '-' (comment)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2626 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2627
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2628 ((= (char-after) ?-)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2629 (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
2630
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2631 ;; 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
2632 ;; 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
2633 ;; 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
2634 (let (pos)
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2635
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2636 (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
2637 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2638 (forward-line -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2639 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2640 (while (and (not pos)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2641 (search-forward "--"
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2642 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2643 (end-of-line) (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2644 t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2645 (unless (ada-in-string-p)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2646 (setq pos (point))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2647 pos))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2648 (list (- pos 2) 0)
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2649
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2650 ;; 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
2651 (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
2652
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2653 ;; 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
2654 (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
2655
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2656 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2657 ;; starting with '#' (preprocessor line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2658 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2659
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2660 ((and (= (char-after) ?#)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2661 (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
2662 (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
2663 (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
2664
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2665 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2666 ;; 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
2667 ;;--------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2668
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2669 ((and (not (eobp)) (= (char-after) ?\)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2670 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2671 (forward-char 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2672 (backward-sexp 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2673 (list (point) 0)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2674
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2675 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2676 ;; new/abstract/separate
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2677 ;;---------------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2678
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2679 ((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
2680 (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
2681
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2682 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2683 ;; package/function/procedure
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2684 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2685
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2686 ((and (or (= (downcase (char-after)) ?p) (= (downcase (char-after)) ?f))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2687 (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
2688 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2689 ;; 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
2690 ;; previous subprogram/package
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2691 (let (found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2692 (while (and (not found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2693 (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
2694 "\\<\\(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
2695
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2696 ;; 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
2697 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2698 (forward-word -1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2699 (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
2700
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2701 (if (looking-at "generic")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2702 (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
2703 (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
2704
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2705 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2706 ;; label
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2707 ;;---------------------------------
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
2708
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2709 ((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
2710 (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
2711 (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
2712 (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
2713 '(ada-label-indent))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2714
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2715 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2716
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2717 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2718 ;; Other syntaxes
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2719 ;;---------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2720 (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
2721
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2722 (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
2723 "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
2724 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
2725 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
2726 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
2727 (if initial-pos
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2728 (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
2729 (let ((oldpoint (point)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2730
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2731 ;; Is inside a parameter-list ?
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2732 (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
2733 (ada-get-indent-paramlist)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2734
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2735 ;; move to beginning of current statement
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2736 (unless nomove
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2737 (ada-goto-stmt-start))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2738
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2739 ;; 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
2740 (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
2741 (not nomove))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2742 (ada-get-indent-nochange)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2743
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2744 (cond
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2745 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2746 ((and
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2747 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
2748 (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
2749 (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
2750 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2751 ((looking-at "end\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2752 (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
2753 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2754 ((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
2755 (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
2756 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2757 ((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
2758 (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
2759 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2760 ((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
2761 (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
2762 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2763 ((looking-at "\\(sub\\)?type\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2764 (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
2765 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2766 ;; "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
2767 ;; 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
2768 ;; 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
2769 ((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
2770 (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
2771 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2772 ((looking-at "case\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2773 (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
2774 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2775 ((looking-at "when\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2776 (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
2777 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2778 ((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
2779 (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
2780 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2781 ((looking-at "separate\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2782 (ada-get-indent-nochange))
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2783
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2784 ;; A label
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2785 ((looking-at "<<")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2786 (list (+ (save-excursion (back-to-indentation) (point))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
2787 (- ada-label-indent))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
2788
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2789 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2790 ((looking-at "with\\>\\|use\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2791 ;; 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
2792 ;; the previous one ?
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2793 (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
2794 (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
2795 (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
2796 'ada-with-indent
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2797 'ada-use-indent))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2798 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2799 (t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2800 (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
2801 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2802
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2803 (defun ada-get-indent-open-paren ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2804 "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
2805 (list (ada-in-open-paren-p) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2806
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2807 (defun ada-get-indent-nochange ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2808 "Return the current indentation of the previous line."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2809 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2810 (forward-line -1)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2811 (back-to-indentation)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2812 (list (point) 0)))
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2813
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2814 (defun ada-get-indent-paramlist ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2815 "Calculates the indentation when point is inside a parameter list."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2816 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2817 (ada-search-ignore-string-comment "[^ \t\n]" t nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2818 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2819 ;; 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
2820 ((= (char-after) ?\()
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2821 (goto-char (match-end 0))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2822 (list (point) 0))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2823
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2824 ;; in front of another parameter
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2825 ((= (char-after) ?\;)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2826 (goto-char (cdr (ada-search-ignore-string-comment "(\\|;" t nil t)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2827 (ada-goto-next-non-ws)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2828 (list (point) 0))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2829
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2830 ;; After an affectation (default parameter value in subprogram
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2831 ;; declaration)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2832 ((and (= (following-char) ?=) (= (preceding-char) ?:))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2833 (back-to-indentation)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2834 (list (point) 'ada-broken-indent))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2835
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2836 ;; inside a parameter declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2837 (t
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2838 (goto-char (cdr (ada-search-ignore-string-comment "(\\|;" t nil t)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2839 (ada-goto-next-non-ws)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2840 (list (point) 0)))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2841
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2842 (defun ada-get-indent-end (orgpoint)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2843 "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
2844 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2845 (let ((defun-name nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2846 (indent nil))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2847
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2848 ;; is the line already terminated by ';' ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2849 (if (save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2850 (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
2851 'search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2852
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2853 ;; yes, look what's following 'end'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2854 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2855 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2856 (ada-goto-next-non-ws)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2857 (cond
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2858 ((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
2859 (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
2860 (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
2861
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2862 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2863 ;; loop/select/if/case/record/select
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2864 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2865 ((looking-at "\\<record\\>")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2866 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2867 (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
2868 ;; 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
2869 (forward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2870 (ada-goto-stmt-start)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2871 ;; 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
2872 (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
2873 (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
2874 (list (progn (back-to-indentation) (point)) 0)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2875 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2876 ;; a named block end
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2877 ;;
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
2878 ((looking-at ada-ident-re)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2879 (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
2880 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2881 (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
2882 (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
2883 (list (progn (back-to-indentation) (point)) 0))
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 ;; a block-end without name
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2886 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2887 ((= (char-after) ?\;)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2888 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2889 (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
2890 (if (looking-at "\\<begin\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2891 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2892 (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
2893 (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
2894 (list (progn (back-to-indentation) (point)) 0)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2895 indent))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2896 (list (progn (back-to-indentation) (point)) 0)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2897 )))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2898 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2899 ;; anything else - should maybe signal an error ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2900 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2901 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2902 (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
2903 'ada-broken-indent))))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2904
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2905 (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
2906 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2907
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2908 (defun ada-get-indent-case (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2909 "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
2910 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
2911 (let ((match-cons nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2912 (opos (point)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2913 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2914 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2915 ;; case..is..when..=>
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2916 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2917 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2918 (setq match-cons (and
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2919 ;; 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
2920 (ada-search-ignore-string-comment
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2921 "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
2922 (ada-search-ignore-string-comment
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
2923 "[ \t\n]+=>" nil orgpoint))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2924 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2925 (goto-char (car match-cons))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2926 (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
2927 (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
2928 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2929 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2930 ;; case..is..when
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2931 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2932 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2933 (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
2934 "when" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2935 (goto-char (cdr match-cons))
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)) 'ada-broken-indent))
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 ;; case..is
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-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
2942 "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
2943 (list (save-excursion (back-to-indentation) (point)) 'ada-when-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2944 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2945 ;; incomplete case
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2946 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2947 (t
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2948 (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
2949 'ada-broken-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2950
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2951 (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
2952 "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
2953 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
2954 (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
2955 (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
2956 (list cur-indent 'ada-indent)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2957 (list cur-indent 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2958
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2959 (defun ada-get-indent-if (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
2960 "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
2961 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
2962 (let ((cur-indent (save-excursion (back-to-indentation) (point)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2963 (match-cons nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2964 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2965 ;; Move to the correct then (ignore all "and then")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2966 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2967 (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
2968 "\\<\\(then\\|and[ \t]*then\\)\\>"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2969 nil orgpoint))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
2970 (= (downcase (char-after (car match-cons))) ?a)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2971 ;; 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
2972 (if match-cons
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2973 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2974 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2975 ;; 'then' first in separate line ?
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2976 ;; => 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
2977 ;; => else indent according to 'if'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2978 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2979 (if (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2980 (back-to-indentation)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2981 (looking-at "\\<then\\>"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2982 (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
2983 ;; skip 'then'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2984 (forward-word 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
2985 (list cur-indent 'ada-indent))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2986
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2987 (list cur-indent 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2988
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2989 (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
2990 "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
2991 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
2992 (let ((pos nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2993 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2994 ((save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2995 (forward-word 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
2996 (setq pos (ada-goto-next-non-ws orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2997 (goto-char pos)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2998 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
2999 (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
3000
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3001 ;; Special case for record types, for instance for:
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3002 ;; type A is (B : Integer;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3003 ;; C : Integer) is record
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3004 ;; null; -- This is badly indented otherwise
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3005 ((looking-at "record")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3006
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3007 ;; If record is at the beginning of the line, indent from there
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3008 (if (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3009 (beginning-of-line)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3010 (looking-at "^[ \t]*\\(record\\|limited record\\)"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3011 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3012
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3013 ;; else indent relative to the type command
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3014 (list (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3015 (car (ada-search-ignore-string-comment "\\<type\\>" t)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3016 'ada-indent)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3017
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3018 ;; nothing follows the block-start
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3019 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3020 (list (save-excursion (back-to-indentation) (point)) 'ada-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3021
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3022 (defun ada-get-indent-subprog (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3023 "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
3024 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3025 (let ((match-cons nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3026 (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
3027 (foundis nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3028 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3029 ;; is there an 'is' in front of point ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3030 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3031 (if (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3032 (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3033 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3034 "\\<\\(is\\|do\\)\\>" nil orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3035 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3036 ;; yes, then skip to its end
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3037 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3038 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3039 (setq foundis t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3040 (goto-char (cdr match-cons)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3041 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3042 ;; 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
3043 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3044 (progn
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3045 (unless (ada-goto-next-non-ws orgpoint)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3046 (goto-char orgpoint))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3047
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3048 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3049 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3050 ;; nothing follows 'is'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3051 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3052 ((and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3053 foundis
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3054 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3055 (not (ada-search-ignore-string-comment
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3056 "[^ \t\n]" nil orgpoint t))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3057 (list cur-indent 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3058 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3059 ;; is abstract/separate/new ...
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 ((and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3062 foundis
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3063 (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3064 (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3065 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3066 "\\<\\(separate\\|new\\|abstract\\)\\>"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3067 nil orgpoint))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3068 (goto-char (car match-cons))
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
3069 (ada-search-ignore-string-comment ada-subprog-start-re t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3070 (ada-get-indent-noindent orgpoint))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3071 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3072 ;; something follows 'is'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3073 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3074 ((and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3075 foundis
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3076 (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
3077 (goto-char match-cons)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3078 (ada-indent-on-previous-lines t orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3079 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3080 ;; no 'is' but ';'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3081 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3082 ((save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3083 (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
3084 (list cur-indent 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3085 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3086 ;; no 'is' or ';'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3087 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3088 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3089 (list cur-indent 'ada-broken-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3090
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3091 (defun ada-get-indent-noindent (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3092 "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
3093 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
3094 (let ((label 0))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3095 (save-excursion
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3096 (beginning-of-line)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3097
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3098 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3099
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3100 ;; 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
3101 ;; 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
3102 ;; the parameter declaration list)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3103 ((ada-in-paramlist-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3104 (ada-previous-procedure)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3105 (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
3106
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3107 ;; 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
3108 ;; 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
3109 ((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
3110 (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
3111 'ada-broken-decl-indent))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3112
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3113 ;; 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
3114 ;; top level
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3115 (t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3116 (if (looking-at ada-named-block-re)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3117 (setq label (- ada-label-indent))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3118
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3119 (let (p)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3120
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3121 ;; "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
3122 (if (or (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3123 (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
3124 (setq p (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3125 (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
3126 (ada-goto-previous-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3127 (looking-at "with"))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3128 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3129 (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
3130 (setq p (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3131 (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
3132 (ada-goto-previous-word)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3133 (looking-at "null")))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3134 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3135 (goto-char p)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3136 (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
3137 (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
3138 (if (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3139 (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
3140 'search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3141 (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
3142 (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
3143 'ada-broken-indent)))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3144
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3145 (defun ada-get-indent-label (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3146 "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
3147 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3148 (let ((match-cons nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3149 (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
3150 (ada-search-ignore-string-comment ":" nil)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3151 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3152 ;; loop label
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3153 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3154 (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
3155 ada-loop-start-re nil orgpoint)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3156 (goto-char (car match-cons))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3157 (ada-get-indent-loop orgpoint))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3158
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3159 ;; declare label
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3160 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3161 (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
3162 "\\<declare\\|begin\\>" nil orgpoint)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3163 (goto-char (car match-cons))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3164 (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
3165
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3166 ;; variable declaration
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3167 ((ada-in-decl-p)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3168 (if (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3169 (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
3170 (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
3171 (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
3172
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3173 ;; nothing follows colon
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3174 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3175 (list cur-indent '(- ada-label-indent))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3176
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3177 (defun ada-get-indent-loop (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3178 "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
3179 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3180 (let ((match-cons nil)
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3181 (pos (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3182
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3183 ;; 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
3184 (label (save-excursion
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3185 (beginning-of-line)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3186 (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
3187 (- ada-label-indent)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3188 0))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3189
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3190 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3191
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3192 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3193 ;; statement complete
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3194 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3195 ((save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3196 (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
3197 'search-forward))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3198 (list (+ (save-excursion (back-to-indentation) (point)) label) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3199 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3200 ;; simple loop
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3201 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3202 ((looking-at "loop\\>")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3203 (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
3204 (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
3205 pos
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3206 (list (+ (car pos) label) (cdr pos))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3207
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3208 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3209 ;; 'for'- loop (or also a for ... use statement)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3210 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3211 ((looking-at "for\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3212 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3213 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3214 ;; for ... use
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3215 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3216 ((save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3217 (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3218 (goto-char (match-end 0))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3219 (ada-goto-next-non-ws orgpoint)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3220 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3221 (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
3222 (ada-goto-next-non-ws orgpoint)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3223 (looking-at "\\<use\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3224 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3225 ;; check if there is a 'record' before point
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3226 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3227 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3228 (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
3229 "record" nil orgpoint nil 'word-search-forward))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3230 t)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3231 (if match-cons
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3232 (progn
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3233 (goto-char (car match-cons))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3234 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3235 (list (save-excursion (back-to-indentation) (point)) 'ada-broken-indent))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3236 )
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3237
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3238 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3239 ;; for..loop
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3240 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3241 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3242 (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
3243 "loop" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3244 (goto-char (car match-cons))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3245 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3246 ;; indent according to 'loop', if it's first in the line;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3247 ;; otherwise to 'for'
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3248 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3249 (unless (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3250 (back-to-indentation)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3251 (looking-at "\\<loop\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3252 (goto-char pos))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3253 (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
3254 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3255 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3256 ;; for-statement is broken
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 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3259 (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
3260 'ada-broken-indent))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3261
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3262 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3263 ;; 'while'-loop
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3264 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3265 ((looking-at "while\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3266 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3267 ;; while..loop ?
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3268 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3269 (if (save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3270 (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
3271 "loop" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3272
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3273 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3274 (goto-char (car match-cons))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3275 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3276 ;; indent according to 'loop', if it's first in the line;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3277 ;; otherwise to 'while'.
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3278 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3279 (unless (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3280 (back-to-indentation)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3281 (looking-at "\\<loop\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3282 (goto-char pos))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3283 (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
3284 'ada-indent))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3285
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3286 (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
3287 'ada-broken-indent))))))
10705
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 (defun ada-get-indent-type (orgpoint)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3290 "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
3291 ORGPOINT is the limit position used in the calculation."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3292 (let ((match-dat nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3293 (cond
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 ;; complete record declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3296 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3297 ((save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3298 (and
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3299 (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
3300 "end" nil orgpoint nil 'word-search-forward))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3301 (ada-goto-next-non-ws)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3302 (looking-at "\\<record\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3303 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3304 (ada-goto-next-non-ws)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3305 (= (char-after) ?\;)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3306 (goto-char (car match-dat))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3307 (list (save-excursion (back-to-indentation) (point)) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3308 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3309 ;; record type
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3310 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3311 ((save-excursion
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3312 (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
3313 "record" nil orgpoint nil 'word-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3314 (goto-char (car match-dat))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3315 (list (save-excursion (back-to-indentation) (point)) 'ada-indent))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3316 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3317 ;; complete type declaration
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3318 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3319 ((save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3320 (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
3321 'search-forward))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3322 (list (save-excursion (back-to-indentation) (point)) 0))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3323 ;;
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
3324 ;; "type ... is", but not "type ... is ...", which is broken
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3325 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3326 ((save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3327 (and
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3328 (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
3329 'word-search-forward)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3330 (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
3331 (list (save-excursion (back-to-indentation) (point)) 'ada-broken-indent))
10705
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 ;; broken statement
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3334 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3335 (t
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3336 (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
3337 'ada-broken-indent)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3338
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3339
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3340 ;; -----------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3341 ;; -- searching and matching
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3342 ;; -----------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3343
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3344 (defun ada-goto-stmt-start ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3345 "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
3346 Returns the new position of point.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3347 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
3348 open parenthesis."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3349 (let ((match-dat nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3350 (orgpoint (point)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3351
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3352 (setq match-dat (ada-search-prev-end-stmt))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3353 (if match-dat
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
3354
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3355 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3356 ;; 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
3357 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3358 (unless (looking-at "declare")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3359 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3360 (unless (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3361 (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
3362 (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
3363 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3364 ;; 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
3365 ;; 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
3366 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3367 (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
3368 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3369 ;; 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
3370 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3371 (if match-dat
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3372 (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
3373 (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
3374 ))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
3375
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3376 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3377 ;; no previous end-statement => we are at the beginning of the
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3378 ;; accessible part of the buffer
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3379 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3380 (progn
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3381 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3382 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3383 ;; 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
3384 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3385 (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
3386 (goto-char orgpoint))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3387 (point)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3388
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3389
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3390 (defun ada-search-prev-end-stmt ()
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3391 "Moves point to previous end-statement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3392 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
3393 match."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3394 (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
3395 (found nil))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3396
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3397 ;; search until found or beginning-of-buffer
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3398 (while
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3399 (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3400 (not found)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3401 (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
3402 ada-end-stmt-re t)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3403
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3404 (goto-char (car match-dat))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3405 (unless (ada-in-open-paren-p)
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3406 (cond
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3407
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3408 ((and (looking-at
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3409 "\\<\\(record\\|loop\\|select\\|else\\|then\\)\\>")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3410 (save-excursion
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3411 (ada-goto-previous-word)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3412 (looking-at "\\<\\(end\\|or\\|and\\)\\>[ \t]*[^;]")))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3413 (forward-word -1))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3414
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3415 ((looking-at "is")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3416 (setq found
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3417 (and (save-excursion (ada-goto-previous-word)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3418 (ada-goto-previous-word)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3419 (not (looking-at "subtype")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3420
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3421 (save-excursion (goto-char (cdr match-dat))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3422 (ada-goto-next-non-ws)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3423 ;; words that can go after an 'is'
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3424 (not (looking-at
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3425 (eval-when-compile
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3426 (concat "\\<"
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3427 (regexp-opt
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3428 '("separate" "access" "array"
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3429 "abstract" "new") t)
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3430 "\\>\\|("))))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3431
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3432 (t
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3433 (setq found t))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3434 )))
10705
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 (if found
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3437 match-dat
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3438 nil)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3439
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3440
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3441 (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
3442 "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
3443 Stop the search at LIMIT.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3444 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
3445 (unless limit
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3446 (setq limit (point-max)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3447 (while (and (<= (point) limit)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3448 (progn (forward-comment 10000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3449 (if (and (not (eobp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3450 (save-excursion (forward-char 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3451 (ada-in-string-p)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3452 (progn (forward-sexp 1) t)))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3453 (if (< (point) limit)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3454 (point)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3455 nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3456 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3457
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3458
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3459 (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
3460 "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
3461 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
3462 Stop the search at LIMIT."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3463 (if (ada-search-ignore-string-comment ada-end-stmt-re nil limit)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3464 (point)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3465 nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3466
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3467
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3468 (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
3469 "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
3470 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
3471 Returns the new position of point or nil if not found."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3472 (let ((match-cons nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3473 (orgpoint (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3474 (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
3475 (modify-syntax-entry ?_ "w")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3476 (unless backward
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3477 (skip-syntax-forward "w"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3478 (if (setq match-cons
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3479 (if backward
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3480 (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
3481 (ada-search-ignore-string-comment "\\w" nil nil t)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3482 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3483 ;; move to the beginning of the word found
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3484 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3485 (progn
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3486 (goto-char (car match-cons))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3487 (skip-syntax-backward "w")
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3488 (point))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3489 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3490 ;; if not found, restore old position of point
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3491 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3492 (goto-char orgpoint)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3493 'nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3494 (modify-syntax-entry ?_ old-syntax))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3495 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3496
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3497
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3498 (defun ada-check-matching-start (keyword)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3499 "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
3500 Moves point to the matching block start."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3501 (ada-goto-matching-start 0)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3502 (unless (looking-at (concat "\\<" keyword "\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3503 (error "matching start is not '%s'" keyword)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3504
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3505
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3506 (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
3507 "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
3508 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
3509 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
3510
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3511 ;; named block without a `declare'
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3512 (if (save-excursion
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3513 (ada-goto-previous-word)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3514 (looking-at (concat "\\<" defun-name "\\> *:")))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3515 t ; do nothing
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3516 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3517 ;; 'accept' or 'package' ?
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3518 ;;
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3519 (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
3520 (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
3521 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3522 ;; '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
3523 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3524 (save-excursion
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3525 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3526 ;; a named 'declare'-block ?
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3527 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3528 (if (looking-at "\\<declare\\>")
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3529 (ada-goto-stmt-start)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3530 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3531 ;; no, => 'procedure'/'function'/'task'/'protected'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3532 ;;
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3533 (progn
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3534 (forward-word 2)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3535 (backward-word 1)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3536 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3537 ;; skip 'body' 'type'
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3538 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3539 (if (looking-at "\\<\\(body\\|type\\)\\>")
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3540 (forward-word 1))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3541 (forward-sexp 1)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3542 (backward-sexp 1)))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3543 ;;
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3544 ;; 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
3545 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3546 (unless (looking-at (concat "\\<" defun-name "\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3547 (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
3548 (buffer-substring (point)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3549 (progn (forward-sexp 1) (point))))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3550
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3551 (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
3552 "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
3553 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
3554 (let ((nest-count 1)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3555
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3556 ;; first should be set to t if we should stop at the first
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3557 ;; "begin" we encounter.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3558 (first (not recursive))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3559 (count-generic nil)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3560 (stop-at-when nil)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3561 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3562
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3563 ;; 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
3564 ;; 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
3565 ;; when ... =>
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3566 ;; begin ...
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3567 ;; exception ... )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3568 (if (looking-at "begin")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3569 (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
3570
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3571 (if (or
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3572 (looking-at "\\<\\(package\\|procedure\\|function\\)\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3573 (save-excursion
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3574 (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
3575 "\\<\\(package\\|procedure\\|function\\|generic\\)\\>" t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3576 (looking-at "generic")))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3577 (setq count-generic t))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3578
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3579 ;; search backward for interesting keywords
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3580 (while (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3581 (not (zerop nest-count))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3582 (ada-search-ignore-string-comment ada-matching-decl-start-re t))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3583 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3584 ;; calculate nest-depth
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3585 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3586 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3587 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3588 ((looking-at "end")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3589 (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
3590
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3591 ;; 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
3592 ;; 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
3593 ;; procedure P is
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3594 ;; procedure Q is
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3595 ;; begin
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3596 ;; end;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3597 ;; 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
3598 ;; end
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3599
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3600 (if (looking-at "begin")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3601 (let ((loop-again t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3602 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3603 (while loop-again
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3604 ;; 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
3605 ;; (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
3606 ;; 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
3607 ;; required the begin
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3608
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3609 (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
3610 "\\<\\(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
3611 t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3612
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3613 (if (looking-at "end")
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3614 (ada-goto-matching-start 1 noerror t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3615 ;; (ada-goto-matching-decl-start noerror t)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3616
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3617 (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
3618 (unless (looking-at "begin")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3619 (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
3620 ))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3621 )))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3622 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3623 ((looking-at "generic")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3624 (if count-generic
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3625 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3626 (setq first nil)
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3627 (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
3628 ;;
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3629 ((looking-at "if")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3630 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3631 (forward-word -1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3632 (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
3633 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3634 (setq nest-count (1- nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3635 (setq first nil)))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
3636
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3637 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3638 ((looking-at "declare\\|generic")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3639 (setq nest-count (1- nest-count))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3640 (setq first t))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3641 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3642 ((looking-at "is")
12586
f8bbc7a3b87a (ada-ident-re): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 12053
diff changeset
3643 ;; 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
3644 ;; 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
3645 (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
3646 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3647 (forward-comment -10000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3648 (forward-char -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3649
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3650 ;; 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
3651 ;; 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
3652 ;; in a type definition
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3653 (if (= (char-after) ?\))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3654 (progn
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3655 (forward-char 1)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3656 (backward-sexp 1)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3657 (forward-comment -10000)
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3658 ))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3659 (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
3660 (ada-goto-previous-word)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3661 (and
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3662 (looking-at "\\<\\(sub\\)?type\\|case\\>")
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3663 (save-match-data
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3664 (ada-goto-previous-word)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
3665 (not (looking-at "\\<protected\\>"))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3666 )) ; end of `or'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3667 (goto-char (match-beginning 0))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3668 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3669 (setq nest-count (1- nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3670 (setq first nil))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3671
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3672 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3673 ((looking-at "new")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3674 (if (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3675 (ada-goto-previous-word)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3676 (looking-at "is"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3677 (goto-char (match-beginning 0))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3678 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3679 ((and first
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3680 (looking-at "begin"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3681 (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
3682 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3683 ((looking-at "when")
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3684 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3685 (forward-word -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3686 (unless (looking-at "\\<exit[ \t\n]*when\\>")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3687 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3688 (if stop-at-when
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3689 (setq nest-count (1- nest-count)))
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3690 ))))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3691 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3692 ((looking-at "begin")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3693 (setq first nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3694 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3695 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3696 (setq nest-count (1+ nest-count))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3697 (setq first nil)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3698
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3699 );; end of loop
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3700
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3701 ;; 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
3702 (if (and
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3703 (zerop nest-count)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3704 (if (looking-at "is")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3705 (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
3706 (looking-at "declare\\|generic")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3707 t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3708 (if noerror nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3709 (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
3710 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3711
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3712 (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
3713 "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
3714 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
3715 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
3716 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
3717 (let ((nest-count (if nest-level nest-level 0))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3718 (found nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3719 (pos nil))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3720
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3721 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3722 ;; search backward for interesting keywords
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3723 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3724 (while (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3725 (not found)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3726 (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
3727
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3728 (unless (and (looking-at "\\<record\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3729 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3730 (forward-word -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3731 (looking-at "\\<null\\>")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3732 (progn
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3733 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3734 ;; calculate nest-depth
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3735 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3736 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3737 ;; found block end => increase nest depth
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3738 ((looking-at "end")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3739 (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
3740
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3741 ;; 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
3742 ;; ends a block
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3743 ((looking-at "loop\\|select\\|record\\|case\\|if")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3744 (setq pos (point))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3745 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3746 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3747 ;; check if keyword follows 'end'
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3748 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3749 (ada-goto-previous-word)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3750 (if (looking-at "\\<end\\>[ \t]*[^;]")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3751 ;; it ends a block => increase nest depth
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3752 (setq nest-count (1+ nest-count)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3753 pos (point))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3754
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3755 ;; it starts a block => decrease nest depth
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3756 (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
3757 (goto-char pos))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3758
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3759 ;; 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
3760 ((looking-at "package")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3761 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3762 ;; 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
3763 (let ((current (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3764 (pos (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3765 "\\<\\(is\\|renames\\|;\\)\\>" nil)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3766 (if pos
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3767 (goto-char (car pos))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3768 (error (concat
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3769 "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
3770 " line "
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
3771 (number-to-string (count-lines 1 (1+ current)))))))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3772 (unless (looking-at "renames")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3773 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3774 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3775 (ada-goto-next-non-ws)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3776 ;; ignore it if it is only a declaration with 'new'
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3777 ;; We could have package Foo is new ....
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3778 ;; or package Foo is separate;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3779 ;; or package Foo is begin null; end Foo
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3780 ;; for elaboration code (elaboration)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3781 (if (not (looking-at "\\<\\(new\\|separate\\|begin\\)\\>"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3782 (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
3783 ;; 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
3784 ((looking-at "task")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3785 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3786 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3787 (ada-goto-next-non-ws)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3788 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3789 ((looking-at "\\<body\\>"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3790 ((looking-at "\\<type\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3791 ;; 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
3792 (forward-word 2);; skip "type"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3793 (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
3794
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3795 ;; 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
3796 ;; "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
3797 (unless (looking-at ";")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3798 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3799 ;; Skip the parameters
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3800 (if (looking-at "(")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3801 (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
3802 (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
3803 "\\<\\(is\\|;\\)\\>" nil)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3804 (if tmp
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3805 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3806 (goto-char (car tmp))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3807 (if (looking-at "is")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3808 (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
3809 (t
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
3810 ;; 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
3811 ;; 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
3812 (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
3813 (looking-at "[ \t]*;"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3814 (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
3815 ;; all the other block starts
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3816 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3817 (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
3818
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3819 ;; 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
3820 ;;
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3821 (setq found (zerop nest-count))))) ; end of loop
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3822
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3823 (if (bobp)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3824 (point)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3825 (if found
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3826 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3827 ;; match found => is there anything else to do ?
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3828 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3829 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3830 (cond
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3831 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3832 ;; found 'if' => skip to 'then', if it's on a separate line
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3833 ;; and GOTOTHEN is non-nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3834 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3835 ((and
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3836 gotothen
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3837 (looking-at "if")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3838 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3839 (ada-search-ignore-string-comment "then" nil nil nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3840 'word-search-forward)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3841 (back-to-indentation)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3842 (looking-at "\\<then\\>")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3843 (goto-char (match-beginning 0)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3844
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3845 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3846 ;; found 'do' => skip back to 'accept'
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3847 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3848 ((looking-at "do")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3849 (unless (ada-search-ignore-string-comment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3850 "accept" t nil nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3851 'word-search-backward)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3852 (error "missing 'accept' in front of 'do'"))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3853 (point))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3854
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3855 (if noerror
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3856 nil
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3857 (error "no matching start"))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3858
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3859
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3860 (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
3861 "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
3862 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
3863 If NOERROR is non-nil, it only returns nil if found no matching start."
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3864 (let ((nest-count (or nest-level 0))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3865 (regex (eval-when-compile
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3866 (concat "\\<"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3867 (regexp-opt '("end" "loop" "select" "begin" "case"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3868 "if" "task" "package" "record" "do"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3869 "procedure" "function") t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3870 "\\>")))
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3871 found
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3872 pos
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3873
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3874 ;; First is used for subprograms: they are generally handled
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3875 ;; recursively, but of course we do not want to do that the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3876 ;; first time (see comment below about subprograms)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3877 (first (not (looking-at "declare"))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3878
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3879 ;; If we are already looking at one of the keywords, this shouldn't count
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3880 ;; in the nesting loop below, so we just make sure we don't count it.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3881 ;; "declare" is a special case because we need to look after the "begin"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3882 ;; keyword
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3883 (if (looking-at "\\<if\\|loop\\|case\\|begin\\>")
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3884 (forward-char 1))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3885
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3886 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3887 ;; search forward for interesting keywords
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3888 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3889 (while (and
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3890 (not found)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3891 (ada-search-ignore-string-comment regex nil))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3892
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3893 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3894 ;; calculate nest-depth
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3895 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3896 (backward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3897 (cond
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3898 ;; procedures and functions need to be processed recursively, in
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3899 ;; case they are defined in a declare/begin block, as in:
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3900 ;; declare -- NL 0 (nested level)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3901 ;; A : Boolean;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3902 ;; procedure B (C : D) is
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3903 ;; begin -- NL 1
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3904 ;; null;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3905 ;; end B; -- NL 0, and we would exit
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3906 ;; begin
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3907 ;; end; -- we should exit here
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3908 ;; processing them recursively avoids the need for any special
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3909 ;; handling.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3910 ;; Nothing should be done if we have only the specs or a
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3911 ;; generic instantion.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3912
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3913 ((and (looking-at "\\<procedure\\|function\\>"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3914 (if first
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3915 (forward-word 1)
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3916
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3917 (setq pos (point))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3918 (ada-search-ignore-string-comment "is\\|;")
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3919 (if (= (char-before) ?s)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3920 (progn
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3921 (ada-goto-next-non-ws)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3922 (unless (looking-at "\\<new\\>")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3923 (progn
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3924 (goto-char pos)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3925 (ada-goto-matching-end 0 t)))))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3926
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3927 ;; found block end => decrease nest depth
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3928 ((looking-at "\\<end\\>")
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3929 (setq nest-count (1- nest-count)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3930 found (<= nest-count 0))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3931 ;; skip the following keyword
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3932 (if (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3933 (skip-chars-forward "end")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3934 (ada-goto-next-non-ws)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3935 (looking-at "\\<\\(loop\\|select\\|record\\|case\\|if\\)\\>"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3936 (forward-word 1)))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3937
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3938 ;; found package start => check if it really starts a block, and is not
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3939 ;; in fact a generic instantiation for instance
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3940 ((looking-at "\\<package\\>")
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3941 (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
3942 'word-search-forward)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3943 (ada-goto-next-non-ws)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3944 ;; 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
3945 (if (looking-at "\\<new\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3946 (goto-char (match-end 0))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3947 (setq nest-count (1+ nest-count)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3948 found (<= nest-count 0))))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
3949
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3950 ;; all the other block starts
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3951 (t
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3952 (if (not first)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3953 (setq nest-count (1+ nest-count)))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
3954 (setq found (<= nest-count 0))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3955 (forward-word 1))) ; end of 'cond'
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3956
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
3957 (setq first nil))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3958
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3959 (if found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3960 t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3961 (if noerror
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3962 nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3963 (error "no matching end")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3964 ))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3965
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3966
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3967 (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
3968 (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
3969 "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
3970 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
3971 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
3972 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
3973 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
3974 we are searching for a constant string.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3975 The search stops at pos LIMIT.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
3976 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
3977 (let (found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3978 begin
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3979 end
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3980 parse-result
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3981 (previous-syntax-table (syntax-table)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3982
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3983 (unless search-func
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3984 (setq search-func (if backward 're-search-backward 're-search-forward)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3985
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3986 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3987 ;; 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
3988 ;; 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
3989 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3990 (set-syntax-table ada-mode-symbol-syntax-table)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3991 (while (and (not found)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3992 (or (not limit)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3993 (or (and backward (<= limit (point)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
3994 (>= limit (point))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3995 (funcall search-func search-re limit 1))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3996 (setq begin (match-beginning 0))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3997 (setq end (match-end 0))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3998
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
3999 (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
4000 (save-excursion (beginning-of-line) (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4001 (point)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4002
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4003 (cond
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4004 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4005 ;; If inside a string, skip it (and the following comments)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4006 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4007 ((ada-in-string-p parse-result)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4008 (if ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4009 (search-backward "\"" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4010 (goto-char (nth 8 parse-result)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4011 (unless backward (forward-sexp 1)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4012 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4013 ;; 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
4014 ;; 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
4015 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4016 ((ada-in-comment-p parse-result)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4017 (if ada-xemacs
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4018 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4019 (forward-line 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4020 (beginning-of-line)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4021 (forward-comment -1))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4022 (goto-char (nth 8 parse-result)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4023 (unless backward
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4024 ;; 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
4025 ;; 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
4026 (if (forward-comment 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4027 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4028 (forward-comment 1000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4029 (beginning-of-line))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4030 (end-of-line))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4031 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4032 ;; directly in front of a comment => skip it, if searching forward
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4033 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4034 ((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
4035 (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
4036
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4037 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4038 ;; found a parameter-list but should ignore it => skip it
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4039 ;;
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4040 ((and (not paramlists) (ada-in-paramlist-p))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4041 (if backward
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4042 (search-backward "(" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4043 (search-forward ")" nil t)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4044 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4045 ;; found what we were looking for
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4046 ;;
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4047 (t
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4048 (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
4049
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4050 (set-syntax-table previous-syntax-table)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4051
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4052 (if found
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4053 (cons begin end)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4054 nil)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4055
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4056 ;; -------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4057 ;; -- Testing the position of the cursor
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4058 ;; -------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4059
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4060 (defun ada-in-decl-p ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4061 "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
4062 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
4063 (or (ada-in-paramlist-p)
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4064 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4065 (ada-goto-matching-decl-start t))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4066
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4067
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4068 (defun ada-looking-at-semi-or ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4069 "Returns t if looking-at an 'or' following a semicolon."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4070 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4071 (and (looking-at "\\<or\\>")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4072 (progn
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4073 (forward-word 1)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4074 (ada-goto-stmt-start)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4075 (looking-at "\\<or\\>")))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4076
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4077
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4078 (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
4079 "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
4080 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
4081 'private package A is...' (this can only happen at top level)."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4082 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4083 (and (looking-at "\\<private\\>")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4084 (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
4085
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4086 ;; 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
4087 ;; 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
4088 ;; after a 'type ... is private' or 'is new ... with private'
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4089 ;;
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4090 ;; Note that a 'private' statement at the beginning of the buffer
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4091 ;; does not indicate a private section, since this is instead a
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4092 ;; 'private procedure ...'
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
4093 (progn (forward-comment -1000)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4094 (and (not (bobp))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4095 (or (= (char-before) ?\;)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4096 (and (forward-word -3)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4097 (looking-at "\\<package\\>"))))))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4098
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4099
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4100 (defun ada-in-paramlist-p ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4101 "Returns t if point is inside a parameter-list."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4102 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4103 (and
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4104 (ada-search-ignore-string-comment "(\\|)" t nil t)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4105 ;; inside parentheses ?
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4106 (= (char-after) ?\()
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4107
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4108 ;; 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
4109 ;; operator definition: function "." (
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4110 ;; subprogram definition: procedure .... (
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4111 ;; 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
4112 (progn
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4113 (skip-chars-backward " \t\n")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4114 (if (= (char-before) ?\")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4115 (backward-char 3)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4116 (backward-word 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4117 t)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4118
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4119 ;; 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
4120 (backward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4121
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4122 ;; 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
4123 ;; comment (for instance, when we have:
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4124 ;; -- .... package
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4125 ;; Test (A)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4126 ;; we should return nil
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4127
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4128 (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
4129
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4130 ;; right keyword two words before parenthesis ?
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4131 ;; 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
4132 (looking-at (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4133 (concat "\\<\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4134 "procedure\\|function\\|body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4135 "task\\|entry\\|accept\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4136 "access[ \t]+procedure\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4137 "access[ \t]+function\\|"
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4138 "pragma\\|"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4139 "type\\)\\>"))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4140
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4141 (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
4142 "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
4143 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
4144 (let (result)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4145 (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
4146 (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
4147 (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
4148 result))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4149
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4150 (defun ada-in-open-paren-p ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4151 "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
4152 parenthesis, or nil."
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4153 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4154 (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
4155 (point)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4156 (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
4157 "\\<\\(;\\|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
4158 t))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4159 (point-min)))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4160
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4161 (if (nth 1 parse)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4162 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4163 (goto-char (1+ (nth 1 parse)))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4164
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4165 ;; Skip blanks, if they are not followed by a comment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4166 ;; See:
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4167 ;; type A is ( Value_0,
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4168 ;; Value_1);
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4169 ;; type B is ( -- comment
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4170 ;; Value_2);
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
4171
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4172 (if (or (not ada-indent-handle-comment-special)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4173 (not (looking-at "[ \t]+--")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4174 (skip-chars-forward " \t"))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4175
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4176 (point))))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4177
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4178
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4179 ;; -----------------------------------------------------------
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4180 ;; -- Behavior Of TAB Key
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4181 ;; -----------------------------------------------------------
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4182
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4183 (defun ada-tab ()
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4184 "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
4185 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
4186 of the region. Otherwise, operates only on the current line."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4187 (interactive)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4188 (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
4189 ((eq ada-tab-policy 'indent-auto)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4190 (if (ada-region-selected)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4191 (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
4192 (ada-indent-current)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4193 ((eq ada-tab-policy 'always-tab) (error "not implemented"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4194 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4195
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4196 (defun ada-untab (arg)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4197 "Delete leading indenting according to `ada-tab-policy'."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4198 (interactive "P")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4199 (cond ((eq ada-tab-policy 'indent-rigidly) (ada-untab-hard))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4200 ((eq ada-tab-policy 'indent-auto) (error "not implemented"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4201 ((eq ada-tab-policy 'always-tab) (error "not implemented"))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4202 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4203
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4204 (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
4205 "Ada mode version of the indent-line-function."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4206 (interactive "*")
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4207 (let ((starting-point (point-marker)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4208 (beginning-of-line)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4209 (ada-tab)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4210 (if (< (point) starting-point)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4211 (goto-char starting-point))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4212 (set-marker starting-point nil)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4213 ))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4214
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4215 (defun ada-tab-hard ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4216 "Indent current line to next tab stop."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4217 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4218 (save-excursion
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4219 (beginning-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4220 (insert-char ? ada-indent))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4221 (if (save-excursion (= (point) (progn (beginning-of-line) (point))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4222 (forward-char ada-indent)))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4223
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4224 (defun ada-untab-hard ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4225 "indent current line to previous tab stop."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4226 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4227 (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
4228 (eol (save-excursion (progn (end-of-line) (point)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4229 (indent-rigidly bol eol (- 0 ada-indent))))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4230
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4231
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4232
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4233 ;; ------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4234 ;; -- Miscellaneous
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4235 ;; ------------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4236
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4237 ;; Not needed any more for Emacs 21.2, but still needed for backward
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4238 ;; compatibility
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4239 (defun ada-remove-trailing-spaces ()
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4240 "Remove trailing spaces in the whole buffer."
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4241 (interactive)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4242 (save-match-data
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4243 (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4244 (save-restriction
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4245 (widen)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4246 (goto-char (point-min))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4247 (while (re-search-forward "[ \t]+$" (point-max) t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4248 (replace-match "" nil nil))))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4249
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4250 (defun ada-gnat-style ()
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4251 "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
4252 (interactive)
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4253 (save-excursion
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4254
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4255 ;; The \n is required, or the line after an empty comment line is
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4256 ;; simply ignored.
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4257 (goto-char (point-min))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4258 (while (re-search-forward "--[ \t]*\\([^-\n]\\)" nil t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4259 (replace-match "-- \\1")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4260 (forward-line 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4261 (beginning-of-line))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
4262
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4263 (goto-char (point-min))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4264 (while (re-search-forward "\\>(" nil t)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4265 (if (not (ada-in-string-or-comment-p))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4266 (replace-match " (")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4267 (goto-char (point-min))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4268 (while (re-search-forward ";--" nil t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4269 (forward-char -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4270 (if (not (ada-in-string-or-comment-p))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4271 (replace-match "; --")))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4272 (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
4273 (while (re-search-forward "([ \t]+" nil t)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4274 (if (not (ada-in-string-or-comment-p))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4275 (replace-match "(")))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4276 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4277 (while (re-search-forward ")[ \t]+)" nil t)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4278 (if (not (ada-in-string-or-comment-p))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4279 (replace-match "))")))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4280 (goto-char (point-min))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4281 (while (re-search-forward "\\>:" nil t)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4282 (if (not (ada-in-string-or-comment-p))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4283 (replace-match " :")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4284
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4285 ;; Make sure there is a space after a ','.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4286 ;; Always go back to the beginning of the match, since otherwise
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4287 ;; a statement like ('F','D','E') is incorrectly modified.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4288 (goto-char (point-min))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4289 (while (re-search-forward ",[ \t]*\\(.\\)" nil t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4290 (if (not (save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4291 (goto-char (match-beginning 0))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4292 (ada-in-string-or-comment-p)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4293 (replace-match ", \\1")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4294
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4295 ;; Operators should be surrounded by spaces.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4296 (goto-char (point-min))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4297 (while (re-search-forward
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4298 "[ \t]*\\(/=\\|\\*\\*\\|:=\\|\\.\\.\\|[-:+*/]\\)[ \t]*"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4299 nil t)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4300 (goto-char (match-beginning 1))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4301 (if (or (looking-at "--")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4302 (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
4303 (progn
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4304 (forward-line 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4305 (beginning-of-line))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4306 (cond
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4307 ((string= (match-string 1) "/=")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4308 (replace-match " /= "))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4309 ((string= (match-string 1) "..")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4310 (replace-match " .. "))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4311 ((string= (match-string 1) "**")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4312 (replace-match " ** "))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4313 ((string= (match-string 1) ":=")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4314 (replace-match " := "))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4315 (t
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4316 (replace-match " \\1 ")))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4317 (forward-char 1)))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4318 ))
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4319
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
4320
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4321
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4322 ;; -------------------------------------------------------------
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4323 ;; -- Moving To Procedures/Packages/Statements
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4324 ;; -------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4325
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4326 (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
4327 "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
4328 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4329 (let ((pos (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4330 (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
4331 (unwind-protect
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4332 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4333 (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
4334
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4335 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4336 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4337 ;; 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
4338 ;; 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
4339 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4340 (or
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4341 (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
4342 (and (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4343 (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
4344 (backward-word 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4345 (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
4346 (backward-word 1))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4347 (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
4348 (error "not on end ...;")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4349 (ada-goto-matching-start 1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4350 (setq pos (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4351
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4352 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4353 ;; 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
4354 ;;
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4355 ada-move-to-declaration
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4356 (looking-at "\\<begin\\>")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4357 (ada-goto-matching-decl-start)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4358 (setq pos (point))))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4359
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4360 ) ; end of save-excursion
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 ;; now really move to the found position
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4363 (goto-char pos))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4364
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4365 ;; restore syntax-table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4366 (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
4367
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4368 (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
4369 "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
4370 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
4371 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4372 (let ((pos (point))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4373 decl-start
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4374 (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
4375 (unwind-protect
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4376 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4377 (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
4378
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4379 (save-excursion
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 (cond
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4382 ;; Go to the beginning of the current word, and check if we are
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4383 ;; directly on 'begin'
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4384 ((save-excursion
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4385 (skip-syntax-backward "w")
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4386 (looking-at "\\<begin\\>"))
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4387 (ada-goto-matching-end 1)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4388 )
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
4389
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4390 ;; on first line of subprogram body
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4391 ;; Do nothing for specs or generic instantion, since these are
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4392 ;; handled as the general case (find the enclosing block)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4393 ;; We also need to make sure that we ignore nested subprograms
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4394 ((save-excursion
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4395 (and (skip-syntax-backward "w")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4396 (looking-at "\\<function\\>\\|\\<procedure\\>" )
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4397 (ada-search-ignore-string-comment "is\\|;")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4398 (not (= (char-before) ?\;))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4399 ))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4400 (skip-syntax-backward "w")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4401 (ada-goto-matching-end 0 t))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
4402
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4403 ;; 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
4404 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4405 (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
4406 (looking-at "\\<task\\>" )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4407 (forward-word 1)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4408 (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
4409 (looking-at "\\<body\\>")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4410 (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
4411 'word-search-forward))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4412 ;; accept block start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4413 ((save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4414 (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
4415 (looking-at "\\<accept\\>" )))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4416 (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
4417 ;; package start
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4418 ((save-excursion
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4419 (setq decl-start (and (ada-goto-matching-decl-start t) (point)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4420 (and decl-start (looking-at "\\<package\\>")))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4421 (ada-goto-matching-end 1))
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4422
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4423 ;; On a "declare" keyword
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4424 ((save-excursion
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4425 (skip-syntax-backward "w")
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4426 (looking-at "\\<declare\\>"))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4427 (ada-goto-matching-end 0 t))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
4428
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4429 ;; inside a 'begin' ... 'end' block
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4430 (decl-start
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4431 (goto-char decl-start)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4432 (ada-goto-matching-end 0 t))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
4433
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4434 ;; (hopefully ;-) everything else
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4435 (t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4436 (ada-goto-matching-end 1)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4437 (setq pos (point))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4438 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4439
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4440 ;; now really move to the position found
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4441 (goto-char pos))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4442
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4443 ;; restore syntax-table
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4444 (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
4445
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4446 (defun ada-next-procedure ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4447 "Moves point to next procedure."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4448 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4449 (end-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4450 (if (re-search-forward ada-procedure-start-regexp nil t)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4451 (goto-char (match-beginning 2))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4452 (error "No more functions/procedures/tasks")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4453
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4454 (defun ada-previous-procedure ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4455 "Moves point to previous procedure."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4456 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4457 (beginning-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4458 (if (re-search-backward ada-procedure-start-regexp nil t)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4459 (goto-char (match-beginning 2))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4460 (error "No more functions/procedures/tasks")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4461
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4462 (defun ada-next-package ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4463 "Moves point to next package."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4464 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4465 (end-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4466 (if (re-search-forward ada-package-start-regexp nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4467 (goto-char (match-beginning 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4468 (error "No more packages")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4469
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4470 (defun ada-previous-package ()
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4471 "Moves point to previous package."
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4472 (interactive)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4473 (beginning-of-line)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4474 (if (re-search-backward ada-package-start-regexp nil t)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4475 (goto-char (match-beginning 1))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4476 (error "No more packages")))
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4477
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4478
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4479 ;; ------------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4480 ;; -- Define keymap and menus for Ada
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4481 ;; -------------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4482
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4483 (defun ada-create-keymap ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4484 "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
4485
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4486 ;; Indentation and Formatting
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4487 (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
4488 (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
4489 (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
4490 (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
4491 (define-key ada-mode-map "\C-c\C-l" 'ada-indent-region)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4492 (if ada-xemacs
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4493 (define-key ada-mode-map '(shift tab) 'ada-untab)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4494 (define-key ada-mode-map [(shift tab)] 'ada-untab))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4495 (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
4496 ;; 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
4497
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4498 ;; Movement
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4499 (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
4500 (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
4501 (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
4502 (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
4503
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4504 ;; Compilation
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4505 (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
4506 (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
4507
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4508 ;; Casing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4509 (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
4510 (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
4511 (define-key ada-mode-map "\C-c\C-y" 'ada-create-case-exception)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4512 (define-key ada-mode-map "\C-c\C-\M-y" 'ada-create-case-exception-substring)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4513
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4514 ;; 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
4515 ;; 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
4516 ;; account
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4517 (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
4518 (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
4519 (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
4520
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4521 ;; Make body
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4522 (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
4523
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4524 ;; 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
4525 (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
4526 (define-key ada-mode-map "\C-c:" 'ada-uncomment-region)
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4527
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4528 ;; The following keys are bound to functions defined in ada-xref.el or
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4529 ;; ada-prj,el., However, RMS rightly thinks that the code should be shared,
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4530 ;; and activated only if the right compiler is used
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4531 (if ada-xemacs
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4532 (progn
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4533 (define-key ada-mode-map '(shift button3) 'ada-point-and-xref)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4534 (define-key ada-mode-map '(control tab) 'ada-complete-identifier))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4535 (define-key ada-mode-map [C-tab] 'ada-complete-identifier)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4536 (define-key ada-mode-map [S-mouse-3] 'ada-point-and-xref))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4537
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4538 (define-key ada-mode-map "\C-co" 'ff-find-other-file)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4539 (define-key ada-mode-map "\C-c5\C-d" 'ada-goto-declaration-other-frame)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4540 (define-key ada-mode-map "\C-c\C-d" 'ada-goto-declaration)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4541 (define-key ada-mode-map "\C-c\C-s" 'ada-xref-goto-previous-reference)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4542 (define-key ada-mode-map "\C-c\C-c" 'ada-compile-application)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4543 (define-key ada-mode-map "\C-cc" 'ada-change-prj)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4544 (define-key ada-mode-map "\C-cd" 'ada-set-default-project-file)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4545 (define-key ada-mode-map "\C-cg" 'ada-gdb-application)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4546 (define-key ada-mode-map "\C-cr" 'ada-run-application)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4547 (define-key ada-mode-map "\C-c\C-o" 'ada-goto-parent)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4548 (define-key ada-mode-map "\C-c\C-r" 'ada-find-references)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4549 (define-key ada-mode-map "\C-cl" 'ada-find-local-references)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4550 (define-key ada-mode-map "\C-c\C-v" 'ada-check-current)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4551 (define-key ada-mode-map "\C-cf" 'ada-find-file)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4552
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4553 (define-key ada-mode-map "\C-cu" 'ada-prj-edit)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4554
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4555 ;; The templates, defined in ada-stmt.el
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4556
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4557 (let ((map (make-sparse-keymap)))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4558 (define-key map "h" 'ada-header)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4559 (define-key map "\C-a" 'ada-array)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4560 (define-key map "b" 'ada-exception-block)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4561 (define-key map "d" 'ada-declare-block)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4562 (define-key map "c" 'ada-case)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4563 (define-key map "\C-e" 'ada-elsif)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4564 (define-key map "e" 'ada-else)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4565 (define-key map "\C-k" 'ada-package-spec)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4566 (define-key map "k" 'ada-package-body)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4567 (define-key map "\C-p" 'ada-procedure-spec)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4568 (define-key map "p" 'ada-subprogram-body)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4569 (define-key map "\C-f" 'ada-function-spec)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4570 (define-key map "f" 'ada-for-loop)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4571 (define-key map "i" 'ada-if)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4572 (define-key map "l" 'ada-loop)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4573 (define-key map "\C-r" 'ada-record)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4574 (define-key map "\C-s" 'ada-subtype)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4575 (define-key map "S" 'ada-tabsize)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4576 (define-key map "\C-t" 'ada-task-spec)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4577 (define-key map "t" 'ada-task-body)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4578 (define-key map "\C-y" 'ada-type)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4579 (define-key map "\C-v" 'ada-private)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4580 (define-key map "u" 'ada-use)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4581 (define-key map "\C-u" 'ada-with)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4582 (define-key map "\C-w" 'ada-when)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4583 (define-key map "w" 'ada-while-loop)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4584 (define-key map "\C-x" 'ada-exception)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4585 (define-key map "x" 'ada-exit)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4586 (define-key ada-mode-map "\C-ct" map))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4587 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4588
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4589
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4590 (defun ada-create-menu ()
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4591 "Create the ada menu as shown in the menu bar."
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4592 (let ((m '("Ada"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4593 ("Help"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4594 ["Ada Mode" (info "ada-mode") t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4595 ["GNAT User's Guide" (info "gnat_ugn")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4596 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4597 ["GNAT Reference Manual" (info "gnat_rm")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4598 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4599 ["Gcc Documentation" (info "gcc")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4600 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4601 ["Gdb Documentation" (info "gdb")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4602 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4603 ["Ada95 Reference Manual" (info "arm95")
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4604 (eq ada-which-compiler 'gnat)])
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4605 ("Options" :included (eq major-mode 'ada-mode)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4606 ["Auto Casing" (setq ada-auto-case (not ada-auto-case))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4607 :style toggle :selected ada-auto-case]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4608 ["Auto Indent After Return"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4609 (setq ada-indent-after-return (not ada-indent-after-return))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4610 :style toggle :selected ada-indent-after-return]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4611 ["Automatically Recompile For Cross-references"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4612 (setq ada-xref-create-ali (not ada-xref-create-ali))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4613 :style toggle :selected ada-xref-create-ali
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4614 :included (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4615 ["Confirm Commands"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4616 (setq ada-xref-confirm-compile (not ada-xref-confirm-compile))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4617 :style toggle :selected ada-xref-confirm-compile
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4618 :included (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4619 ["Show Cross-references In Other Buffer"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4620 (setq ada-xref-other-buffer (not ada-xref-other-buffer))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4621 :style toggle :selected ada-xref-other-buffer
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4622 :included (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4623 ["Tight Integration With GNU Visual Debugger"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4624 (setq ada-tight-gvd-integration (not ada-tight-gvd-integration))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4625 :style toggle :selected ada-tight-gvd-integration
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4626 :included (string-match "gvd" ada-prj-default-debugger)])
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4627 ["Customize" (customize-group 'ada)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4628 :included (fboundp 'customize-group)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4629 ["Check file" ada-check-current (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4630 ["Compile file" ada-compile-current (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4631 ["Build" ada-compile-application
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4632 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4633 ["Run" ada-run-application t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4634 ["Debug" ada-gdb-application (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4635 ["------" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4636 ("Project"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4637 :included (eq ada-which-compiler 'gnat)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4638 ["Load..." ada-set-default-project-file t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4639 ["New..." ada-prj-new t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4640 ["Edit..." ada-prj-edit t])
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4641 ("Goto" :included (eq major-mode 'ada-mode)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4642 ["Goto Declaration/Body" ada-goto-declaration
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4643 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4644 ["Goto Body" ada-goto-body
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4645 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4646 ["Goto Declaration Other Frame"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4647 ada-goto-declaration-other-frame
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4648 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4649 ["Goto Previous Reference" ada-xref-goto-previous-reference
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4650 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4651 ["List Local References" ada-find-local-references
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4652 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4653 ["List References" ada-find-references
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4654 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4655 ["Goto Reference To Any Entity" ada-find-any-references
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4656 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4657 ["Goto Parent Unit" ada-goto-parent
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4658 (eq ada-which-compiler 'gnat)]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4659 ["--" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4660 ["Next compilation error" next-error t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4661 ["Previous Package" ada-previous-package t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4662 ["Next Package" ada-next-package t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4663 ["Previous Procedure" ada-previous-procedure t]
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4664 ["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
4665 ["Goto Start Of Statement" ada-move-to-start t]
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4666 ["Goto End Of Statement" ada-move-to-end t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4667 ["-" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4668 ["Other File" ff-find-other-file t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4669 ["Other File Other Window" ada-ff-other-window t])
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4670 ("Edit" :included (eq major-mode 'ada-mode)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4671 ["Search File On Source Path" ada-find-file t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4672 ["------" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4673 ["Complete Identifier" ada-complete-identifier t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4674 ["-----" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4675 ["Indent Line" ada-indent-current-function t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4676 ["Justify Current Indentation" ada-justified-indent-current t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4677 ["Indent Lines in Selection" ada-indent-region t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4678 ["Indent Lines in File"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4679 (ada-indent-region (point-min) (point-max)) t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4680 ["Format Parameter List" ada-format-paramlist t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4681 ["-" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4682 ["Comment Selection" comment-region t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4683 ["Uncomment Selection" ada-uncomment-region t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4684 ["--" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4685 ["Fill Comment Paragraph" fill-paragraph t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4686 ["Fill Comment Paragraph Justify"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4687 ada-fill-comment-paragraph-justify t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4688 ["Fill Comment Paragraph Postfix"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4689 ada-fill-comment-paragraph-postfix t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4690 ["---" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4691 ["Adjust Case Selection" ada-adjust-case-region t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4692 ["Adjust Case in File" ada-adjust-case-buffer t]
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4693 ["Create Case Exception" ada-create-case-exception t]
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4694 ["Create Case Exception Substring"
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4695 ada-create-case-exception-substring t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4696 ["Reload Case Exceptions" ada-case-read-exceptions t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4697 ["----" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4698 ["Make body for subprogram" ada-make-subprogram-body t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4699 ["-----" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4700 ["Narrow to subprogram" ada-narrow-to-defun t])
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4701 ("Templates"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4702 :included (eq major-mode 'ada-mode)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4703 ["Header" ada-header t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4704 ["-" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4705 ["Package Body" ada-package-body t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4706 ["Package Spec" ada-package-spec t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4707 ["Function Spec" ada-function-spec t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4708 ["Procedure Spec" ada-procedure-spec t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4709 ["Proc/func Body" ada-subprogram-body t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4710 ["Task Body" ada-task-body t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4711 ["Task Spec" ada-task-spec t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4712 ["Declare Block" ada-declare-block t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4713 ["Exception Block" ada-exception-block t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4714 ["--" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4715 ["Entry" ada-entry t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4716 ["Entry family" ada-entry-family t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4717 ["Select" ada-select t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4718 ["Accept" ada-accept t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4719 ["Or accept" ada-or-accep t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4720 ["Or delay" ada-or-delay t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4721 ["Or terminate" ada-or-terminate t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4722 ["---" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4723 ["Type" ada-type t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4724 ["Private" ada-private t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4725 ["Subtype" ada-subtype t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4726 ["Record" ada-record t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4727 ["Array" ada-array t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4728 ["----" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4729 ["If" ada-if t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4730 ["Else" ada-else t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4731 ["Elsif" ada-elsif t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4732 ["Case" ada-case t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4733 ["-----" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4734 ["While Loop" ada-while-loop t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4735 ["For Loop" ada-for-loop t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4736 ["Loop" ada-loop t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4737 ["------" nil nil]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4738 ["Exception" ada-exception t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4739 ["Exit" ada-exit t]
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4740 ["When" ada-when t])
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4741 )))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4742
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4743 ; (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
4744 (easy-menu-define ada-mode-menu ada-mode-map "Menu keymap for Ada mode" m)
38446
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
4745 (easy-menu-add ada-mode-menu ada-mode-map)
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
4746 (when ada-xemacs
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
4747 ;; This looks bogus to me! -stef
f63fbebe03fb (ada-mode): Avoid unneeded version checks.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38422
diff changeset
4748 (define-key ada-mode-map [menu-bar] ada-mode-menu)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4749 (set 'mode-popup-menu (cons "Ada mode" ada-mode-menu)))))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4750
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4751
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4752 ;; -------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4753 ;; Commenting/Uncommenting code
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4754 ;; 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
4755 ;; 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
4756 ;; 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
4757 ;; 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
4758 ;;
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4759 ;; 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
4760 ;; function for justifying the comments.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4761 ;; -------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4762
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4763 (defadvice comment-region (before ada-uncomment-anywhere disable)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4764 (if (and arg
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4765 (listp arg) ;; a prefix with \C-u is of the form '(4), whereas
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4766 ;; \C-u 2 sets arg to '2' (fixed by S.Leake)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4767 (string= mode-name "Ada"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4768 (save-excursion
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4769 (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
4770 (goto-char beg)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4771 (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
4772 (replace-match comment-start))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4773 ))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4774
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4775 (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
4776 "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
4777 (interactive "r\nP")
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4778
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4779 ;; 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
4780 ;; versions, as well as for XEmacs, we still need to enable it.
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
4781 (if (or (<= emacs-major-version 20) ada-xemacs)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4782 (progn
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4783 (ad-activate 'comment-region)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4784 (comment-region beg end (- (or arg 2)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4785 (ad-deactivate 'comment-region))
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4786 (comment-region beg end (list (- (or arg 2))))
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4787 (ada-indent-region beg end)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4788
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4789 (defun ada-fill-comment-paragraph-justify ()
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4790 "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
4791 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4792 (ada-fill-comment-paragraph 'full))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4793
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4794 (defun ada-fill-comment-paragraph-postfix ()
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4795 "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
4796 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
4797 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4798 (ada-fill-comment-paragraph 'full t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4799
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4800 (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
4801 "Fills the current comment paragraph.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4802 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
4803 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
4804 to each filled and justified line.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4805 The paragraph is indented on the first line."
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4806 (interactive "P")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4807
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4808 ;; 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
4809 (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
4810 (not (looking-at "[ \t]*--")))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4811 (error "not inside comment"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4812
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4813 (let* (indent from to
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4814 (opos (point-marker))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4815
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4816 ;; 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
4817 ;; 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
4818 (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
4819
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4820 fill-prefix
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4821 (fill-column (current-fill-column)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4822
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4823 ;; Find end of paragraph
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4824 (back-to-indentation)
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4825 (while (and (not (eobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4826 (forward-line 1)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4827
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4828 ;; 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
4829 ;; line at the end of the buffer.
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4830 (if (eobp)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4831 (insert "\n")
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4832 (back-to-indentation)))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4833 (beginning-of-line)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4834 (setq to (point-marker))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4835 (goto-char opos)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4836
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4837 ;; Find beginning of paragraph
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4838 (back-to-indentation)
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4839 (while (and (not (bobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4840 (forward-line -1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4841 (back-to-indentation))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4842
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
4843 ;; We want one line above the first one, unless we are at the beginning
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4844 ;; of the buffer
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4845 (unless (bobp)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4846 (forward-line 1))
41036
aaa6f44a1b96 (ada-fill-comment-prefix): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 41012
diff changeset
4847 (beginning-of-line)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4848 (setq from (point-marker))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4849
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4850 ;; 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
4851 (back-to-indentation)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4852 (setq indent (current-column))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4853 ;; 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
4854 (delete-region from (point))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4855
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4856 ;; Remove the old postfixes
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4857 (goto-char from)
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4858 (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
4859 (replace-match "\n"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4860
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4861 (goto-char (1- to))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4862 (setq to (point-marker))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4863
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4864 ;; Indent and justify the paragraph
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4865 (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
4866 (set-left-margin from to indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4867 (if postfix
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4868 (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
4869
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4870 (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
4871
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4872 ;; Add the postfixes if required
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4873 (if postfix
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4874 (save-restriction
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4875 (goto-char from)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4876 (narrow-to-region from to)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4877 (while (not (eobp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4878 (end-of-line)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4879 (insert-char ? (- fill-column (current-column)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4880 (insert ada-fill-comment-postfix)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4881 (forward-line))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4882 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4883
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4884 ;; 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
4885 ;; inserted at the end. Delete it
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4886 (if (or ada-xemacs
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4887 (<= emacs-major-version 19)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4888 (and (= emacs-major-version 20)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4889 (<= emacs-minor-version 2)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4890 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4891 (goto-char to)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4892 (end-of-line)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4893 (delete-char 1)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4894
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4895 (goto-char opos)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4896
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4897
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4898 ;; ---------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4899 ;; support for find-file.el
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4900 ;; 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
4901 ;; 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
4902 ;; file (body or spec).
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4903 ;; 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
4904 ;; cursor at the correct position.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4905 ;; 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
4906 ;; 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
4907 ;; 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
4908 ;; GNAT.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4909 ;; ---------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4910
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
4911 ;; Overriden when we work with GNAT, to use gnatkrunch
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4912 (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
4913 "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
4914 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
4915 (while (string-match "\\." adaname)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4916 (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
4917 (downcase adaname)
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4918 )
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4919
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4920 (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
4921 "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
4922 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
4923 otherwise."
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4924
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4925 (let ((is-spec nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4926 (is-body nil)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4927 (suffixes ada-spec-suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4928 (name (buffer-file-name)))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4929
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4930 ;; 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
4931 ;; 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
4932 ;; file-name-extension
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4933 (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
4934 suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4935 (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
4936 (setq is-spec t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4937 name (match-string 1 name)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4938 (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
4939
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4940 (if (not is-spec)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4941 (progn
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4942 (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
4943 (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
4944 suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4945 (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
4946 (setq is-body t
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4947 name (match-string 1 name)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4948 (setq suffixes (cdr suffixes)))))
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
4949
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4950 ;; 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
4951 (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
4952 name
33786
9f63b158eb6b * simple.el (delete-trailing-whitespace): New interactive function.
Sam Steingold <sds@gnu.org>
parents: 33716
diff changeset
4953
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4954 ;; 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
4955 (if is-spec
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4956 (setq suffixes ada-body-suffixes)
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4957 (setq suffixes ada-spec-suffixes))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4958 (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
4959
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4960 (while suffixes
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4961
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4962 ;; If we are using project file, search for the other file in all
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4963 ;; the possible src directories.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
4964
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4965 (if (functionp 'ada-find-src-file-in-dir)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4966 (let ((other
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4967 (ada-find-src-file-in-dir
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4968 (file-name-nondirectory (concat name (car suffixes))))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4969 (if other
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4970 (set 'is-spec other)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4971
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4972 ;; Else search in the current directory
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4973 (if (file-exists-p (concat name (car suffixes)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
4974 (setq is-spec (concat name (car suffixes)))))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
4975 (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
4976
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4977 is-spec)))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4978
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4979 (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
4980 "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
4981 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
4982 (setq ff-function-name nil)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
4983 (save-excursion
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4984 (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
4985 (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
4986 (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
4987 (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
4988 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
4989
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4990
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4991 (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
4992 "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
4993 (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
4994 "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
4995 (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
4996 (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
4997
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4998
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
4999 (defun ada-which-function ()
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5000 "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
5001 This function works even in the case of nested subprograms, whereas the
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
5002 standard Emacs function `which-function' does not.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5003 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
5004
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
5005 (let ((line (count-lines 1 (point)))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5006 (pos (point))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5007 end-pos
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5008 func-name indent
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5009 found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5010
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5011 ;; 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
5012 (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
5013 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
5014
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5015 (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5016 ;; 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
5017 (end-of-line)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5018
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5019 ;; Are we looking at "function Foo\n (paramlist)"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5020 (skip-chars-forward " \t\n(")
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
5021
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5022 (condition-case nil
45931
a4c8d672ccbe * progmodes/ada-mode.el: Update copyright notice.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44933
diff changeset
5023 (up-list 1)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5024 (error nil))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5025
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5026 (skip-chars-forward " \t\n")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5027 (if (looking-at "return")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5028 (progn
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5029 (forward-word 1)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5030 (skip-chars-forward " \t\n")
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5031 (skip-chars-forward "a-zA-Z0-9_'")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
5032
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5033 ;; 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
5034 ;; 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
5035 (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
5036
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5037 ;; No look for the closest subprogram body that has not ended yet.
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5038 ;; Not that we expect all the bodies to be finished by "end <name>",
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5039 ;; or a simple "end;" indented in the same column as the start of
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5040 ;; the subprogram. The goal is to be as efficient as possible.
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5041
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5042 (while (and (not found)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5043 (re-search-backward ada-imenu-subprogram-menu-re nil t))
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5044
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5045 ;; Get the function name, but not the properties, or this changes
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5046 ;; the face in the modeline on Emacs 21
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5047 (setq func-name (match-string-no-properties 2))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5048 (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
5049 (not (save-excursion
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5050 (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
5051 (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
5052 (save-excursion
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5053 (back-to-indentation)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5054 (setq indent (current-column))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5055 (if (ada-search-ignore-string-comment
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5056 (concat "end[ \t]+" func-name "[ \t]*;\\|^"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5057 (make-string indent ? ) "end;"))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5058 (setq end-pos (point))
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5059 (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
5060 (if (>= end-pos pos)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5061 (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
5062 )
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5063 (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
5064 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
5065 found))))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5066
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5067 (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
5068 "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
5069 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5070 (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
5071 (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
5072
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5073 (defun ada-set-point-accordingly ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5074 "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
5075 `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
5076 (if ff-function-name
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5077 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5078 (goto-char (point-min))
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5079 (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
5080 (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
5081 (goto-char (point-min))))))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5082
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5083 (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
5084 "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
5085 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
5086 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
5087 (interactive)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5088
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5089 (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
5090
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5091 ;; Remove the spec extension. We can not simply remove the file extension,
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5092 ;; but we need to take into account the specific non-GNAT extensions that the
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5093 ;; user might have specified.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5094
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5095 (let ((suffixes ada-spec-suffixes)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5096 end)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5097 (while suffixes
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5098 (setq end (- (length spec-name) (length (car suffixes))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5099 (if (string-equal (car suffixes) (substring spec-name end))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5100 (setq spec-name (substring spec-name 0 end)))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5101 (setq suffixes (cdr suffixes))))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5102
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5103 ;; 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
5104 (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
5105 (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
5106 (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
5107 (file-name-nondirectory
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5108 (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
5109 ada-body-suffixes)
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5110 ;; 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
5111 (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
5112 (file-name-nondirectory
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5113 (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
5114 ".adb")))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5115
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5116
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5117 ;; ---------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5118 ;; 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
5119 ;; 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
5120 ;; 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
5121 ;; 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
5122 ;; 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
5123 ;; 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
5124 ;;
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5125 ;; 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
5126 ;; 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
5127 ;; ----------------------------------------------------
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
5128
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
5129 (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
5130 ;; 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
5131 ;; 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
5132 ;; 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
5133 ;; a string
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5134 ;; 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
5135 ;; correctly handles '"' too...
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5136 '(("[^a-zA-Z0-9)]\\('\\)[^'\n]\\('\\)" (1 (7 . ?')) (2 (7 . ?')))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5137 ("^[ \t]*\\(#\\(if\\|else\\|elsif\\|end\\)\\)" (1 (11 . ?\n)))
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5138 ))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5139
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5140 (defvar ada-font-lock-keywords
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5141 (eval-when-compile
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5142 (list
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5143 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5144 ;; 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
5145 (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
5146
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5147 ;; preprocessor line
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5148 (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
5149
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5150 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5151 ;; 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
5152 ;; pragma, procedure, task (body) plus name.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5153 (list (concat
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5154 "\\<\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5155 "accept\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5156 "entry\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5157 "function\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5158 "package[ \t]+body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5159 "package\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5160 "pragma\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5161 "procedure\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5162 "protected[ \t]+body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5163 "protected[ \t]+type\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5164 "protected\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5165 "task[ \t]+body\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5166 "task[ \t]+type\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5167 "task"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5168 "\\)\\>[ \t]*"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5169 "\\(\\sw+\\(\\.\\sw*\\)*\\)?")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5170 '(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
5171 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5172 ;; 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
5173 (list (concat ; ":[ \t]*"
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5174 "\\<\\(access[ \t]+all\\|access[ \t]+constant\\|access\\|constant\\|in[ \t]+reverse\\|\\|in[ \t]+out\\|in\\|out\\)\\>"
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5175 "[ \t]*"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5176 "\\(\\sw+\\(\\.\\sw*\\)*\\)?")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5177 '(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
5178
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5179 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5180 ;; 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
5181 (concat "\\<"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5182 (regexp-opt
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5183 '("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
5184 "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
5185 "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
5186 "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
5187 "null" "or" "others" "private" "protected" "raise"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5188 "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
5189 "select" "separate" "tagged" "task" "terminate" "then" "until"
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5190 "when" "while" "with" "xor") t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5191 "\\>")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5192 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5193 ;; 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
5194 '("\\<\\(end\\)\\>\\([ \t]+\\)?\\(\\(\\sw\\|[_.]\\)+\\)?"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5195 (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
5196 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5197 ;; 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
5198 (list (concat "\\<\\("
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5199 "new\\|of\\|subtype\\|type"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5200 "\\)\\>[ \t]*\\(\\sw+\\(\\.\\sw*\\)*\\)?[ \t]*\\((\\)?")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5201 '(1 font-lock-keyword-face)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5202 '(2 (if (match-beginning 4)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5203 font-lock-function-name-face
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5204 font-lock-type-face) nil t))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5205 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5206 ;; Keywords followed by a (comma separated list of) reference.
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5207 ;; Note that font-lock only works on single lines, thus we can not
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5208 ;; correctly highlight a with_clause that spans multiple lines.
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5209 (list (concat "\\<\\(goto\\|raise\\|use\\|with\\)"
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5210 "[ \t]+\\([a-zA-Z0-9_., \t]+\\)\\W")
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5211 '(1 font-lock-keyword-face) '(2 font-lock-reference-face nil t))
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5212
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5213 ;;
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5214 ;; Goto tags.
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5215 '("<<\\(\\sw+\\)>>" 1 font-lock-reference-face)
44465
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5216
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5217 ;; Highlight based-numbers (R. Reagan <robin-reply@reagans.org>)
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5218 (list "\\([0-9]+#[0-9a-fA-F_]+#\\)" '(1 font-lock-constant-face t))
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5219
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5220 ;; Ada unnamed numerical constants
0a0f75d152df (ada-case-exception-file, ada-indent-handle-comment-special): New variables.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 42619
diff changeset
5221 (list "\\W\\([-+]?[0-9._]+\\)\\>" '(1 font-lock-constant-face))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 45931
diff changeset
5222
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5223 ))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
5224 "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
5225
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5226
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5227 ;; ---------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5228 ;; Support for outline.el
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5229 ;; ---------------------------------------------------------
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5230
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
5231 (defun ada-outline-level ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5232 "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
5233 ;; 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
5234 (let (buffer-invisibility-spec)
25556de3fe49 (ada-outline-level): Bind buffer-invisibility-spec.
Dave Love <fx@gnu.org>
parents: 24325
diff changeset
5235 (save-excursion
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5236 (back-to-indentation)
24446
25556de3fe49 (ada-outline-level): Bind buffer-invisibility-spec.
Dave Love <fx@gnu.org>
parents: 24325
diff changeset
5237 (current-column))))
17914
e5e2ef0dd5ab (ada-krunch-args): Use gnatkr instead of gnatk8.
Richard M. Stallman <rms@gnu.org>
parents: 14415
diff changeset
5238
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5239 ;; ---------------------------------------------------------
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5240 ;; Support for narrow-to-region
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5241 ;; ---------------------------------------------------------
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5242
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5243 (defun ada-narrow-to-defun (&optional arg)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5244 "make text outside current subprogram invisible.
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5245 The subprogram visible is the one that contains or follow point.
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5246 Optional ARG is ignored.
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5247 Use `M-x widen' to go back to the full visibility for the buffer"
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5248
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5249 (interactive)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5250 (save-excursion
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5251 (let (end)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5252 (widen)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5253 (forward-line 1)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5254 (ada-previous-procedure)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5255
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5256 (save-excursion
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5257 (beginning-of-line)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5258 (setq end (point)))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5259
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5260 (ada-move-to-end)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5261 (end-of-line)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5262 (narrow-to-region end (point))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5263 (message
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5264 "Use M-x widen to get back to full visibility in the buffer"))))
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5265
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5266 ;; ---------------------------------------------------------
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5267 ;; Automatic generation of code
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5268 ;; 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
5269 ;; or package body from its spec.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5270 ;; 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
5271 ;; lot of improvement.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5272 ;; 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
5273 ;; body.
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5274 ;; ----------------------------------------------------------
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5275
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5276 (defun ada-gen-treat-proc (match)
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5277 "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
5278 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
5279 for ada-procedure-start-regexp."
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5280 (goto-char (car match))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5281 (let (func-found procname functype)
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5282 (cond
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5283 ((or (looking-at "^[ \t]*procedure")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5284 (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
5285 ;; treat it as a proc/func
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5286 (forward-word 2)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5287 (forward-word -1)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5288 (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
5289
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5290 ;; goto end of procname
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5291 (goto-char (cdr match))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5292
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5293 ;; skip over parameterlist
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5294 (unless (looking-at "[ \t\n]*\\(;\\|return\\)")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5295 (forward-sexp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5296
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5297 ;; 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
5298 (if func-found
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5299 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5300 (forward-word 1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5301 (skip-chars-forward " \t\n")
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5302 (setq functype (buffer-substring (point)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5303 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5304 (skip-chars-forward
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5305 "a-zA-Z0-9_\.")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5306 (point))))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5307 ;; look for next non WS
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5308 (cond
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5309 ((looking-at "[ \t]*;")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5310 (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
5311 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5312 (insert "is")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5313 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5314 (if func-found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5315 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5316 (insert "Result : " functype ";")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5317 (ada-indent-newline-indent)))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5318 (insert "begin")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5319 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5320 (if func-found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5321 (insert "return Result;")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5322 (insert "null;"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5323 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5324 (insert "end " procname ";")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5325 (ada-indent-newline-indent)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5326 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5327 ;; else
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5328 ((looking-at "[ \t\n]*is")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5329 ;; do nothing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5330 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5331 ((looking-at "[ \t\n]*rename")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5332 ;; do nothing
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5333 )
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5334 (t
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5335 (message "unknown syntax"))))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5336 (t
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5337 (if (looking-at "^[ \t]*task")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5338 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5339 (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
5340 (forward-word 2)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5341 (if (looking-at "[ \t]*;")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5342 (forward-line)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5343 (ada-move-to-end))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5344 ))))))
12039
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5345
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5346 (defun ada-make-body ()
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5347 "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
5348 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
5349 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
5350 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
5351 (interactive)
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5352 (delete-region (point-min) (point-max))
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5353 (insert-buffer (car (cdr (buffer-list))))
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5354 (ada-mode)
a75524689022 (initial comments): Copyright 1995; don't speak
Karl Heuer <kwzh@gnu.org>
parents: 11869
diff changeset
5355
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5356 (let (found ada-procedure-or-package-start-regexp)
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5357 (if (setq found
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5358 (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
5359 (progn (goto-char (cdr found))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5360 (insert " body")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5361 )
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5362 (error "No package"))
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5363
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5364 (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
5365 (concat ada-procedure-start-regexp
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5366 "\\|"
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5367 ada-package-start-regexp))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5368
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5369 (while (setq found
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5370 (ada-search-ignore-string-comment
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5371 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
5372 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5373 (goto-char (car found))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5374 (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
5375 (progn (goto-char (cdr found))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5376 (insert " body"))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5377 (ada-gen-treat-proc found))))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5378
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5379
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5380 (defun ada-make-subprogram-body ()
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5381 "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
5382 (interactive)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5383 (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
5384 (spec (match-beginning 0))
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5385 body-file)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5386 (if found
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5387 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5388 (goto-char spec)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5389 (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
5390 (= (char-before) ?\())
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5391 (progn
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5392 (ada-search-ignore-string-comment ")" nil)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5393 (ada-search-ignore-string-comment ";" nil)))
33716
c55ff055c68a (ada-mode): `set '' -> `setq'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32300
diff changeset
5394 (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
5395
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5396 ;; 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
5397 (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
5398 (if body-file
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5399 (find-file body-file)
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5400 (error "No body found for the package. Create it first."))
30411
41f228350eca Got rid of all byte-compiler warnings on Emacs Load
Gerd Moellmann <gerd@gnu.org>
parents: 28995
diff changeset
5401
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5402 (save-restriction
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5403 (widen)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5404 (goto-char (point-max))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5405 (forward-comment -10000)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5406 (re-search-backward "\\<end\\>" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5407 ;; 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
5408 (re-search-backward "^begin" nil t)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5409 (newline)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5410 (forward-char -1)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5411 (insert spec)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5412 (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
5413 (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
5414 ))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5415 (error "Not in subprogram spec"))))
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5416
26225
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5417 ;; --------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5418 ;; Global initializations
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5419 ;; --------------------------------------------------------
91cb7b3bae3c Changed format of years in copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 25903
diff changeset
5420
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5421 ;; 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
5422 ;; 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
5423 ;; every time
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5424 (ada-create-keymap)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5425 (ada-create-menu)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5426
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5427 ;; 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
5428 (ada-create-syntax-table)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5429
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5430 ;; 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
5431 (ada-add-extensions ".ads" ".adb")
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5432 ;; 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
5433 (if (equal ada-which-compiler 'gnat)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5434 (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
5435
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5436 ;; Read the special cases for exceptions
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5437 (ada-case-read-exceptions)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5438
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5439 ;; Setup auto-loading of the other ada-mode files.
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5440 (if (equal ada-which-compiler 'gnat)
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5441 (progn
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5442 (autoload 'ada-change-prj "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5443 (autoload 'ada-check-current "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5444 (autoload 'ada-compile-application "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5445 (autoload 'ada-compile-current "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5446 (autoload 'ada-complete-identifier "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5447 (autoload 'ada-find-file "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5448 (autoload 'ada-find-any-references "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5449 (autoload 'ada-find-src-file-in-dir "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5450 (autoload 'ada-find-local-references "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5451 (autoload 'ada-find-references "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5452 (autoload 'ada-gdb-application "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5453 (autoload 'ada-goto-declaration "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5454 (autoload 'ada-goto-declaration-other-frame "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5455 (autoload 'ada-goto-parent "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5456 (autoload 'ada-make-body-gnatstub "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5457 (autoload 'ada-point-and-xref "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5458 (autoload 'ada-reread-prj-file "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5459 (autoload 'ada-run-application "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5460 (autoload 'ada-set-default-project-file "ada-xref" nil nil)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5461 (autoload 'ada-set-default-project-file "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5462 (autoload 'ada-xref-goto-previous-reference "ada-xref" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5463
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5464 (autoload 'ada-customize "ada-prj" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5465 (autoload 'ada-prj-edit "ada-prj" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5466 (autoload 'ada-prj-new "ada-prj" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5467 (autoload 'ada-prj-save "ada-prj" nil t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5468 ))
50736
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5469
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5470 (autoload 'ada-array "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5471 (autoload 'ada-case "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5472 (autoload 'ada-declare-block "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5473 (autoload 'ada-else "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5474 (autoload 'ada-elsif "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5475 (autoload 'ada-exception "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5476 (autoload 'ada-exception-block "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5477 (autoload 'ada-exit "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5478 (autoload 'ada-for-loop "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5479 (autoload 'ada-function-spec "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5480 (autoload 'ada-header "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5481 (autoload 'ada-if "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5482 (autoload 'ada-loop "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5483 (autoload 'ada-package-body "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5484 (autoload 'ada-package-spec "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5485 (autoload 'ada-private "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5486 (autoload 'ada-procedure-spec "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5487 (autoload 'ada-record "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5488 (autoload 'ada-subprogram-body "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5489 (autoload 'ada-subtype "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5490 (autoload 'ada-tabsize "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5491 (autoload 'ada-task-body "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5492 (autoload 'ada-task-spec "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5493 (autoload 'ada-type "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5494 (autoload 'ada-use "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5495 (autoload 'ada-when "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5496 (autoload 'ada-while-loop "ada-stmt" nil t)
b0ce71ab9c28 (ada-search-directories): Take into account ADA_INCLUDE_PATH for better
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
5497 (autoload 'ada-with "ada-stmt" nil t)
25903
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5498
812005e9c20e (ada-get-indent-*, ada-indent-current, ada-goto-*,
Gerd Moellmann <gerd@gnu.org>
parents: 25420
diff changeset
5499 ;;; provide ourselves
10705
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5500 (provide 'ada-mode)
3d356714b662 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5501
10707
4a2ea4f52ea0 Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 10705
diff changeset
5502 ;;; ada-mode.el ends here