annotate lisp/progmodes/ada-stmt.el @ 42307:922f0ef2951b

(balance-windows): Use new PRESERVE-BEFORE arg to enlarge-window. Use save-selected-window. Don't try to resize windows that end at the bottom "level". Retry changing the sizes until the windows get the desired sizes. Discount the minibuffer when computing total height available.
author Richard M. Stallman <rms@gnu.org>
date Tue, 25 Dec 2001 10:34:39 +0000
parents 7a94f1c588c4
children e34b692b2fa9
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: 34400
diff changeset
1 ;;; ada-stmt.el --- an extension to Ada mode for inserting statement templates
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2
32301
0f1f7e931493 Fix header line, copyright notice.
Dave Love <fx@gnu.org>
parents: 30409
diff changeset
3 ;; Copyright(C) 1987, 1993, 1994, 1996, 1997, 1998, 1999
0f1f7e931493 Fix header line, copyright notice.
Dave Love <fx@gnu.org>
parents: 30409
diff changeset
4 ;; Free Software Foundation, Inc.
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
5
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34400
diff changeset
6 ;; Ada Core Technologies's version: $Revision: 1.9 $
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34400
diff changeset
7
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 34400
diff changeset
8 ;; This file is part of GNU Emacs.
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
9
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
10 ;; Authors: Daniel Pfeiffer, Markus Heritsch, Rolf Ebert <ebert@waporo.muc.de>
34400
a5fbe8c7b12d Update `maintainer'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33823
diff changeset
11 ;; Maintainer: Emmanuel Briot <briot@gnat.com>
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; Keywords: languages, ada
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13 ;; Rolf Ebert's version: 2.26
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
14
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15 ;;; Commentary:
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
16
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
17 ;;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18 ;; put the following statement in your .emacs:
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 ;; (require 'ada-stmt)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20 ;;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
22 ;;; History:
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
23
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
24 ;; Created May 1987.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
25 ;; Original version from V. Bowman as in ada.el of Emacs-18
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26 ;; (borrowed heavily from Mick Jordan's Modula-2 package for GNU,
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
27 ;; as modified by Peter Robinson, Michael Schmidt, and Tom Perrine.)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28 ;;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
29 ;; Sep 1993. Daniel Pfeiffer <pfeiffer@cict.fr> (DP)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
30 ;; Introduced statement.el for smaller code and user configurability.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
31 ;;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
32 ;; Nov 1993. Rolf Ebert <ebert@enpc.fr> (RE) Moved the
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
33 ;; skeleton generation into this separate file. The code still is
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
34 ;; essentially written by DP
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
35 ;;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
36 ;; Adapted Jun 1994. Markus Heritsch
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
37 ;; <Markus.Heritsch@studbox.uni-stuttgart.de> (MH)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
38 ;; added menu bar support for templates
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
39 ;;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
40 ;; 1994/12/02 Christian Egli <cegli@hcsd.hac.com>
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
41 ;; General cleanup and bug fixes.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
42 ;;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
43 ;; 1995/12/20 John Hutchison <hutchiso@epi.syr.ge.com>
26226
b63d041c9108 Changed format of years in copyright notices.
Gerd Moellmann <gerd@gnu.org>
parents: 26000
diff changeset
44 ;; made it work with skeleton.el from Emacs-19.30. Several
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 ;; enhancements and bug fixes.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
46
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
47 ;; BUGS:
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
48 ;;;> I have the following suggestions for the function template: 1) I
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
49 ;;;> don't want it automatically assigning it a name for the return variable. I
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
50 ;;;> never want it to be called "Result" because that is nondescriptive. If you
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51 ;;;> must define a variable, give me the ability to specify its name.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
52 ;;;>
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
53 ;;;> 2) You do not provide a type for variable 'Result'. Its type is the same
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
54 ;;;> as the function's return type, which the template knows, so why force me
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
55 ;;;> to type it in?
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
56 ;;;>
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
57
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
58 ;;;It would be nice if one could configure such layout details separately
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
59 ;;;without patching the LISP code. Maybe the metalanguage used in ada-stmt.el
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
60 ;;;could be taken even further, providing the user with some nice syntax
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
61 ;;;for describing layout. Then my own hacks would survive the next
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
62 ;;;update of the package :-)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
63
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
64
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
65 ;;; Code:
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
66
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
67 (eval-when-compile
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
68 (condition-case nil (require 'skeleton)
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
69 (error nil)))
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
70
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
71 (require 'easymenu)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
72
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
73 (defun ada-stmt-add-to-ada-menu ()
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
74 "Add a new submenu to the Ada menu."
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
75 (interactive)
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
76 (let ((menu '(["Header" ada-header t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
77 ["-" nil nil]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
78 ["Package Body" ada-package-body t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
79 ["Package Spec" ada-package-spec t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
80 ["Function Spec" ada-function-spec t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
81 ["Procedure Spec" ada-procedure-spec t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
82 ["Proc/func Body" ada-subprogram-body t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
83 ["Task Body" ada-task-body t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
84 ["Task Spec" ada-task-spec t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
85 ["Declare Block" ada-declare-block t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
86 ["Exception Block" ada-exception-block t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
87 ["--" nil nil]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
88 ["Entry" ada-entry t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
89 ["Entry family" ada-entry-family t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
90 ["Select" ada-select t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
91 ["Accept" ada-accept t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
92 ["Or accept" ada-or-accep t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
93 ["Or delay" ada-or-delay t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
94 ["Or terminate" ada-or-terminate t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
95 ["---" nil nil]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
96 ["Type" ada-type t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
97 ["Private" ada-private t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
98 ["Subtype" ada-subtype t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
99 ["Record" ada-record t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
100 ["Array" ada-array t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
101 ["----" nil nil]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
102 ["If" ada-if t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
103 ["Else" ada-else t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
104 ["Elsif" ada-elsif t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
105 ["Case" ada-case t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
106 ["-----" nil nil]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
107 ["While Loop" ada-while-loop t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
108 ["For Loop" ada-for-loop t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
109 ["Loop" ada-loop t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
110 ["------" nil nil]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
111 ["Exception" ada-exception t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
112 ["Exit" ada-exit t]
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
113 ["When" ada-when t])))
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
114 (if ada-xemacs
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
115 (funcall (symbol-function 'add-submenu)
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
116 '("Ada") (append (list "Statements"
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
117 :included '(string= mode-name "Ada"))
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
118 menu))
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
119
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
120 (define-key-after (lookup-key ada-mode-map [menu-bar Ada]) [Statements]
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
121 (list 'menu-item
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
122 "Statements"
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
123 (easy-menu-create-menu "Statements" menu)
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
124 :visible '(string= mode-name "Ada"))
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
125 t))))
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
126
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
127
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
128
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
129
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
130 (defun ada-func-or-proc-name ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
131 ;; Get the name of the current function or procedure."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
132 (save-excursion
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
133 (let ((case-fold-search t))
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
134 (if (re-search-backward ada-procedure-start-regexp nil t)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
135 (buffer-substring (match-beginning 2) (match-end 2))
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
136 "NAME?"))))
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
137
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
138 (defvar ada-template-map
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
139 (let ((map (make-sparse-keymap)))
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
140 (define-key map "h" 'ada-header)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
141 (define-key map "\C-a" 'ada-array)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
142 (define-key map "b" 'ada-exception-block)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
143 (define-key map "d" 'ada-declare-block)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
144 (define-key map "c" 'ada-case)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
145 (define-key map "\C-e" 'ada-elsif)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
146 (define-key map "e" 'ada-else)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
147 (define-key map "\C-k" 'ada-package-spec)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
148 (define-key map "k" 'ada-package-body)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
149 (define-key map "\C-p" 'ada-procedure-spec)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
150 (define-key map "p" 'ada-subprogram-body)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
151 (define-key map "\C-f" 'ada-function-spec)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
152 (define-key map "f" 'ada-for-loop)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
153 (define-key map "i" 'ada-if)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
154 (define-key map "l" 'ada-loop)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
155 (define-key map "\C-r" 'ada-record)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
156 (define-key map "\C-s" 'ada-subtype)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
157 (define-key map "S" 'ada-tabsize)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
158 (define-key map "\C-t" 'ada-task-spec)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
159 (define-key map "t" 'ada-task-body)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
160 (define-key map "\C-y" 'ada-type)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
161 (define-key map "\C-v" 'ada-private)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
162 (define-key map "u" 'ada-use)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
163 (define-key map "\C-u" 'ada-with)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
164 (define-key map "\C-w" 'ada-when)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
165 (define-key map "w" 'ada-while-loop)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
166 (define-key map "\C-x" 'ada-exception)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
167 (define-key map "x" 'ada-exit)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
168 map)
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
169 "Keymap used in Ada mode for smart template operations.")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
170
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
171 (define-key ada-mode-map "\C-ct" ada-template-map)
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
172
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
173 ;;; ---- statement skeletons ------------------------------------------
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
174
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
175 (define-skeleton ada-array
26000
c9e91fc553e6 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25902
diff changeset
176 "Insert array type definition.
26226
b63d041c9108 Changed format of years in copyright notices.
Gerd Moellmann <gerd@gnu.org>
parents: 26000
diff changeset
177 Prompt for component type and index subtypes."
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
178 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
179 "array (" ("index definition: " str ", " ) -2 ") of " _ ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
180
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
181
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
182 (define-skeleton ada-case
26000
c9e91fc553e6 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25902
diff changeset
183 "Build skeleton case statement.
c9e91fc553e6 Doc-string fixes.
Gerd Moellmann <gerd@gnu.org>
parents: 25902
diff changeset
184 Prompt for the selector expression. Also builds the first when clause."
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
185 "[selector expression]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
186 "case " str " is" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
187 > "when " ("discrete choice: " str " | ") -3 " =>" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
188 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
189 < < "end case;")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
190
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
191
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192 (define-skeleton ada-when
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
193 "Start a case statement alternative with a when clause."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
194 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
195 < "when " ("discrete choice: " str " | ") -3 " =>" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
196 >)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
197
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
198
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
199 (define-skeleton ada-declare-block
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
200 "Insert a block with a declare part.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
201 Indent for the first declaration."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
202 "[block name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
203 < str & ?: & \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
204 > "declare" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
205 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
206 < "begin" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
207 > \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
208 < "end " str | -1 ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
209
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
210
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
211 (define-skeleton ada-exception-block
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
212 "Insert a block with an exception part.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
213 Indent for the first line of code."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
214 "[block name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
215 < str & ?: & \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
216 > "begin" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
217 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
218 < "exception" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
219 > \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
220 < "end " str | -1 ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
221
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
222
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
223 (define-skeleton ada-exception
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
224 "Insert an indented exception part into a block."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
225 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
226 < "exception" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
227 >)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
228
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
229
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
230 (define-skeleton ada-exit-1
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
231 "Insert then exit condition of the exit statement, prompting for condition."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
232 "[exit condition]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
233 "when " str | -5)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
234
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
235
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
236 (define-skeleton ada-exit
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
237 "Insert an exit statement, prompting for loop name and condition."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
238 "[name of loop to exit]: "
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
239 "exit " str & ?\ (ada-exit-1) | -1 ?\;)
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
240
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
241 ;;;###autoload
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
242 (defun ada-header ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
243 "Insert a descriptive header at the top of the file."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
244 (interactive "*")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
245 (save-excursion
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
246 (goto-char (point-min))
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
247 (if (fboundp 'make-header)
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
248 (funcall (symbol-function 'make-header))
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
249 (ada-header-tmpl))))
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
250
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
251
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
252 (define-skeleton ada-header-tmpl
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
253 "Insert a comment block containing the module title, author, etc."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
254 "[Description]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
255 "-- -*- Mode: Ada -*-"
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
256 "\n" ada-fill-comment-prefix "Filename : " (buffer-name)
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
257 "\n" ada-fill-comment-prefix "Description : " str
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
258 "\n" ada-fill-comment-prefix "Author : " (user-full-name)
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
259 "\n" ada-fill-comment-prefix "Created On : " (current-time-string)
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
260 "\n" ada-fill-comment-prefix "Last Modified By: ."
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
261 "\n" ada-fill-comment-prefix "Last Modified On: ."
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
262 "\n" ada-fill-comment-prefix "Update Count : 0"
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
263 "\n" ada-fill-comment-prefix "Status : Unknown, Use with caution!"
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
264 "\n")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
265
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
266
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
267 (define-skeleton ada-display-comment
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
268 "Inserts three comment lines, making a display comment."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
269 ()
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
270 "--\n" ada-fill-comment-prefix _ "\n--")
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
271
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
272
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273 (define-skeleton ada-if
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
274 "Insert skeleton if statment, prompting for a boolean-expression."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
275 "[condition]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
276 "if " str " then" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
277 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
278 < "end if;")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
279
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
280
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
281 (define-skeleton ada-elsif
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
282 "Add an elsif clause to an if statement,
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
283 prompting for the boolean-expression."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
284 "[condition]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
285 < "elsif " str " then" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
286 >)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
287
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
288
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
289 (define-skeleton ada-else
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
290 "Add an else clause inside an if-then-end-if clause."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
291 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
292 < "else" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
293 >)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
294
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
295
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
296 (define-skeleton ada-loop
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
297 "Insert a skeleton loop statement. The exit statement is added by hand."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
298 "[loop name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
299 < str & ?: & \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
300 > "loop" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
301 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
302 < "end loop " str | -1 ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
303
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
304
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
305 (define-skeleton ada-for-loop-prompt-variable
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
306 "Prompt for the loop variable."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
307 "[loop variable]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
308 str)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
309
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
310
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
311 (define-skeleton ada-for-loop-prompt-range
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
312 "Prompt for the loop range."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
313 "[loop range]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
314 str)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
315
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
316
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
317 (define-skeleton ada-for-loop
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
318 "Build a skeleton for-loop statement, prompting for the loop parameters."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
319 "[loop name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
320 < str & ?: & \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
321 > "for "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
322 (ada-for-loop-prompt-variable)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
323 " in "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
324 (ada-for-loop-prompt-range)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
325 " loop" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
326 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
327 < "end loop " str | -1 ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
328
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
329
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
330 (define-skeleton ada-while-loop-prompt-entry-condition
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
331 "Prompt for the loop entry condition."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
332 "[entry condition]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
333 str)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
334
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
335
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
336 (define-skeleton ada-while-loop
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
337 "Insert a skeleton while loop statement."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
338 "[loop name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
339 < str & ?: & \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
340 > "while "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
341 (ada-while-loop-prompt-entry-condition)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
342 " loop" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
343 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
344 < "end loop " str | -1 ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
345
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
346
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
347 (define-skeleton ada-package-spec
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
348 "Insert a skeleton package specification."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
349 "[package name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
350 "package " str " is" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
351 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
352 < "end " str ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
353
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
354
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
355 (define-skeleton ada-package-body
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
356 "Insert a skeleton package body -- includes a begin statement."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
357 "[package name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
358 "package body " str " is" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
359 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
360 ; < "begin" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
361 < "end " str ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
362
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
363
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
364 (define-skeleton ada-private
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
365 "Undent and start a private section of a package spec. Reindent."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
366 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
367 < "private" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
368 >)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
369
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
370
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
371 (define-skeleton ada-function-spec-prompt-return
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
372 "Prompts for function result type."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
373 "[result type]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
374 str)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
375
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
376
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
377 (define-skeleton ada-function-spec
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
378 "Insert a function specification. Prompts for name and arguments."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
379 "[function name]: "
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
380 "function " str
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
381 " (" ("[parameter_specification]: " str "; " ) -2 ")"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
382 " return "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
383 (ada-function-spec-prompt-return)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
384 ";" \n )
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
385
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
386
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
387 (define-skeleton ada-procedure-spec
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
388 "Insert a procedure specification, prompting for its name and arguments."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
389 "[procedure name]: "
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
390 "procedure " str
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
391 " (" ("[parameter_specification]: " str "; " ) -2 ")"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
392 ";" \n )
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
393
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
394
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
395 (define-skeleton ada-subprogram-body
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
396 "Insert frame for subprogram body.
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
397 Invoke right after `ada-function-spec' or `ada-procedure-spec'."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
398 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
399 ;; Remove `;' from subprogram decl
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
400 (save-excursion
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
401 (let ((pos (1+ (point))))
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
402 (ada-search-ignore-string-comment ada-subprog-start-re t nil)
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
403 (when (ada-search-ignore-string-comment "(" nil pos t 'search-forward)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
404 (backward-char 1)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
405 (forward-sexp 1)))
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
406 (if (looking-at ";")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
407 (delete-char 1)))
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
408 " is" \n
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
409 _ \n
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
410 < "begin" \n
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
411 \n
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
412 < "exception" \n
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
413 "when others => null;" \n
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
414 < < "end "
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
415 (ada-func-or-proc-name)
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
416 ";" \n)
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
417
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
418
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
419 (define-skeleton ada-separate
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
420 "Finish a body stub with `separate'."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
421 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
422 > "separate;" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
423 <)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
424
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
425
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
426 ;(define-skeleton ada-with
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
427 ; "Inserts a with clause, prompting for the list of units depended upon."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
428 ; "[list of units depended upon]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
429 ; "with " str ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
430
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
431 ;(define-skeleton ada-use
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
432 ; "Inserts a use clause, prompting for the list of packages used."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
433 ; "[list of packages used]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
434 ; "use " str ?\;)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
435
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
436
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
437 (define-skeleton ada-record
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
438 "Insert a skeleton record type declaration."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
439 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
440 "record" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
441 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
442 < "end record;")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
443
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
444
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
445 (define-skeleton ada-subtype
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
446 "Start insertion of a subtype declaration, prompting for the subtype name."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
447 "[subtype name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
448 "subtype " str " is " _ ?\;
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
449 (not (message "insert subtype indication.")))
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
450
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
451
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
452 (define-skeleton ada-type
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
453 "Start insertion of a type declaration, prompting for the type name."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
454 "[type name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
455 "type " str ?\(
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
456 ("[discriminant specs]: " str " ")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
457 | (backward-delete-char 1) | ?\)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
458 " is "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
459 (not (message "insert type definition.")))
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
460
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
461
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
462 (define-skeleton ada-task-body
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
463 "Insert a task body, prompting for the task name."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
464 "[task name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
465 "task body " str " is\n"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
466 "begin\n"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
467 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
468 < "end " str ";" )
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
469
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
470
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
471 (define-skeleton ada-task-spec
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
472 "Insert a task specification, prompting for the task name."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
473 "[task name]: "
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
474 "task " str
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
475 " (" ("[discriminant]: " str "; ") ") is\n"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
476 > "entry " _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
477 <"end " str ";" )
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
478
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
479
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
480 (define-skeleton ada-get-param1
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
481 "Prompt for arguments and if any enclose them in brackets."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
482 ()
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
483 ("[parameter_specification]: " str "; " ) & -2 & ")")
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
484
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
485
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
486 (define-skeleton ada-get-param
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
487 "Prompt for arguments and if any enclose them in brackets."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
488 ()
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
489 " ("
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
490 (ada-get-param1) | -2)
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
491
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
492
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
493 (define-skeleton ada-entry
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
494 "Insert a task entry, prompting for the entry name."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
495 "[entry name]: "
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
496 "entry " str
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
497 (ada-get-param)
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
498 ";" \n)
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
499
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
500
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
501 (define-skeleton ada-entry-family-prompt-discriminant
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
502 "Insert a entry specification, prompting for the entry name."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
503 "[discriminant name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
504 str)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
505
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
506
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
507 (define-skeleton ada-entry-family
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
508 "Insert a entry specification, prompting for the entry name."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
509 "[entry name]: "
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
510 "entry " str
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
511 " (" (ada-entry-family-prompt-discriminant) ")"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
512 (ada-get-param)
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
513 ";" \n)
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
514
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
515
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
516 (define-skeleton ada-select
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
517 "Insert a select block."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
518 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
519 "select\n"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
520 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
521 < "end select;")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
522
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
523
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
524 (define-skeleton ada-accept-1
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
525 "Insert a condition statement, prompting for the condition name."
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
526 "[condition]: "
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
527 "when " str | -5 )
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
528
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
529
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
530 (define-skeleton ada-accept-2
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
531 "Insert an accept statement, prompting for the name and arguments."
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
532 "[accept name]: "
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
533 > "accept " str
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
534 (ada-get-param)
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
535 ;;; " (" ("[parameter_specification]: " str "; ") -2 ")"
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
536 " do" \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
537 > _ \n
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
538 < "end " str ";" )
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
539
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
540
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
541 (define-skeleton ada-accept
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
542 "Insert an accept statement (prompt for condition, name and arguments)."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
543 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
544 > (ada-accept-1) & " =>\n"
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
545 (ada-accept-2))
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
546
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
547
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
548 (define-skeleton ada-or-accept
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
549 "Insert an or statement, prompting for the condition name."
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
550 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
551 < "or\n"
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
552 (ada-accept))
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
553
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
554
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
555 (define-skeleton ada-or-delay
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
556 "Insert a delay statement, prompting for the delay value."
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
557 "[delay value]: "
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
558 < "or\n"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
559 > "delay " str ";")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
560
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
561
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
562 (define-skeleton ada-or-terminate
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
563 "Insert a terminate statement."
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
564 ()
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
565 < "or\n"
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
566 > "terminate;")
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
567
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
568
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
569 ;; ----
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
570 (defun ada-adjust-case-skeleton ()
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
571 "Adjust the case of the text inserted by a skeleton."
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
572 (save-excursion
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
573 (let ((aa-end (point)))
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
574 (ada-adjust-case-region
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
575 (progn (goto-char (symbol-value 'beg)) (forward-word -1) (point))
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
576 (goto-char aa-end)))))
30409
a530830f8a3d (ada-stmt-add-to-ada-menu): Hide the menu if not in
Gerd Moellmann <gerd@gnu.org>
parents: 26226
diff changeset
577
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
578 (defun ada-stmt-mode-hook ()
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
579 (set (make-local-variable 'skeleton-further-elements)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
580 '((< '(backward-delete-char-untabify
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
581 (min ada-indent (current-column))))))
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
582 (add-hook 'skeleton-end-hook
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
583 'ada-adjust-case-skeleton nil t)
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
584 (ada-stmt-add-to-ada-menu))
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
585
33823
d29063c1c480 (ada-template-map): Initialize and bind it to C-c t in ada-mode-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32301
diff changeset
586 (add-hook 'ada-mode-hook 'ada-stmt-mode-hook)
25902
92828b88cfcc (ada-stmt-add-to-ada-menu): New function
Gerd Moellmann <gerd@gnu.org>
parents: 23869
diff changeset
587
23868
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
588 (provide 'ada-stmt)
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
589
ba852f2c146b Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
590 ;;; ada-stmt.el ends here